Skip to content

Rhea v0.2.0

Pre-release
Pre-release

Choose a tag to compare

@baumic baumic released this 28 Oct 21:34

Rhea 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
    starting Ceto.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 gap support 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::loadResource callbacks to receive ErrorReport.
    WorldService open, load, transition, and preparation callbacks now also use
    ErrorReport, replacing the former service-specific error enums. Check
    report.isError() and inspect report.errors for diagnostics.
  • Construct ResourceList with both the application and a ResourceContext;
    use an empty context for fully qualified resource identifiers. Its completion
    callback receives ErrorReport rather than an Error*.
  • 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 with Component::registerResourceProperty so
    dependency discovery, base-path handling, and copying can process them.
  • Replace reference.resolve(tree) with tree->resolve(reference).
  • Rename Event::isPropagationStoppped() to isPropagationStopped().
  • 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.