Skip to content

Codev v2 UI #37

Description

@pseudoseed

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:

  1. Multi-client resize policy, solved in the v2 layer, never in pty-session.ts.
  2. HTTPS on a phone via Tailscale Serve, through to one delivered push notification.
    If this fails, the mobile half of the FRD is fiction.
  3. iPad keyboard weekend test on the current app. Human, no code.
  4. Terminal.tsx reuse strategy. Recommendation stands: import unmodified for v1.
  5. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/dashboardTower web dashboardenhancementNew feature or requestfork-onlyDeliberately not upstreamed to cluesmith/codev

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions