Skip to content

Commit eb54a2a

Browse files
NagyViktNagyViktclaude
authored
feat(fleet-tui-poc): full iOS design (Spotlight + context menu + action sheet + session switcher) (#8)
* feat(fleet-tui-poc): full iOS design implementation (Spotlight, context menu, action sheet, session switcher) Implements the design at api.anthropic.com/v1/design/h/MnT9tqrbyJornGQ6jFA3mA (README in /tmp/design/terminal-ios-style/), extending the bare-bones POC into a full ratatui mockup of all four iOS surfaces: * Spotlight palette — search-first, Top Hit pill (IOS_TINT #0a84ff bg, white bold, tmux·h badge), grouped sections (PANE / SESSION / FLEET) with 30×30 icon tiles, footer `↵ open · ⌥↵ in all panes · esc cancel` * iOS context menu — pinned long-press menu, sectioned with hairlines, destructive-red Kill row, ▭ pane / %id title bar with green live dot * Action sheet — bottom-anchored grouped sheet with iOS Cancel hallmark * Session switcher — app-switcher cards (one per codex worker) with Focus/Queue/Pause/Kill action row Press 1/2/3/4 to switch overlays, q to quit. Palette: iOS dark UIKit values match the design's GLASS object — IOS_TINT = Rgb(10,132,255), IOS_DESTRUCTIVE = Rgb(255,69,58), IOS_GREEN = Rgb(48,209,88), IOS_ORANGE = Rgb(255,159,10), IOS_FG = Rgb(242,242,247). Fonts default to terminal monospace. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat(fleet-tui-poc): session-switcher buttons are now clickable Adds App.card_buttons hit-test registry. render_session_card pushes a Rect for each Focus / Queue / Pause / Kill button per card; the New worker pill registers as a NewWorker action. On MouseDown(Left) inside SessionSwitcher the App.dispatch_card_click walks the registry and sets App.last_action with a human-readable line ("✓ Focus → pane 1 (would: tmux select-pane -t codex-fleet:overview.1)") that flashes in the footer area until the next click. Card sizing also tightened: strip height now caps at 70% of the available vertical space and centers between header and footer, matching artboard D in /tmp/design/terminal-ios-style/project/ palettes.jsx (artboard shows ~78%; we leave 8% for the flash row). card_w 30→28 + gap 2→1 so a wider set of cards fits in modest kitty sizes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: NagyVikt <nagy.viktordp@gmail.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 010b39e commit eb54a2a

2 files changed

Lines changed: 1715 additions & 56 deletions

File tree

rust/fleet-tui-poc/README.md

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,24 @@ the surrounding iOS chrome side-by-side):
3838
tmux split-window -h -t codex-fleet:overview "cd $(pwd) && cargo run --release"
3939
```
4040

41-
Press `q` or `Esc` to exit.
41+
## Keys
4242

43-
## Expected output
43+
| Key | View |
44+
|-----------|-------------------------------------------------------------|
45+
| `0`, Esc | Phase-0 validation harness (chip + event log) — the default |
46+
| `1` | iOS context menu over codex multi-pane backdrop |
47+
| `2` | iOS spotlight palette over codex multi-pane backdrop |
48+
| `3` | iOS action sheet over codex multi-pane backdrop |
49+
| `4` | iOS session switcher (full-screen) |
50+
| `q` | Quit |
51+
52+
`0`/`Esc` from any overlay returns to the harness; from the harness it
53+
quits.
54+
55+
## Expected output (default view)
4456

4557
```
46-
╭ ◆ fleet-tui-poc (press q to quit) ───────────────────────────────╮
58+
╭ ◆ fleet-tui-poc (1·2·3·4 palettes · q quit) ────────────────────╮
4759
│ ◖ ● working ◗ │
4860
│ click the chip; coords appear below. expect ✓ ON CHIP when… │
4961
│ (12, 4) Down(Left) ✓ ON CHIP │
@@ -55,6 +67,27 @@ Press `q` or `Esc` to exit.
5567
The chip should look identical to the `[ working ]`-style chips that
5668
`fleet-tick.sh` renders elsewhere — same hue, same caps.
5769

70+
## iOS palette previews (keys 1–4)
71+
72+
Each palette is a ratatui port of an artboard from the
73+
`terminal-ios-style` design handoff (Claude Design, 2026-05-14). They
74+
preview the surfaces Phase 5 of the openspec change owns
75+
(`overlay.rs`), so the visual feasibility is checked before
76+
`fleet-ui` scaffolds.
77+
78+
- **1 · Context menu** — UIKit long-press menu pinned to the active
79+
pane. Five sections (copy / search / split / swap / lifecycle),
80+
destructive Kill in `IOS_DESTRUCTIVE`, shortcut chips on the right.
81+
- **2 · Spotlight** — search-first palette. Query line + systemBlue
82+
Top-Hit bar + three grouped result lists (Pane / Session / Fleet)
83+
with monospace shortcut chips.
84+
- **3 · Action sheet** — bottom-anchored grouped sheet with a
85+
separate `Cancel` button — the iOS hallmark — in `IOS_TINT`.
86+
- **4 · Session switcher** — app-switcher-style cards, one per codex
87+
worker. Active worker has the systemBlue border + LIVE badge; per
88+
card shows pane status, task, model · context · runtime, and a row
89+
of Focus / Queue / Pause / Kill actions.
90+
5891
## What "validated" looks like
5992

6093
When the operator runs this and confirms in the OpenSpec change's

0 commit comments

Comments
 (0)