Skip to content

Adds generated documentation and reorganizes the engine API - #11

Merged
cppcooper merged 18 commits into
engine-foundations-and-consumer-facilitiesfrom
feat-api-documentation
Oct 14, 2026
Merged

cppcooper merged 18 commits into
engine-foundations-and-consumer-facilitiesfrom
feat-api-documentation

Conversation

@cppcooper

Copy link
Copy Markdown
Owner

Adds a reproducible HTML manual and public C++ API reference, with a maintained example that walks users through setting up their first game.

  • Adds Doxygen/Sphinx generation and CMake documentation targets. Reuses compatible installed tools, with pinned, hash-checked fallbacks cached across build configurations.
  • Adds the first-game application, owned assets, and walkthrough excerpts drawn directly from its implementation.
  • Reorganizes public declarations into functional namespaces, separates asset families and rendering implementations, and updates consumers and documentation.
  • Simplifies navigation, adds file-hierarchy ancestry guides, and automatically links inline API references when they resolve uniquely.
  • Adds GitHub Actions documentation checks and downloadable HTML artifacts. Configures Read the Docs for latest from develop, an opt-in stable mirror of checked main, and selectable release tags.

The namespace and naming changes break C++ source and ABI compatibility. The migration guide documents replacements; existing include paths and CMake target names remain stable.

Linux Release builds passed for the engine, SDK, examples, optional modules, consumer/header probes, and test targets. Test binaries were compiled but not executed. Documentation generation produced 933 pages covering 187 public headers, with zero warnings and successful link checks. Automatic linking added 606 references in approximately 0.1 seconds.

Read the Docs repository integration and version activation remain deployment steps. Stable publication is disabled until CHERYL_DOCS_PUBLISH_STABLE=true.

This work builds on engine-foundations-and-consumer-facilities.

Uses the supplied schema v2 configuration with Ubuntu 24.04 and Python 3.13. Points Sphinx at docs/conf.py and reserves the requirements installation for the documentation toolchain pilot.
Prefers installed documentation tools when minimum versions, Python requirements, dependency constraints and imports are usable. Provisions a hash-locked Python toolchain and pinned Doxygen into a shared user cache only when needed, with process locks and readiness checks across CMake configurations.

Adds optional root and standalone documentation targets without configure-time installation, plus a Doxygen/Breathe/Exhale/Sphinx pilot and revision-specific repository links. Covers cache reuse, recovery, dependency selection, archives and concurrent setup with stdlib tests. Validates standalone Ninja configuration, 38 bootstrap cases and initial Linux tool provisioning; rendered pilot acceptance follows separately.
Preserves callable lookup and template parameters by documenting inherited interfaces on their declaring bases. Resolves unambiguous namespace and inherited alias references, excludes private friend and storage details, and uses standard Sphinx navigation with valid local anchors.

Clears owned XML output before extraction, captures strict Sphinx warnings, and avoids source footers for generated or built-in pages.
Demonstrates public OpenGL startup, platform-owned bindings and resource loading, retained sprite injection, selected system fonts with embedded fallback, tick-based movement and cell selection, and immutable sprite and text frame submission.

Adds an opt-in root target plus source and installed-SDK consumer entry points. Checks in self-authored two-cell artwork, indexes, materials and shaders so the example does not depend on optional or unfinished game assets.
Publishes purpose, arguments, results, retained and borrowed lifetimes, owner-thread requirements and failure behavior in Doxygen comments for startup, game hooks, bindings, loading, resource lookup, font selection, text preparation and frame submission.

Preserves the established contracts and all noncomment C++ tokens; no declarations or runtime behavior change.
Includes maintained source excerpts for startup, lifecycle, assets, fonts, simulation, rendering and cleanup, with explicit Ninja root/source/SDK setup commands and links to detailed contracts.

Documents compatible system tools, shared pinned fallback caches, independent docs-only CMake generation, and the versioned Read the Docs publishing and account setup contract. Updates entry points and build option references.
Accepts a validated Doxygen path or executable name before fallback selection, preserving system-first defaults and newer-version testing. Rejects explicit native overrides with forced pinned tooling and propagates pinning state to child generators.

Covers override validation, missing and unusable tools, installer avoidance, pinning conflicts and child environment propagation with isolated tooling checks.
Discovers Cheryl-owned engine, support and module headers across ten public roots. Preserves exact declaring owners, aliases, concepts and template constraints, adds qualifier notes, and gives namespaces case-safe identities without changing engine declarations.

Normalizes private compound and friendship visibility from Doxygen metadata and the explicit implementation namespace policy. Validates extraction scope, local navigation/assets/fragments, source Git objects and clean publication identity; publishes sanitized revision/tool metadata and source links.
…ishing

Uses one pinned generator and validator for Read the Docs and read-only Actions checks, caches shared tools by interpreter and lock identity, and retains revision-identified HTML and diagnostics. Adds the maintained first game to existing Linux and Windows module compilation.

Prepares a disabled-by-default main-to-stable mirror with separate write permissions, canonical-event and successful-check gates, stale-main detection and non-forced updates. Covers publication decisions, API failures and response ownership with mocked requests only.
Reconciles the maintainer guide with the implemented full-reference checks, declaration notes, artifact workflow, and pinned Read the Docs build. Describes the disabled stable mirror and first-publication prerequisites, including the main-push trigger and deferred historical-version coverage.

Repairs the first-game CMake excerpt boundary and makes controls, OpenGL requirements, and desktop acceptance limits explicit.
Collects header locations by exact Doxygen declaration ID and resolves generated owner pages through Exhale document filenames, including the separately generated concept pages. Adds revision-pinned declaring-source links alongside the existing build provenance footer.
Targets the exact RenderedText resolve_text signature used by the maintained example, so the reader reaches that overload instead of the separate legacy Font and string_view path.
Includes the declared vector return type in the resolve_text cross-reference target required by the Sphinx C++ domain. An isolated render against both Doxygen overloads confirms that the link selects uploaded Unicode text submission.
Replaces globbed page-title navigation with ordered, concise subject labels and separate Assets, Rendering, Resources, Runtime, Reference, Development, and Validation groups. Retains all existing guide destinations and descriptive article titles, and labels the generated API hierarchy as Symbols.

Adds section headings to memory, input, events, worker, audio, timing, failure, and diagnostics guides so their distinct topics can be discovered through the existing expandable navigation without changing the documented contracts.
Groups asset values and their supporting declarations into focused families, separates portable rendering contracts from OpenGL implementations, and scopes input protocols by purpose. Moves reusable workers, runtime services, application composition, platform adapters, memory, state, time, file and logging utilities into their owning namespaces.

Migrates engine modules, examples, consumers, fixtures, friendships and standard specializations without changing asset schemas or runtime behavior. Keeps include paths and CMake targets stable, removes exported catch-all aliases, and restores DeltaTime documentation extraction by removing its duplicate pragma.

Builds the engine, all optional Linux backends and worker providers, examples, SDK, public-header consumers and existing test/acceptance executables with Ninja using 16 jobs. Defers GoogleTest discovery and does not execute tests.
Reconciles the walkthroughs, examples and subject contracts with the new API owners and contextual names. Explains asset families, CPU recipes and retained rendering resources, neutral input protocols, reusable workers and runtime ownership. Adds namespace and migration guidance while preserving short navigation labels.

Draws vertical ancestry and branch guides in the semantic API file tree without changing its links or adding JavaScript. Updates private namespace exclusions and clock-reference handling for the reorganized reference. Preserves public named declarations and overload counts in the regenerated XML inventory.
Resolves repeated namespace identifiers through the declaring lexical scope, preserves leading global qualifiers for standard-clock member exclusions, and normalizes Doxygen virtual return-type metadata before rendering.

Selects the Unicode text overload using its exact generated declaration spelling and corrects runtime lifecycle references and StartupResult context terminology. Verifies the overload link through an isolated Sphinx rendering.
Builds one lookup from public Sphinx declarations and namespace pages, then resolves ordinary inline names, calls, template types and member assignments. Preserves displayed code and existing links, excludes examples and signatures, and leaves ambiguous or unresolved references unchanged.

Reuses extraction metadata to validate generic template owners, refreshes cached pages when the API inventory changes, and reports linking overhead in the documentation build log. Documents the authoring and overload-resolution behavior.
@cppcooper
cppcooper merged commit 966b594 into engine-foundations-and-consumer-facilities Oct 14, 2026
1 check passed
@cppcooper
cppcooper deleted the feat-api-documentation branch October 15, 2026 01:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant