4.4 KiB
4.4 KiB
| id | ticket | title | status | created | ref_decisions | tags | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PLN-0064 | prometeu-hub-ui-direction | Retro Hub Home and Fake Shell UI | open | 2026-05-15 |
|
|
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-0062should provide the launch/close/lifecycle wiring.PLN-0063should provide click routing.PLN-0065may 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.
ShellAfake app view as green.ShellBfake 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
-
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.rsor local Hub UI submodule.
-
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.
-
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
ShellAandShellB. - Files: Hub render path.
-
Render native fake Shell app views.
- What changes: draw
ShellAas a green app/window andShellBas 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.
- What changes: draw
-
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.
-
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.
- What changes: ensure visible button rects match clickable rects from
Acceptance Criteria
- Hub/Home renders full-screen in the 270p viewport.
- Hub/Home shows exactly two manual launch buttons:
ShellAandShellB. - The visual style is retro/minimalist with strong borders and limited palette.
ShellArenders as a simple green native fake Shell app/window.ShellBrenders 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-0062andPLN-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