101 lines
4.4 KiB
Markdown
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
|