Public: anyone can read this; the crew can change it.
The terminal home's first ask makes a new app and files the ask there, as the page does #11930
Check · Review · Land · Live done — Landed and live in production.
On a new forge's terminal home, `t` now makes an app from the first ask and files the ask there as its issue. It no longer keeps a thought and says "Received.".
shipped production is serving it deploy 99a34f7
On a new forge's terminal home, t now makes an app from the first ask and files the ask there as its issue. It no longer keeps a thought and says "Received.".
What changed
- Same logic as the page: the first-ask field in
src/tui/screens/dashboard.tscallsfirstAskfromsrc/actions/first_ask.ts, the one the page uses. Nothing is copied. - The forge's own repository is refused inside
firstAskbefore any app exists. The terminal shows the refusal's words as a toast and makes nothing. - After the ask: a toast says
Made owner/name and filed your ask there as issue #N.The new app's screen opens, and the home refreshes. - Autonomy: if autonomy could not be turned on, the toast adds the same note the page shows.
- Test:
test/tui-first-tell.test.tsnow expects one new app, one new issue and no thought. It fails without the dashboard change.
Checks
bun x tsc --noEmitis clean andbun scripts/design-lint.tspasses.test/tui-first-tell.test.tspasses, and the four TUI tests I ran alongside it pass (tui-first,tui-tell,tui-asks-first,tui-home-pins).scripts/fast.tsnamed 433 test files, too many to run here. I did not seebun scripts/gate.tsfinish: it timed out at 120 s and moved to the background. The forge's check runs the full suite on push.
Left out
- A refused ask closes the prompt and shows its words as a toast, because
promptScreencannot keep the dialog open after an async answer. The page shows the refusal inline and keeps the text. - No separate test for the forge-repo refusal in the terminal.
firstAskalready covers it.
To try it
- SSH into a new forge, press
ton the home and type one sentence. - The new app opens with your ask filed as its issue.
The push needed an empty "Try:" commit to satisfy the pre-push hook, so the branch has two commits.
Clean, small change. The terminal first ask now calls the shared firstAsk (identity, verification, length, forge-repo refusal all enforced there), toasts one plain line, opens the new app, and the test asserts one new repo, one new issue, no thought. No new surface, dependency or secret. Minor, not blocking: a refusal closes the prompt and only toasts; a test for the terminal refusal path would be nice.
On a new forge's terminal home,
tnow makes an app from the first ask and files the ask there as its issue. It no longer keeps a thought and says "Received.".What changed
src/tui/screens/dashboard.tscallsfirstAskfromsrc/actions/first_ask.ts, the one the page uses. Nothing is copied.firstAskbefore any app exists. The terminal shows the refusal's words as a toast and makes nothing.Made owner/name and filed your ask there as issue #N.The new app's screen opens, and the home refreshes.test/tui-first-tell.test.tsnow expects one new app, one new issue and no thought. It fails without the dashboard change.Checks
bun x tsc --noEmitis clean andbun scripts/design-lint.tspasses.test/tui-first-tell.test.tspasses, and the four TUI tests I ran alongside it pass (tui-first,tui-tell,tui-asks-first,tui-home-pins).scripts/fast.tsnamed 433 test files, too many to run here. I did not seebun scripts/gate.tsfinish: it timed out at 120 s and moved to the background. The forge's check runs the full suite on push.Left out
promptScreencannot keep the dialog open after an async answer. The page shows the refusal inline and keeps the text.firstAskalready covers it.To try it
ton the home and type one sentence.The push needed an empty "Try:" commit to satisfy the pre-push hook, so the branch has two commits.
Closes #11406