Public: anyone can read this; the crew can change it.

Contraction: remove the TUI's apps, runs and crew screens #412

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

This removes the TUI's apps, app, runs, run and crew screens and every route into them (#398). The change adds 199 lines and deletes 2,194 across 17 files, a net drop of 1,995 lines. Running an app and managing the crew now happen in the studio on the web. The terminal keeps the workspace, the editor, and review over SSH.

shipped production is serving it deploy 79be2f6

opened this

This removes the TUI's apps, app, runs, run and crew screens and every route into them (#398). The change adds 199 lines and deletes 2,194 across 17 files, a net drop of 1,995 lines. Running an app and managing the crew now happen in the studio on the web. The terminal keeps the workspace, the editor, and review over SSH.

What moved where

  • screens/runs.ts is now screens/runlist.ts and holds only how a run is drawn as a row: RunList, runTone, runRows. Pressing enter on a run in a pull's Crew tab or an issue's Crew card now hands over the run's web page, /:owner/:name/runs/:id, where its log, cancel and steer controls are. It opens as a link when config.url is set; otherwise a toast gives the path.
  • Each helper that surviving screens still used moved into the one screen that reads it:

- agentPick → assign.ts - budgetText → settings.ts - envTone → pull.ts

  • apptty.ts stays, because the pull screen's T still opens a preview's terminal. The issue said to delete it only if nothing else reached it.

What is gone

  • apps.ts, app.ts, run.ts, crew.ts.
  • The command palette entries apps, app, runs, new-app and crew.
  • The dashboard's Apps pane, with its a, N, t and apps-pane o keys. The empty dashboard now says "Press n for a new repository".
  • Account's c key and the "c manages the crew" text.
  • The TUI's New app flow. New app is still on the web at /apps/new.

Tests

  • test/tui-apps.test.ts: the tests for the deleted screens are gone. Two new tests check that none of the removed palette ids or dashboard and account keys does anything, including for an admin, and that the workspace still opens from the dashboard. The issue's Crew card test now expects the run's web address.
  • test/tui-size.test.ts: the workspace replaces runs and run in the size checks.
  • test/surfaces-adversarial.test.ts: the "popped while loading" test now uses the issues screen.
  • test/apps-ssh.test.ts: the pty-handoff test calls openAppTerminal from the dashboard instead of going through the apps screen. OpenSSH isn't installed here, so this file skipped and that test hasn't run yet.

Results

  • The full forge.json check passes: 576 tests, plus tsc with no errors. All test/tui-* tests pass.
  • Two web N+1 tests in surfaces-adversarial fail. They fail the same way on main without this change; I didn't touch them, and that file isn't part of the check.

Docs and old URLs

  • docs/DESIGN.md §6·0a and §6g now describe only what the terminal still shows. docs/STUDIO.md never mentioned the TUI screens, so it is unchanged.
  • No URL changed: the screens had no routes, and the web /runs/:id page is now where enter on a run leads.
  • The release workflow and the chart are untouched.

To try it: bun run src/main.ts, then ssh in. On the dashboard, a, N and t do nothing. : shows no Apps, Runs or Crew entries. Enter on a repository opens the workspace, and enter on a run in a pull's Crew tab gives the run's web address.

🤖 Generated with Claude Code

Closes #398

commented

This removes the TUI's apps, app, runs, run and crew screens and every route into them (#398), and now merges cleanly with main. Against main the change adds 205 lines and deletes 2,197 across 17 files, a net drop of 1,992 lines. Running an app and managing the crew happen in the studio on the web. The terminal keeps the workspace, the editor, and review over SSH.

What moved where

  • screens/runs.ts is now screens/runlist.ts and holds only how a run is drawn as a row: RunList, runTone, runRows. Pressing enter on a run in a pull's Crew tab or an issue's Crew card now hands over the run's web page, /:owner/:name/runs/:id, where its log, cancel and steer controls are. It opens as a link when config.url is set; otherwise a toast gives the path.
  • Each helper that surviving screens still used moved into the one screen that reads it:

- agentPick → assign.ts - budgetText → settings.ts - envTone → pull.ts

  • apptty.ts stays, because the pull screen's T still opens a preview's terminal. The issue said to delete it only if nothing else reached it.

What is gone

  • apps.ts, app.ts, run.ts, crew.ts.
  • The command palette entries apps, app, runs, new-app and crew.
  • The dashboard's Apps pane, with its a, N, t and apps-pane o keys. The empty dashboard now says "Press n for a new repository".
  • Account's c key. New app is still on the web at /apps/new.

Merge with main

  • account.ts: main removed the origins key (#418) and this branch removed the crew key, so Account now has neither.
  • app.ts: stays deleted. #409 had changed its wording for a dormant preview, so that wording ("asleep since …; nobody touched the change since …") now appears in the pull's preview line, the one place the terminal still shows an environment.
  • The preview line also handles the asleep state ("asleep …; wakes on a request") with no colour. Before, an asleep preview read "stopped". No test covers the new wording.

Tests

  • test/tui-apps.test.ts: the tests for the deleted screens are gone. Two new tests check that none of the removed palette ids or dashboard and account keys does anything, including for an admin, and that the workspace still opens from the dashboard.
  • test/tui-size.test.ts: the workspace replaces runs and run in the size checks.
  • test/surfaces-adversarial.test.ts: the "popped while loading" test now uses the issues screen.
  • test/apps-ssh.test.ts: the pty-handoff test calls openAppTerminal from the dashboard. OpenSSH isn't installed here, so this file skipped and that test hasn't run yet.

Results after the merge

  • The full forge.json check passes: 576 tests, plus tsc with no errors.
  • All test/tui-* tests and apps-idle pass; the 8 apps-ssh tests skipped.
  • Before the merge, two web N+1 tests in surfaces-adversarial also failed on main without this change. That file isn't in the check, and I haven't re-run it since the merge.

Docs and old URLs

  • docs/DESIGN.md §6·0a and §6g describe only what the terminal still shows. docs/STUDIO.md never mentioned these screens, so it is unchanged.
  • No URL changed, because the removed screens had no routes.
  • The release workflow and the chart are untouched.

To try it: bun run src/main.ts, then ssh in. On the dashboard, a, N and t do nothing. : shows no Apps, Runs or Crew entries. Enter on a repository opens the workspace, and enter on a run in a pull's Crew tab gives the run's web address.

🤖 Generated with Claude Code

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs