Repository navigation
Rhea v0.2.0
Pre-releaseRhea v0.2.0
Rhea v0.2.0 adds a desktop file browser and detailed loading diagnostics to Ceto,
along with a standalone Windows x64 ZIP packaging workflow. It also improves
resource references, asset import, GUI layout, and OpenGL rendering.
Rhea remains experimental. This release changes public C++ APIs; source
compatibility with v0.1.x is not guaranteed. An editor is not included.
Ceto scene viewer
- Start Ceto without a command-line asset directory. Engine and viewer resources
are located relative to the executable. - Browse local files and directories, Windows drives, available realms, and
recent worlds. The Samples entry exposes examples shipped with the package. - Open worlds and scenes through the browser. Failed opens display an error
message or a list of detailed diagnostics, and the browser remains available
for another attempt. - Package Ceto, runtime libraries, engine resources, the Courtyard example, and
license notices in a Windows x64 ZIP. Extract the complete archive before
startingCeto.exe, then select Samples > Courtyard > world.scene.
See Standalone Ceto release build for the vcpkg
Release preset and ceto-package target. The Courtyard source directory is an
explicit packaging input and is not included in the engine source checkout.
Resource loading and diagnostics
- Added structured errors with codes, resource identifiers, diagnostic context,
and underlying causes. Error reports collect diagnostics across resource
loading, scene instantiation, world opening, and scene transitions. - Added resource contexts and registered, typed resource-reference properties.
References retain their base paths during instantiation, including dynamic
references and component overrides. - Added base-relative Orion address resolution and a filesystem realm for
direct local file access. Local realm mappings can be replaced or cleared. - Unified dependency loading across asset importers, including external glTF
dependencies and OBJ texture dependencies. - Fixed texture-cache identity, material override isolation, GPU material
identity during updates, repeated mesh finalization, and material copy error
handling.
GUI, rendering, and platform fixes
- Added CSS
gapsupport and improved row/column alignment. Invisible children
no longer participate in these layouts. - Added list item activation and double-click handling,
Unit::findByName, and
safer event bubbling when a handler destroys its target. - Corrected OpenGL clipping, render-target clearing, and standard-shader
lighting; normalized SDL mouse-wheel deltas. - Added executable-directory discovery and Windows drive enumeration.
- Updated BasicApp's resource-list construction and loading callback for the
current resource API. - Corrected the default GUI font resource filename for case-sensitive Linux
filesystems.
Migrating from v0.1.x
- Update
Application::loadResourcecallbacks to receiveErrorReport.
WorldServiceopen, load, transition, and preparation callbacks now also use
ErrorReport, replacing the former service-specific error enums. Check
report.isError()and inspectreport.errorsfor diagnostics. - Construct
ResourceListwith both the application and aResourceContext;
use an empty context for fully qualified resource identifiers. Its completion
callback receivesErrorReportrather than anError*. - Resource-loading and scene APIs provide overloads accepting
ResourceContext.
Preserve the context when resolving relative resource identifiers in custom
loaders or application code. - Custom components with resource properties should use typed
Ref<T>members
and register those properties withComponent::registerResourcePropertyso
dependency discovery, base-path handling, and copying can process them. - Replace
reference.resolve(tree)withtree->resolve(reference). - Rename
Event::isPropagationStoppped()toisPropagationStopped(). Fs::getHomeDir()no longer accepts a creation flag or appends an engine
directory. Select application-specific directories explicitly.
These are migration highlights, not a complete list of changed signatures.
Rebuild dependent applications against the matching engine revision.
Validation
The following results were reported from manual Windows testing:
- The standalone Release build, sample loading, ZIP generation, and local
extract/start/open workflow worked. - The package ran on a Windows system without development tools.
- Scene transitions worked in Novara, an external application using Rhea.
- Opening an invalid file displayed an error, including a detailed list where
applicable. Opening a valid file afterwards worked.
These checks were not recorded against an identified v0.2.0 package hash. Build
the published archive from the intended release revision and retain its version
and validation record.
Linux/WSL validation on October 28, 2026 covered bc68382d with the BasicApp API
and GUI font-path fixes described above, using GCC 11.4.0, CMake 4.4.3, Ninja,
SDL, and WSLg OpenGL 4.1 (Mesa 23.2.1, Intel Iris Xe through D3D12):
- A separate standalone Release build of Ceto, BasicApp, and all three Poseidon
samples succeeded with tests disabled. - Triangle, Cube, and TexturedCube each completed ten OpenGL frames and exited
successfully. - BasicApp loaded its texture and reported its scene ready. Ceto reported its
GUI ready and loaded the Courtyard world and scene. Both ran in bounded
20-second startup checks and were stopped by the test timeout; these checks
do not establish normal shutdown or interactive/visual correctness.
Validation of the complete Courtyard editing walkthrough remains pending.
The complete automated test suite has not been validated for this release.
Native Linux and macOS have not been validated for v0.2.0. The binary packaging
workflow targets Windows x64.
Feedback and license
Report issues through the GitHub issue tracker.
Include the release or commit, operating system, graphics backend, build options,
reproduction steps, and relevant diagnostics.
Rhea is distributed under the MIT License. Third-party components retain their
respective licenses; see LICENSE and
THIRD_PARTY_NOTICES.md.