prometeu-runtime/discussion/workflow/plans/PLN-0064-retro-hub-home-and-fake-shell-ui.md
2026-05-15 17:50:59 +01:00

101 lines
4.4 KiB
Markdown

---
id: PLN-0064
ticket: prometeu-hub-ui-direction
title: Retro Hub Home and Fake Shell UI
status: open
created: 2026-05-15
ref_decisions: [DEC-0028]
tags: [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