prometeu-runtime/discussion/workflow/plans/PLN-0064-retro-hub-home-and-fake-shell-ui.md

4.4 KiB

id ticket title status created ref_decisions tags
PLN-0064 prometeu-hub-ui-direction Retro Hub Home and Fake Shell UI done 2026-05-15
DEC-0028
hub
ui
shell
system-apps
lifecycle
design-system

Briefing

Implement the visible Hub/Home and fake Shell app surfaces required by DEC-0028: a retro/minimalist 270p Hub with two manual buttons, plus green ShellA and blue ShellB native fake app/window views.

Source decision: DEC-0028.

Objective

Replace the current debug-style window surface with the first Prometeu OS visual identity slice while keeping all UI primitives local and avoiding a reusable toolkit.

Dependencies

  • PLN-0062 should provide the launch/close/lifecycle wiring.
  • PLN-0063 should provide click routing.
  • PLN-0065 may provide pixel font rendering; this plan must still remain executable with current text rendering if font integration is deferred.

Scope

  • Full 270p Hub/Home composition.
  • Retro/minimalist palette, borders, panels, and two clickable launch buttons.
  • Local drawing primitives for panel/frame/button/highlight only when needed.
  • ShellA fake app view as green.
  • ShellB fake app view as blue.
  • App/window chrome with close affordance.
  • Clear visual separation between Hub/Home and Shell app state.

Non-Goals

  • No full UI toolkit.
  • No generic app catalog.
  • No Tabs/List/Status bar/Footer/help bar.
  • No controller focus UI.
  • No production app plugin model.
  • No game cartridge visual changes.

Execution Method

  1. Define the 270p layout constants.

    • What changes: establish local coordinates for Hub background, title area, two buttons, and optional simple panel/frame.
    • How: use fixed 480x270 logical viewport coordinates consistent with the runtime viewport.
    • Files: crates/console/prometeu-system/src/programs/prometeu_hub/prometeu_hub.rs or local Hub UI submodule.
  2. Add local retro drawing primitives.

    • What changes: add small helper functions for panel/frame, button, highlight, and simple text placement.
    • How: keep them private/local to the Hub slice; do not expose as a toolkit.
    • Files: Hub module or crates/console/prometeu-system/src/programs/prometeu_hub/ submodules.
  3. Render Hub/Home.

    • What changes: draw a consistent retro/minimalist Home surface with exactly two launch buttons.
    • How: use low-resolution composition, strong outlines, limited color use, and button labels ShellA and ShellB.
    • Files: Hub render path.
  4. Render native fake Shell app views.

    • What changes: draw ShellA as a green app/window and ShellB as a blue app/window, with a visible close command.
    • How: use the task-owned window information and app identity established by PLN-0062.
    • Files: Hub render path and any local fake-app state/mapping.
  5. Keep visual state separate from lifecycle state.

    • What changes: UI code may know the current view/app identity but must not mutate lifecycle directly.
    • How: return actions to the boundary defined by PLN-0062.
    • Files: Hub update/render code.
  6. Add lightweight tests for layout/action coupling.

    • What changes: ensure visible button rects match clickable rects from PLN-0063.
    • How: put button definitions in a shared local data structure used by render and hit testing.
    • Files: Hub module tests.

Acceptance Criteria

  • Hub/Home renders full-screen in the 270p viewport.
  • Hub/Home shows exactly two manual launch buttons: ShellA and ShellB.
  • The visual style is retro/minimalist with strong borders and limited palette.
  • ShellA renders as a simple green native fake Shell app/window.
  • ShellB renders as a simple blue native fake Shell app/window.
  • Each Shell app view exposes a visible close command.
  • Local primitives are not exported as a general toolkit.
  • No Tabs/List/Status bar/Footer/help bar are added in this wave.

Tests

  • Unit tests for shared local layout/button definitions.
  • Compile and runtime tests from PLN-0062 and PLN-0063.
  • Manual desktop verification of the full flow: Hub -> ShellA -> close -> Hub -> ShellB -> close -> Hub.
  • Screenshot/manual visual check at 480x270 internal composition if repository tooling supports it.

Affected Artifacts

  • crates/console/prometeu-system/src/programs/prometeu_hub/prometeu_hub.rs
  • Possible local modules under crates/console/prometeu-system/src/programs/prometeu_hub/
  • Tests colocated with Hub module