Repository navigation
Conversation
Uses the started control constant from the enclosing terminal Detail namespace instead of the removed TerminalDetail namespace. This restores Debug demo builds and explicit compilation of the terminal implementation in Release. Verifies the Debug demo and Release terminal implementation builds with 16 parallel jobs.
Skips explicit font files when opening fails and filesystem status confirms the path is absent, allowing remaining preferred fonts and the embedded fallback to load. Handles the absent-byte result in installed-family discovery as well. Preserves load failures for existing unreadable, corrupt or unsupported files, invalid face indices and filesystem status errors. Updates the public API contract comments for missing-file recovery. Validation: git diff --check and source review. Builds, test changes and execution, and prose documentation maintenance remain deferred under the repository work-mode instructions.
Accepts plain family names and asset filename aliases in preferred sources. Discovers fonts recursively below configured application asset roots, defaults to assets, and resolves application matches before automatically discovered system families. Retains explicit file/face and system-only requests, ordered deduplication and the embedded fallback. Uses the selected asset root in first-game and demo, updates demo family options, and documents name matching, root configuration, source precedence and missing-file recovery in API comments and existing guides. Adds isolated regressions for named asset/system resolution, nested filename aliases, collision precedence, ordering, missing sources, invalid names and corrupt candidates. Reconciles the prior missing-file exception expectation. Validation: source review, changed-range clang-format checks, git diff --check and 78 local documentation path checks. No builds or tests were run.
Provides cheryl/cheryl.h for the complete linked public API, cheryl/engine.h for neutral Engine contracts, and module/support groups guarded by target-propagated availability definitions. Every module owns include/cheryl/modules/<name>.h; support owners expose matching cheryl/support umbrellas. Registers source components with Cheryl::Cheryl and exports the same facade in development SDKs. Preserves supplied assemblies, omits source-only terminal dependencies from SDK exports and build dependencies, and keeps granular Engine consumers neutral. Extends the module template and documentation extraction roots. Adds neutral and selected-component consumer probes, installed SDK wrapper checks and explicit CI selection for aggregate coverage. Validation: static include graph covers all 202 public headers, formatting and syntax checks pass, and compiler-free CMake configuration/export checks confirm cross-directory registration, SDK exclusion and supplied-facade preservation. No project builds or tests were run.
Adds artifact-oriented commands for documentation generation, selected libraries, SDK installation with aggregated redistributable headers, and packaged SDK archives. Distinguishes library compilation from installation and packaging. Shows source and installed SDK applications linking Cheryl::Cheryl and including cheryl/cheryl.h, explains granular module/support umbrellas and IDE include discovery, and records owner-local umbrella conventions and source-only diagnostic behavior. Validation: local documentation paths, shell block syntax and git diff --check. Documentation generation was not run.
Exports the owned HIDAPI backend selected by Gainput together with its header target, normalized public headers and license files. Translates Gainput's nested HIDAPI link alias to the installed dependency target and recreates required libudev, libusb and Iconv dependencies in the SDK package config. Imported HIDAPI remains an external package requirement. Disables documentation for Cheryl-owned GLFW in a variable scope so ordinary source configuration does not probe Doxygen. Documents that source applications can leave SDK export disabled and records HID-enabled SDK dependency requirements without changing controller runtime behavior. Validation: compiler-free CMake SDK export generation for hidraw, libusb, imported HIDAPI and HID-disabled graphs; header/license component staging; package Python and documentation shell/path syntax; git diff --check. No engine builds or runtime tests were run.
Scales documentation typography by twenty percent, including the RTD theme's fixed-size paragraphs and code blocks, and keeps navigation line heights readable through a dedicated stylesheet. Explains the first-game score label from a UTF-8 std::string through glyph selection and placement, CPU atlas images and triangles, graphics upload, and per-frame submission to the window. Defines shaping and atlas pages and clarifies the reason for separate stages, reuse and replacement. Validation: Sphinx configuration syntax, stylesheet registration and size overrides, tutorial local links/anchors/literalinclude paths, source-contract review and git diff --check. No documentation generation, project builds or tests were run.
…ases Adds project setup covering source and SDK consumption, artifact selection, public targets, and matching headers with binary configurations. Teaches startup, simulation ownership, frame publication, and resource lifetime before complete sprite and text paths. Labels maintained code excerpts by lifecycle hook and thread, preserves standalone example builds, and updates documentation navigation.
Moves the runner-specific documentation cache path from job-level env into a setup step using RUNNER_TEMP and GITHUB_ENV. Keeps the existing branch filters and documents why invalid workflows can fail before those filters apply.
Caches Doxygen extraction by input and tool identity, preserves unchanged XML and generated API timestamps, reuses compatible Sphinx output, and removes obsolete pages. Invalidates interrupted or failed runs and retains serialized generation, provenance, and complete output checks. Adds --clean and docs-clean, keeps CI and Read the Docs on clean generation, documents cache behavior, and adds isolated regression fixtures to the existing CI test discovery.
Provides an executable Bash entry point for incremental, clean and extraction-only documentation builds. Preserves caller-relative paths and forwards options through the Python generator, including pinned tools and shared cache selection. Documents shell, Python and CMake entry points and keeps the documentation artifact target lists current.
Connects factory functions, startup/parser objects, contexts, resource providers, draw packets and text stages to their exact types, calls and local variables. Clarifies CMake targets, SDK prefixes and binary compatibility while preserving maintained examples and thread/lifetime contracts.
Canonicalizes source exclusions so output directories appearing after the initial build do not invalidate every Sphinx doctree. Resolves public enumerators through their real Doxygen owner pages and anchors when cached C++ symbol lookup loses an unscoped alias. Adds isolated regression fixtures for cold-to-warm exclusions, staging directories, enum scoping, declaration visibility and missing reference destinations.
Prunes closed-pull-request caches and superseded compiler, dependency and pip snapshots after CI completion and on a daily schedule. Trims remaining caches toward an 8 GiB repository budget while protecting active and recent entries, and retaining useful default-branch snapshots until other candidates are gone. Uses trusted default-branch code with narrowly scoped Actions permissions. Provides manual dry runs and an optional confirmed-closed-PR filter, handles concurrent cache removal, and reports planned cache IDs and storage totals. Adds isolated retention and API fixtures to CI and documents the policy and manual workflow. Python syntax, workflow lint and whitespace checks passed; builds and runtime tests were not run.
Release HTTP response streams during missing-cache and missing-pull-request handling while retaining the status needed for sanitized diagnostics.
Preserve each branch and profile independently during compaction, then evict ordinary entries before open-PR, develop and main baselines when the repository budget requires it. Only confirmed open PRs receive that priority; live/recent/unresolved protections remain intact. Recognize layered v2 snapshots and retain v1 branch priority until a matching replacement exists. Extend isolated policy fixtures for both branch baselines, quota tiers, PR lookup and format migration. Static syntax and whitespace checks passed; tests were not run.
Restore separate native file-backend layers with main as baseline, develop additions and PR additions. Keep parents read-only and statistics outside archived data. Subtract inherited result keys, preserve distinct manifest mappings and nearest-parent precedence, skip unchanged uploads, and replace emptied layers with small markers. Trim only the writable layer to 1 GiB using cache-hit modification times. Share restore setup across both CI matrices and document scope rules, cold v2 migration and bounded retention. Workflow lint, Python syntax and whitespace checks passed; builds and runtime tests were not run.
Keep build-deps-v2 source Git objects and vcpkg binary archives in main/develop scopes. PRs consume their base branch cache without publishing dependency snapshots; source pins update source identities and package/runner inputs update vcpkg identities independently. Define actions-env-cache-v2 in a central environment manifest and share exact immutable tool, pip, apt and documentation environments from trusted main runs. Hash environment inputs, runner images and component specifications without branch, run or submodule identity. Extend bounded cleanup for the new families and add isolated identity/publish-policy fixtures. Workflow lint, Python syntax, JSON and whitespace checks passed. Builds, package installations and runtime tests were not run.
Persist successful XML extraction independently of Sphinx, then persist completed rendering before running unconditional output validation. Checker failures still fail the command but retain doctrees and HTML for retry; Sphinx warning failures retain XML while requiring fresh rendering. Report specific rebuild reasons and per-stage elapsed time, preserve complete state for unchanged extraction-only requests, and document the distinction between reusable work and accepted output. Add simulated failure/retry and invalidation fixtures. Static syntax and whitespace checks passed; builds and tests were not run.
Prepare and publish shared documentation tools before document generation so validation failures do not discard a valid environment. Prefer the newest immutable X source snapshot for each main/develop runner while leaving historical source pins available under budget. Document separate compiler, branch dependency and shared versioned environment families, invalidation inputs, publish ownership, cache-version updates and bounded eviction. Extend source-retention fixtures. Static workflow lint, syntax and whitespace checks passed; builds and tests were not run.
* Fixes invalid font sources before sizing their contents Rejects nonregular explicit font paths before opening or seeking them. Linux directory streams can report an enormous size and previously reached an impossible allocation instead of the documented font-loading error. Keeps missing-file skipping and genuine allocation failures intact, and labels the corrupt-font regression fixtures. * Fixes concurrent font fixture directory collisions Adds random entropy and bounded atomic directory-creation retries to font selection fixtures. Parallel CTest processes can share clock values and process-local counters, particularly on Windows; an existing directory now causes a retry rather than failing the test or taking ownership of another fixture. Preserves real filesystem errors and cleanup of successfully claimed directories. The focused font selection cases pass in both static and shared Linux builds. * Adds selectable shared Engine and module libraries Adds CHERYL_BUILD_SHARED_LIBS while retaining static libraries by default. Exports Engine APIs through CE_API and gives modules/support independent import/export definitions. Versions static archives and Windows DLL names, and sets ELF SONAME versions and relocatable runtime paths. Centralizes built-in singleton, logging, cache-provider and crash-bootstrap state in its owning library. Builds stateful owned dependencies with matching shared linkage and preserves supplied dependency output settings. Packages matched static/shared SDKs with component-version and exact artifact metadata, preserving safe relative SONAME symlinks. Adds relocated consumer checks for shared state and exceptions across a library boundary and expands Linux/Windows CI to cover both linkage choices. Updates existing build and consumer guidance for deployment and binary compatibility constraints. Validates Linux static/shared SDK, module, demo and first-game builds; all 11 font cases and all eight relocated SDK consumers pass in each mode. CI tooling checks pass, as do an MSVC public-header compile and a bounded Windows DLL state-sharing probe. Full Windows SDK verification remains with hosted CI. * Centralizes the shared-library build option Declares CHERYL_BUILD_SHARED_LIBS in CherylOptions alongside the other build options. Root and standalone library entry points use the same option configuration helper; linkage policy remains in CherylLibraries. Verifies static/shared root configuration and standalone library configuration without compiling. * Simplifies Linux terminal build selection Calculates CHERYL_BUILD_DEBUG_TERMINAL_LINUX directly in cheryl_configure_root_options: supported single-configuration Linux Debug builds default to ON, while other configurations default to OFF. Explicit ON includes the terminal in all configurations, including multi-config builds. Makes the source module consume that boolean directly and removes the separate CHERYL_DEBUG_TERMINAL policy/helper. Keeps Debug automatic display and explicit Release runtime activation unchanged. Updates build, module and demo guidance for standalone selection, cached values and configuration policy. Verifies root defaults, explicit overrides, unsupported platform/compiler defaults, multi-config selection, standalone Engine bootstrap and SDK-based source-module composition through configuration and generated linker checks. * Removes the deprecated sandbox build option Deletes CHERYL_SANDBOX_BUILD and its Native GLFW default overrides. Native input defaults to ON and the null platform to OFF; callers select those capabilities explicitly through CHERYL_NATIVE_INPUT and CHERYL_NATIVE_NULL_PLATFORM. Removes obsolete documentation flags and shorthand references while preserving explicit platform/input coverage. Fresh desktop and explicit null-platform configurations generate successfully without declaring a sandbox cache option. * Centralizes Cheryl build option declarations Moves module, native, logging, topology, documentation, fixture and example option defaults into CherylOptions.cmake. Entry points request their own option groups, preserving standalone defaults and caller overrides. Declares source selectors centrally and keeps the option summary singular and deferred until an actual boolean is declared. Ships the option definitions with the SDK and lets first-game obtain them from the checkout or installed package while retaining its older-SDK fallback. Removes CHERYL_RMLUI_PLACEHOLDER_FIX_VERIFIED. Owned RmlUi source still receives the placeholder correction; supplied libraries must declare the correction on their actual Core target. Updates the existing dependency and build guidance. Checks static/shared root configuration, standalone RmlUi, documentation tool arguments, first-game source and old/new SDK consumption, plus marked/unmarked RmlUi target acceptance. Verifies no owned cache declarations remain outside the central options file. No runtime implementation changes are required. * Fixes documentation extraction of shared-library exports Enables selective Doxygen preprocessing and erases Engine, component and RTTI visibility decorators before generating XML. Their unexpanded tokens were being parsed as C++ types, producing 473 strict Sphinx warnings in the shared-library PR, including a phantom BitmapFont variable. Keeps unrelated macros unexpanded and retains the native-input reference selection. Adds configuration regressions that compare the decorator list against export.h so future component annotations cannot silently leak into documented declarations. Validates public XML extraction, all 80 documentation-tooling tests and 18 publication tests. Existing CI already executes these checks and performs a strict complete HTML build. * Advances college-port assets for named sprites and HUD layouts Records the assets revision containing gameplay-oriented Space Invaders sprite names and RmlUi HUD layouts for the college projects. * Updates default assemblies and preserves isolated build profiles Selects shared libraries, documentation and SDK targets, both worker providers, RmlUi and miniaudio by default while making the demo and tests opt-in. Keeps documentation disabled in ordinary CI build profiles and suppresses unrelated options in standalone module and source-consumer Engine bootstraps. Synchronizes default values, prerequisites, demo and static-build commands, and Windows source-consumer DLL setup in the existing guides. * Fixes Windows shared GLFW callback scope exports Keeps the callback-depth thread-local counter private to the Native GLFW library and exports out-of-line scope construction, destruction and active-state queries instead. This avoids MSVC C2492 while preserving one callback-depth value per thread across DLL consumers. * Adds documentation theme controls and responsive content width Follows the browser colour preference by default and lets readers select and persist light or dark mode. Adds a screen-only dark palette for navigation, API signatures, syntax highlighting, tables and notices while preserving light print output. Expands the content panel to 75 percent of the viewport, retaining the original 800-pixel width when available and fitting smaller windows. Allows nested API field values to wrap without overflowing narrow viewports. * Fixes missing Gainput device-map exports in Windows shared builds Explicitly instantiates the device-map insertion operator in the owned Windows Gainput DLL so consumer-side device factories can resolve its import. Keeps supplied Gainput targets and other configurations unchanged. Exercises the same map lookup in the Native GLFW source and installed-SDK consumer without initializing a window or device. * Consolidates compiler caches into shared family pools Shares Linux GCC, Linux Clang and Windows MSVC results across compatible jobs while preserving main, develop and PR cache layers. Workers upload isolated deltas; one publisher unions results, keeps complete manifests, subtracts parent entries and bounds each pool at 1 GiB. Imports compatible per-job v2 snapshots when a v3 pool is absent, retires replaced legacy snapshots within the same ref, and preserves contributions across failed-job reruns. Validates archive contents and adds focused regression coverage. * Separates CI compilation from test execution Adds explicit build and test phases to the composition and relocated SDK runners. Keeps the combined default for existing callers while CI uses distinct build and test steps on the same runner, without repeating compilation or test execution. Preserves test fixtures, selected suites and Windows DLL search paths. Checks phase command selection and reuse of the previously extracted SDK.
Accepts both compact base32hex and full hexadecimal native file-backend keys throughout packing, publication, trimming and legacy imports. Keeps each native filename intact so cache readers can locate entries using their own encoding, without coupling validation to ccache version numbers. Reports the rejected path for unknown directory or archive entries. Adds real ccache 4.9.1 filename fixtures and mixed-format coverage while retaining malformed-path rejection and read-only parent guarantees. Validation: 55 compiler-cache tests pass. Isolated ccache 4.9.1 and 4.14 compilation probes each verify pack, two-worker publication and restored direct cache hits with zero misses.
Keeps CMake as the authority for project, engine and independent module versions. Freezes the initial 4.0.0 until a stable release is published, then proposes development patch increments through a generated PR. Tracks integrated source revisions to accumulate pending changes without counting generated version merges or overwriting manual version edits. Adds manual release preparation on develop and validates canonical develop-to-main release PR titles against the CMake project version. Preserves user release notes and requires pending development version changes to be merged before preparing the next stable project version. Publishes only ordinary accepted release merges after existing build, test, SDK and documentation checks pass. Reuses the four checked static/shared Linux/Windows SDK packages, verifies component manifests and checksums, and creates a matching immutable tag and complete release. Retried publication verifies existing assets and safely recovers empty unfinished draft uploads. Limits GitHub API requests and release uploads to repository-owned endpoints, treats tokens as opaque values, and requires approval of workflows created by generated PR events. Adds 73 mocked workflow regression tests; all pass alongside actionlint and whitespace checks. No engine rebuilds or remote publication were performed.
Uses a distinct uppercase bucket for invalid native-name coverage. The previous AB bucket reused the valid ab directory on case-insensitive filesystems, so filesystem enumeration returned a valid lowercase key and the expected rejection never occurred. Keeps native path validation unchanged. Validation: all 55 focused compiler-cache tests pass locally; git diff --check passes. Hosted Windows execution remains to be rerun with this fixture change.
Owns the resource-manager stream and its completion notification in VoiceData instead of allowing miniaudio sound initialization to free a failed stream while its load job still accesses it. Tracks successful job submission and waits for ordered stream cleanup before releasing storage, preserving background decoding and restart admission guarantees. Preserves synchronous initialization for threadless managers. Avoids repeating decoder cleanup after the pinned miniaudio page-allocation failure path has already uninitialized it. Adds repeated missing/corrupt-file recovery coverage with successful streamed playback and an unaffected existing voice. Validation: all 17 audio tests pass in static and shared Linux builds. AddressSanitizer reproduces the original use-after-free and verifies the actual wrapper through 256 missing-file, 256 corrupt-file, 256 injected allocation failures and 256 successful streams, plus threadless playback and failure handling, without sanitizer errors. Keeps the CI timeout at 120 seconds.
Installs pinned manifest dependencies during preparation and points CMake at the prepared prefix with manifest installation disabled. Keeps environment tools and submodule data in their existing cache families. Collects changed package archives, downloads and observed ABI usage from same-repository runs. A serialized default-branch publisher validates contributions, merges them into one 2 GiB pool, prunes older unused entries, saves the replacement snapshot and retires superseded snapshots. Forks retain read access without publishing binaries. Adds provenance, archive, retention and runner regression coverage. All 311 CI tooling tests pass locally. Publishing becomes active once the new workflow and helpers reach the default branch.
Adds CE::Logging::ProcessLifetime as an application-thread guard. Nested guards share the lifetime; the final guard closes built-in and custom live Logs, releases their pool ownership, and drains and joins the worker before returning from main. Shutdown is terminal and leaves dormant logger diagnostics safe. Owns a guard in Startup and the common test runner, and adopts it in manual engine and module consumers. Adds nested-scope coverage and an isolated terminal-shutdown check selected by CI. Verifies 30 logging tests, 21 runtime/cancellation tests and the terminal-shutdown case with static and shared builds, plus eight isolated logging scenarios and seven consumers per linkage. A focused MSVC Engine logging DLL/import-library probe also passes under Wine; full Windows CI remains to be rerun.
Validates invalid raw names before native filesystem normalization, while preserving inventory coverage for representable invalid paths. Exercises backslashes, trailing dots, traversal and reserved names through TAR contributions and confirms rejection preserves the pool. Reproduces both reported failures with Windows Python 3.13 under Wine. All 312 CI tooling tests pass on Linux and Windows Python under Wine; production cache behavior is unchanged.
Publish one owned AssetUploadSettled record per executed upload attempt, with checked loader/attempt identity, reusable batch correlation, completion counts and the original failure. Distinguish success, failure before effects, confirmed partial publication and unknown effects. Zero image/cache counts do not conceal file-registry effects or imply rollback. Keep notification outside noexcept completion bookkeeping and cache/observation locks. Preserve direct returns, exceptions and request futures. Preparation and requests cancelled before execution emit no settlement. Weak opt-in routing and a bounded fixed-cutoff pending queue prevent dangling buses or recursive fanout; observer/staging failures do not change upload results. Wire the existing demo, first-game and tutorial-game loaders to their Context buses. Verification: shared Release testing-engine library, test targets, public header probes and consumer build. Eight upload cases pass, including 10,000 assets in one event, partial failure, registry effects, observer failure and reentrancy. The runtime cancellation case passes in both modes. All 62 selected engine cases, 80 acceptance cases and the linked public consumer pass in the integration tree. NativeGLFW and application builds were not run; native verification still awaits separate authorization under repository testing rules.
Extend Create an Event and the event reference with weak Publisher routes while keeping payloads plain and channel/bus selection explicit. Add source-filtered gamepad subscribe/seed/cleanup and aggregate upload-settlement examples, including owner delivery, reconnect/closure, original failures, effect knowledge and bounded reentrant publication. Show completed-poll and upload notification ordering with accessible Sphinx Mermaid sequences. Connect the input, NativeGLFW and Events entry routes, wire the loading guide's existing examples, and reconcile plan/status readiness with the implemented source and outstanding native/application acceptance. Verification: local Sphinx generation and link/header/source checks pass with no Sphinx warnings. All 11 diagrams extracted from the affected generated pages render with the vendored Mermaid bundle in headless Firefox. Reviewed generated manual sections and the new public type articles; no native Engine, application or controller acceptance is added by this documentation work.
Adds a plain typed GraphicsDomainStateChanged payload and portable retained tokens with checked identities, coherent snapshots and permanent invalidation. Keeps native resource ownership and cleanup in the existing OpenGL lifetime. Publishes after complete renderer operations, preserving primary exceptions and ordering reentrant shutdown after the Available fanout. Destructor paths submit owned terminal records without invoking listeners; retained tokens remain the authority when routing expires or submission fails. Routes runtime renderers through their Context bus and uses the existing global provider/cache owner to evict only the bound invalidated graphics domain. Keeps provider destruction as fallback and preserves external handles and CPU fonts. Verification in the existing Release shared-library configurations: - testing-engine: 52 focused unit checks and 88 acceptance checks pass. - testing-native-linux: 28 focused OpenGL checks pass with fake contexts. - Engine and OpenGL public header probes build; both linked consumers pass. - git diff --check passes. No display/GPU-device tests were run. The engine build also reports two GCC warnings in the unchanged font-bake test fixture (fonts.cpp / FailingMemoryResource); this unit does not alter that code.
Records source identities, sequences, states and attempt outcomes at the engine publication points for graphics-domain, gamepad-availability, aggregate upload and runtime-pressure notifications. Labels these as notification attempts rather than claiming listener delivery, and reports expired weak publishers explicitly. Correlates OpenGL native lifetime IDs with portable graphics domains. Extends the existing cache-clear owner to sample entry totals for the domain-event consumer, then logs completed eviction after releasing its locks and provider binding. Destructor fallback retains its original unobserved clear path. Keeps records bounded by lifecycle/availability changes and upload batches. Adds no logging inside native callbacks or the demo and no per-asset notifications. Verification: 52 focused engine checks, 88 acceptance checks and the Engine consumer pass in testing-engine. The full UI demo builds in testing-native-ui with the current Engine-owned font configuration. Native demo runs follow as manual acceptance; no documentation generation was performed in this unit.
Owns coherent selected-window and simulation-view sources in Context, with checked session/source identities, retained snapshots and owner-synchronous required watches. Watches seed transactionally, invalidate with acknowledgement, isolate optional bus observers and fall back when delivery never entered. An entered operation is never retried after partial failure. Routes renderer viewport changes through the required window watch, transfers one copied selection with input into simulation, and suppresses native rendering when a listener has changed the live window after selection. Preserves legacy resize delivery and adds default-unsupported native focus observation. Adds explicit automatic view sizing to both UI sessions while keeping manual construction and manual override. Migrates demo/tutorial sizing and records source publication and toolkit application in engine/module diagnostics. Validation: 55 focused engine cases, 53 runtime/event acceptance cases, 39 UI cases, coexistence, 10 NativeGLFW cases, four linked public consumers and neutral header probes pass. Runtime/UI checks were rerun after the coherent handoff review fix. Native demo five-update runs pass sequentially and concurrently; logs confirm both toolkit seeds and ordinary graphics/cache shutdown. Physical resize/focus interactions and a standalone tutorial build remain unverified.
Publishes Ready, ShutdownStarting, RuntimeQuiescing and RuntimeStopped from the platform owner. Checked context/session identity, reached startup capabilities, bounded owned failure summaries and copied statistics remain observable through a retained lifecycle snapshot without retaining Runtime or native adapters. Gates concurrent simulation after owner binding and view bootstrap until Ready publication. Platform requests and resource maintenance continue during bootstrap; stop and startup failure always release the worker toward teardown. Quiescing follows mailbox/simulation completion and the attempted application hook, before accepted CPU work settles. Stopped follows all ordered teardown attempts and preserves the original exception plus secondary cleanup failures. Validation: 38 engine lifecycle/view/runtime cases, 53 runtime/event acceptance cases, both UI module selections (39 cases), coexistence, linked engine/UI consumers and public header probes pass. Tests cover queued Ready ordering, bootstrap platform progress, stop at Ready, pre-start stop, partial initialization, worker-start failure, Starting while an update is still running, rejected reuse and retained primary/secondary failures. Native five-update demo runs in both modes confirm the four ordered milestones, automatic UI sizing and ordinary native/cache cleanup. Shutdown negotiation remains a separate following unit.
Stages lifetime-safe shutdown commands independently of native input admission. Publishes Requested/Cancelled facts while a single owned host policy receives a private request-specific decision capability. Duplicate intent coalesces; stale decisions and delayed delivery errors cannot affect a later request. Policy failure or withdrawal cancels Pending. Stop and failure supersede it without a misleading cancellation, preserving the lifecycle's committed cause and outcome. Acknowledges GLFW close flags before negotiation, and routes selected-window close facts through a required immediate bridge with missed-entry fallback. Older adapters retain default close acceptance; an explicit Force option keeps native close unconditional while still allowing host-origin negotiation. Adds bounded lifecycle request correlation and engine/module-side request-ID logging. Validation: 49 engine shutdown/lifecycle/view/runtime cases, 53 runtime/event acceptance cases, 39 UI cases, coexistence, 10 NativeGLFW cases, four consumers and public header probes pass. Five real native close/resize acceptance cases pass, including cancel then fresh close then accept in both runtime modes. Native demo smoke runs pass in both modes with UI seeds, lifecycle order and cache/native cleanup verified from logs. Fixes the native acceptance target's missing direct GLFW link, required by its direct SDK calls.
Publishes owned PlatformMaintenance and SimulationStepStarting values on their actual owners. Reuses required-entry, fallback and acknowledged-lifetime gates for views and phases, with stable attachment-time lists and no replay when a participant joins during fanout. Optional observer failure cannot skip required work; entered partial actions are not retried. Moves recurring renderer maintenance to its required phase attachment while preserving partial-installation cleanup guards. FinalCollection runs module fanout before the direct renderer collection barrier. Simulation phases follow input/view selection and precede game hook entry; stop or a required failure prevents that hook without counting it as an update. Adds explicit automatic-time options and owned follow/detach operations to both UI sessions. Manual advancement rejects while attached, and late attachment starts with the next step. Application defaults and demo/tutorial manual timing order remain intact. Service/time diagnostics use a bounded sampling cadence. Validation: 54 engine cases, 53 runtime/event acceptance cases, 43 UI cases, coexistence, three linked consumers and header probes pass. Checks include before-notification failure, partial required actions, final retirement ordering, late clocks, real toolkit time/animation and automatic Context construction in both modes. Three native cases (16 cleanup/recovery/backpressure scenarios) pass, as do both five-update demo modes with service/lifecycle/view/cache logs checked.
Track checked output/voice identities and admitted playback generations with immutable terminal snapshots. Arbitrate EOF, stop, restart, reclamation and close under the audio mutex, reserving terminal sequence capacity before native effects. Failed admissions invent no successor; observed completion survives later controls. Stage outcomes in a preallocated configurable outbox, report dropped ranges, and publish outside audio locks through a fixed owner cutoff, including after close. Destruction discards unpublished observations. Add an explicitly owned weak runtime maintenance attachment without transferring application audio ownership. Keep custom audio backends compatible with optional default-unsupported methods. Validation: built the existing shared native-ui audio test/consumer targets. All 28 focused offline audio checks and the public offline consumer passed, including native failure injection, overflow, callback destruction and final publication. No hardware audio output was opened; native device behavior remains unverified.
Commit checked catalogue revisions and exact-key generation metadata alongside cache handles. Publish Published/Replaced/Reset only after complete cache and derived metadata effects, outside locks and retired-owner release. Cache hits stay silent; destructor/provider cleanup cannot invoke observers. Preserve old retained handles and direct reload results when optional observation fails. Add retained CPU-only snapshots and owned coherent-seed watches, with serialized nonrecursive bounded observation draining, explicit loss ranges and residual pumping. Avoid payload preparation without active routes or watches. Carry each generation's graphics-domain token separately from catalogue identity. Route provider-backed managers through the runtime bus and reset them on real domain invalidation; unsupported providers expose empty provenance. Keep modern font catalogue notifications deferred. Validation: 43 focused engine tests, 64 engine acceptance checks, 28 fake-context OpenGL tests, and engine/OpenGL public consumers passed in the existing shared configurations. Three real OpenGL acceptance cases passed, including retained frame reload despite an observer failure and six runtime cleanup scenarios. Both five-update demo modes passed view/lifecycle/service/catalogue log checks; GPU cache ownership dropped from 9 entries to zero with no warning/error logs.
Documents typed observations and required owner attachments, committed views, runtime service phases, retained lifecycle outcomes and negotiable shutdown. Adds catalogue/provenance and playback outcome guidance, including bounded observation loss, reconciliation and teardown ordering. Aligns UI tutorials and module references with automatic view following while preserving their input-before-time ordering. Adds Mermaid diagrams for view selection, shutdown, graphics lifetime and audio publication. Reconciles STATUS and the event plan with completed non-font work and deferred capabilities. Expands public API comments without changing C++ tokens. Hides the protected catalogue field's private factory initializer from generated reference output. Validation: cached Sphinx generation and local source/link checks; source/XML/HTML checks for representative method contracts; Firefox rendering of twelve diagrams across seven pages, with the revised window diagram checked after layout repair; git diff --check. Native project tests are not rerun for this documentation unit.
Includes the existing event tutorial between HUD and abstract controller lessons in the exact navigation sequence checked by documentation CI. Reproduces the reported test_tutorial_sequence failure before the correction. Validation: all 133 documentation tooling tests, all 18 stable-publication tests and git diff --check pass locally. Authored pages and generated site behavior are unchanged; full documentation generation is not repeated for this test fix.
Removes redundant method-level CE_API decorators from the already exported Audio System class. MSVC shared producers and consumers reject the duplicated DLL interface declarations with C2487; class-level exports retain the three methods. Separates the shutdown fixture's pending native close flag from its hang watchdog. Forces watchdog expiry after runtime teardown so the close-consumption assertion remains meaningful when Debug diagnostics take longer than five seconds. Counts resource-maintenance passes after the input backlog fills. Startup maintenance before the first input poll must not satisfy or prematurely stop the backpressure test. Requires two passes under backpressure in both runtime modes. Validation: reproduces the original MSVC errors and watchdog assertion failure; MSVC 14.51 production audio-source compilation, static/import/export header checks and native DLL producer/consumer probe pass. All 621 Clang 22 Debug CI checks pass with ASan/UBSan/LSan and zero skips, as do its Engine/Startup consumers. All 48 focused Release shutdown/audio/maintenance checks and the Engine/offline audio consumers pass. git diff --check passes. Hosted Clang 18 and the complete Windows shared-module job still require a run on the corrected commit.
Uses CE_TYPE_API for the explicit WindowStateSource and SimulationViewSource instantiations. Their selected methods retain CE_API, avoiding duplicate DLL interface declarations on MSVC while preserving the explicit instantiations' default ELF visibility for Linux shared consumers. Reproduces the original C2487 diagnostics with MSVC 14.51.36231. Verifies the corrected static, DLL producer and DLL consumer headers, the complete Windows shared-module CI build, 872 CI checks with zero skips, and all eight public consumers using cached MSVC tooling under Wine. The relocated Windows SDK also passes its ten installed and two standalone consumer checks. Verifies the Linux shared build, 23 focused view/runtime cases and the Engine public consumer. Confirms snapshot/watch exports for both view specializations on Windows and Linux. Hosted GitHub verification remains pending a new push.
Attempts the pinned Chocolatey ccache installation up to three times, waiting 10 and 20 seconds before the retries. Preserves installer diagnostics, final failure propagation, installed executable validation and the exact version check before publishing the tool directory to GITHUB_PATH. Cached tools still avoid installation entirely. Adds isolated bootstrap cases for first-attempt success, recovery, exhausted retries, a warm tool cache and a wrong executable version. All subprocesses and retry waits in these cases are mocked; they download and install nothing. Verified all 74 dependency-tooling tests on Linux and the five new cases with cached Windows Python under Wine. GitHub run 39363756280 encountered HTTP 504 from Chocolatey before engine configuration; live service recovery and the updated hosted bootstrap remain unverified.
Replace AbstractGame init/deinit with optional init_platform, init_simulation, deinit_simulation and deinit_platform overrides. Keep owner-independent setup in constructors. Initialize simulation after its services and initial view are ready, before Ready and simulation timing; close simulation dispatch and perform owner cleanup before worker exit. Preserve partial-initialization cleanup and the first failure. Migrate application and test overrides, move demo/tutorial UI setup out of updates, and reconcile API comments and the affected guides and examples. Validation: affected native UI build targets pass; 100 focused engine, shutdown, runtime adapter, text updater and UI runtime tests pass. Tutorial game syntax passes using the existing build flags, and 20 documentation literalinclude blocks resolve. Clean documentation rendering is checked separately because incremental output retained the previous API page.
Ship the reviewed explorer through the regular Sphinx site, with shared docs navigation, a wide layout, stable view links, API/source inspection and Mermaid downloads. Reuse 54 curated Mermaid sources in the explorer and system guides; validate catalog identities and arrows before publishing browser-rendered data. Review all 17 Engine Systems Usage units, replace coarse diagrams and grouped relationship tables, and add system-specific choices and boundaries. Catalogue the 16 fixed public event channels and the templated asset-catalogue family. Distinguish actual engine dependencies from application scheduling and correct stale logging, worker, discovery, notification and ownership relationships. Validate with 140 documentation tooling tests and JavaScript syntax checks. Generated-site and browser acceptance follows against the committed sources.
Register the explorer's real target IDs in MyST's document slug map after parsing, preserving heading anchors and rejecting missing or colliding IDs. This lets ordinary guide links resolve against the generated view index rather than falling back with missing-fragment warnings. Add dependency-free regressions for preserved heading slugs and missing targets.
Parse Mermaid's HTML-label SVG through an HTML fragment, and keep inline label typography consistent with Mermaid's measurements inside the documentation theme. Fit diagrams above the actual toolbar and offer a compact inspector on narrow screens so controls and type details stay reachable. Version iframe and shell assets by content, and revalidate catalog/revision data, so retained browser caches pick up generated documentation updates. Verify all 54 explorer diagrams, all 17 Usage diagrams and their label fit, guide/API round trips, comparison isolation, layout switching, theme propagation and narrow-screen controls in an isolated copy before final site generation.
Uses a clearer system monospace stack for inline literals, raises their size from 75% to 90% of surrounding text, and applies a consistent medium weight. Keeps code blocks and the main prose font unchanged. Gives all unlinked inline names the surrounding text color, links a readable blue, and visited links purple in both themes. Removes the unrelated red and peach literal colors without adding link underlines. Verified the source styles in Firefox against existing first-game HTML at desktop and narrow window sizes in both themes. Checked literal/link color distinction, contrast, font scaling, unchanged code blocks, and no additional page overflow. Diff whitespace checks passed. Full documentation generation was not run for this change; the local generated styles need regeneration.
Show selected application calls beneath their owning types in all 17 application maps, and distinguish game hooks implemented for runtime invocation. Add method contracts, declaration links, exact unambiguous API references and method-name search to the explorer without changing the other diagram views. Expose the normal Context input/event routes, GUI FrameWriter boundary, audio file decoding and explicit publication, and public memory allocation paths. Choose diagram orientation for the larger method labels and keep optional paths and consumer-to-dependency arrow meanings explicit. Validation includes 13 focused documentation tooling tests, full cached docs generation/link checks, source review, and browser checks for every diagram, method label, inspector entry, method search and emitted method API anchor.
Name Input::Actions::Context in Tick::actions() and ContextDefinition in ContextSubmission::attach(). Connect the existing boxes to those argument types so setup definitions and retained lookup leases are visibly distinct. Explain the ContextId alternative and borrowed View lifetime in the inspector. Checks: source/implementation review and 13 focused documentation tooling tests.
Audit selected public operations across all 17 application diagrams. Add missing signature dependencies among shown types and declaration evidence for the existing links. Show distinct worker policy, logging backend statistics, audio publisher and text draw-packet boundaries where the existing boxes were not the actual public argument or result type. Expose method-specific Accepts and Returns links in the inspector, including free operations and inherited declarations. Explain the supporting method when an arrow is selected. Keep consumer-to-dependency arrow direction, unlabeled arrows and selective diagram scope. Validation: public declaration review across every application view, 13 focused documentation tooling tests and JavaScript syntax checks. Rendered-site checks follow for this committed source revision.
Enriches Pygments' C++ lexer with Tree-sitter roles for types, namespaces, function declarations and calls, parameters, local variables, class fields, and enum values. Tracks scopes within each snippet, preserves lexical tokens and source text, and leaves identifiers with missing context neutral. Reuses the existing generated public API inventory for qualified type, enum and class-member names. Adds no separate source index, compiler database, manually maintained symbol list or browser-side parser. Pins and hash-checks tree-sitter and tree-sitter-cpp in the isolated docs tools, checks their imports during bootstrap, and validates binary wheel metadata coverage for CPython 3.11-3.14 on the supported desktop platforms. Uses distinct, contrasting light/dark colors for semantic roles and the same readable monospace stack for inline names and code blocks. Gives blocks more line spacing and a slightly larger font. Validation: 16 parser/HTML regressions, 44 bootstrap tests and 9 configuration tests passed. All 163 authored C++ fences retained their exact text. Firefox previews passed desktop/narrow checks in both themes; all 11 palette roles exceed 5:1 contrast. Full local documentation generation follows this commit.
Shows qualified public types across all 17 application views, including ownership, borrowed collections and deferred results where standard wrappers are abridged. Keeps free-function labels specific to their selected views and preserves dependency arrows, symbol identity and API links. Wraps long signatures and documents the display conventions. Checks that wrapped labels retain template and result types, and that free-function labels do not leak into other views. Verification: 16 focused diagram tooling tests, JavaScript syntax and diff checks pass. Full cached documentation generation and rendered browser verification follow this commit.
Omits Input:: from the application diagram while preserving Actions:: and external namespaces. States the local scope beside the view question and in the Mermaid description. Keeps fully qualified inspector signatures, search identities and API targets. Adds optional per-view namespace validation and focused regression checks for namespace disambiguation and canonical inspector/API identity. Verification: 18 focused diagram tooling tests, JavaScript syntax and diff checks pass. Cached docs generation and browser verification follow.
Removes typed parameter identifiers from application diagram signatures while retaining types, return values and meaningful ownership markers. Preserves full signatures in the inspector, search and API reference links. Applies local namespace scopes across subsystem views, including diagrams embedded in guides. Preserves ambiguous nested namespaces such as Text::Rendering and Input::Events, and keeps mixed diagnostics and utility views qualified. Leaves type identities, node inventories and arrows intact. Verification: 20 focused diagram tooling tests, JavaScript syntax and diff checks pass. Independent reviews verify all 185 application signatures and the namespace scopes. Cached docs generation and browser checks follow.
Omits const/volatile, pointers and references, and ownership/completion notes from application diagram signatures. Keeps type identities, collection notation and namespace disambiguation, with full contract details retained in the inspector and API links. Updates diagram conventions and checks operator names, return expressions, collection types and qualifier removal. Removes duplicated namespace prose from Mermaid accessibility descriptions during regeneration. Verification: 20 focused tooling tests, all17 application-source qualifier checks, JavaScript syntax and diff checks pass. Cached documentation build and browser verification follow.
Adds CE::Math::overlaps for raw 2D positions and full dimensions, with independent top-left-origin pivots defaulting to the center. Uses the existing Y-up geometry convention and excludes edge contact and rectangles with nonpositive dimensions. The constexpr noexcept helper is header-only and is exposed through cemath.h. Adds focused unit cases for overlap, containment, separation, contact, empty dimensions and independent anchors, plus API and utility guidance. Verification: C++ syntax-tree parsing and staged whitespace checks pass. Native builds and unit execution were not run; no engine binaries were produced. Documentation regeneration follows this commit so source links can resolve the new public header at the recorded revision.
Runs documentation tooling checks after the pinned tool environment is prepared, and executes documentation test discovery through that environment so the C++ highlighting tests can import Pygments and Tree-sitter. Validation: all 169 documentation tests and 18 stable-publication tests pass locally. Workflow YAML, test-step shell syntax, and dependency ordering also pass checks. The hosted Actions workflow has not been run for this change.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Delivering fixes for multiple issues:
Fixes: