Tracking issue for the Codev v2 UI. Not a spec, and not implementation authorization.
Where this came from
codev/research/codev-v2-ui-frd.md (rev. 5, decided 2026-08-21). Design language and
mockups in codev/research/v2-mockups/.
What is decided
- Option 2: a new fork-owned
apps/v2/ pnpm workspace, mounted through one
if (url.pathname.startsWith('/v2/')) block in tower-routes.ts. Additive, because
this repo is a fork of an active upstream and edits to hot upstream files are paid as
merge conflicts forever.
- Multi-machine ships in v1. This is what selected Option 2.
- Both UIs run indefinitely by design. The old UI stays the surface that merges upstream.
- Design language approved. Rust means a human is needed, and is used for gates and
nothing else. Ochre means something may be wrong but nobody is blocked. Moss means
healthy. Ink is everything else.
- 48 numbered requirements (FR-1 to FR-48) in Part 4 of the FRD.
The gate before any spec
The FRD requires all blocking spikes to run before a spec is written. Ranked:
- Multi-client resize policy, solved in the v2 layer, never in
pty-session.ts.
- HTTPS on a phone via Tailscale Serve, through to one delivered push notification.
If this fails, the mobile half of the FRD is fiction.
- iPad keyboard weekend test on the current app. Human, no code.
Terminal.tsx reuse strategy. Recommendation stands: import unmodified for v1.
- dockview on a real iPad, only if FR-7's tablet clause is promoted to MUST.
Still open
- Transport shape (Part 6 Q3). Both reviewers: one typed control socket per environment,
PTY sockets left alone. The library worth having is the schema, not the transport.
- Tailscale as a hard MUST (Q4). FR-37 already reads MUST; spike 2 decides it in fact.
- Mobile reach (Q7). Both reviewers: PWA now, Capacitor as a door not walked through,
never SwiftUI.
- Space Grotesk should be swapped. There is no dark mode.
Acceptance scenario
From a locked iPad on the sofa: a notification arrives that builder X is gate-waiting.
Tap it. Read the last 50 lines of that builder's terminal. Approve. Confirm the next
phase started. Under 30 seconds, no page reload.
Tracking issue for the Codev v2 UI. Not a spec, and not implementation authorization.
Where this came from
codev/research/codev-v2-ui-frd.md(rev. 5, decided 2026-08-21). Design language andmockups in
codev/research/v2-mockups/.What is decided
apps/v2/pnpm workspace, mounted through oneif (url.pathname.startsWith('/v2/'))block intower-routes.ts. Additive, becausethis repo is a fork of an active upstream and edits to hot upstream files are paid as
merge conflicts forever.
nothing else. Ochre means something may be wrong but nobody is blocked. Moss means
healthy. Ink is everything else.
The gate before any spec
The FRD requires all blocking spikes to run before a spec is written. Ranked:
pty-session.ts.If this fails, the mobile half of the FRD is fiction.
Terminal.tsxreuse strategy. Recommendation stands: import unmodified for v1.Still open
PTY sockets left alone. The library worth having is the schema, not the transport.
never SwiftUI.
Acceptance scenario
From a locked iPad on the sofa: a notification arrives that builder X is gate-waiting.
Tap it. Read the last 50 lines of that builder's terminal. Approve. Confirm the next
phase started. Under 30 seconds, no page reload.