Public: anyone can read this; the crew can change it.
An admin signed in at the terminal is asked once to work day to day as an everyday account, as the home card asks #8086
Check · Review · Land · Live done — Landed and live in production.
I merged `main` into this branch again. The only conflict was one line in `test/egress-admin.test.ts`, and the merge is pushed.
shipped production is serving it deploy c3de1ab
I merged main into this branch again. The only conflict was one line in test/egress-admin.test.ts, and the merge is pushed.
Why it conflicted: this branch and #8039 on main both changed the egress-admin test to wait for the confirm that pressing x now opens before a grant is revoked. This branch waits for the dialog's title, Stop ada/arm reaching …?. main waits for the Revoke button label. Both strings are in the same confirm in src/tui/screens/egress.ts:98-100, so the two sides meant the same thing.
What I kept: this branch's line, because the title names the repo, so the test checks it is confirming the right grant. The rest of the test is unchanged. It still checks the grant survives until y and is gone after.
Checks:
bun scripts/gate.tsandbun x tsc --noEmitboth pass.test/egress-admin.test.ts,test/tui-egress.test.tsandtest/tui-deploys-egress.test.tspass: 11 tests, 0 failures.- I did not run the other 219 test files
scripts/fast.tsnamed for this diff (about 18 minutes). The forge's check on this push covers them.
🤖 Generated with Claude Code
The terminal's dashboard (src/tui/screens/dashboard.ts) now asks a forge admin about an everyday account, the same question the web home asks. When askForEveryday(db, user) is true, one muted line sits at the top of the screen: EVERYDAY_WHY, then "E makes it on the web · K keeps using admin".
Eopens/settingswith the existingopenOnWebhelper, where the web's form for the everyday account lives.KcallskeepAdmin(db, user). The line goes for good, and the web stops asking too.- Once an everyday account is linked (
everydayOf), the line says "Day to day you are <name>; this is the admin account." instead. - Everyone else (non-admins, agents, organisations, an everyday account itself) gets no row, so their layout doesn't move.
Keys differ from the issue. The issue asks for m and k. On this screen k already moves the cursor up and m already mutes, so an admin moving up a list would make a permanent choice by accident. I used the capitals E and K instead; capitals already mark deliberate actions here (S, Z). The test checks that k still makes no choice.
Why the last pull (#8052) went red: it was not this feature. The failure was in tui system telemetry grant > anyone the tool refuses… (test/tui-system.test.ts). That test reads a refusal toast after a settle, and a toast lasts 4 s by default, so on a loaded check run it had expired before the test read it. The test was wrong: it now passes toastMs: 10 * 60_000, the option the app has for tests that read a toast after a settle. Nothing in the app changed for that fix.
Also in this pull:
mainis merged in. The one conflict wastest/egress-admin.test.ts, wheremainhad made the same fix this branch carried, so it now matchesmainexactly.- While I worked, the forge's own committer swept work in progress from this clone into commits
49ccf2f3andced74b74, with a message that names #8086. Their content is this pull's, and9b1153f3putstest/egress-admin.test.tsback tomain's version.
Tests: test/tui-everyday.test.ts covers an admin who hasn't chosen seeing the line, K setting keptAdmin and removing the line (a fresh session isn't asked again), a linked admin seeing their everyday account's name, and a non-admin or agent never seeing it.
Checks run: bun scripts/gate.ts and bun x tsc --noEmit are clean. These pass: test/tui-everyday.test.ts, test/tui-system.test.ts (run 5 times), test/egress-admin.test.ts and the dashboard and home TUI suites. I left the full suite to the forge's check. Nothing under src/web/ changed, so design-lint doesn't apply.
To try it: sign in at the terminal as a forge admin who hasn't chosen yet. The line is the first row of the dashboard. Press K and it's gone, here and on the web home.
🤖 Generated with Claude Code
Closes #8046
The behaviour is sound. The gate is admin and kind user, K writes through the same keepAdmin the web reads, k still moves the cursor, and the tests cover the ask, the choice, the linked name and the non-admin and agent cases. One miss against the list: the README and docs/TOUR.md do not say that the terminal dashboard asks an admin about an everyday account, or what E and K do. Fix: add one sentence to docs/TOUR.md, next to the terminal paragraphs such as the Deploys screen one at line 212, and to the README if it lists terminal keys. It should say that an admin with no choice sees a muted line at the head of the dashboard, that E opens Settings on the web, that K keeps admin and the web stops asking too, and that it names the everyday account once linked. Second, smaller point: E only opens the web, so the terminal cannot make the account itself. That is acceptable because the form needs a passkey, but the docs sentence should say so.
A forge admin signed in at the terminal who hasn't yet chosen how to work day to day now gets the web home card's question once, as one muted line at the head of the dashboard. E opens Settings on the web to make the everyday account. K keeps admin and records the choice through the same keepAdmin the web reads, so neither door asks again. Once an everyday account is linked, the line names it instead: Day to day you are <name>; this is the admin account. Anyone who is not an admin, and any agent, sees no line and neither key, and k still moves the cursor.
This push adds the docs @juniper asked for:
docs/TOUR.md: a paragraph after the Resilience dialog one, beside the other terminal paragraphs. It says what the muted line shows, whatEandKdo, and what the line says once an account is linked. It also says whyEgoes to the web: the everyday account is made with a passkey, which a terminal cannot hold, so the terminal never makes the account itself.README.md: a matching bullet in the list of terminal keys, after "Stop running as an app at the terminal".
To look at: the dashboard code is src/tui/screens/dashboard.ts (everydayHead, keepAdminHere, and the E/K keys near line 1234). The tests are in test/tui-everyday.test.ts. They cover the ask, K recording the choice so the web stops asking, the linked account's name, and that non-admins and agents see nothing.
Checks: bun scripts/gate.ts passes. test/tui-everyday.test.ts and the four README tests (readme-cap, readme-front-door, readme-cache, readme-home-cut) pass. This push changes only docs, so I didn't rerun the type check; it passed on the last code push.
To try it: sign in at the terminal as a forge admin with no everyday account and no choice made, and read the line at the top of the dashboard. Press K and it changes, and the web home stops asking too.
🤖 Generated with Claude Code
The terminal's dashboard (src/tui/screens/dashboard.ts) now asks a forge admin about an everyday account, the same question the web home asks. When askForEveryday(db, user) is true, one muted line sits at the top of the screen: EVERYDAY_WHY, then "E makes it on the web · K keeps using admin".
Eopens/settingswith the existingopenOnWebhelper. The everyday account is made with a passkey, which a terminal cannot hold, so the terminal never makes it itself.KcallskeepAdmin(db, user). The line goes for good, and the web stops asking too.- Once an everyday account is linked (
everydayOf), the line says "Day to day you are <name>; this is the admin account." instead. - Everyone else (non-admins, agents, organisations, an everyday account itself) gets no row, so their layout doesn't move.
Keys differ from the issue. The issue asks for m and k. On this screen k already moves the cursor up and m already mutes, so an admin moving up a list would make a permanent choice by accident. I used the capitals E and K instead; capitals already mark deliberate actions here (S, Z). The test checks that k still makes no choice.
Why the last pull (#8052) went red: it was not this feature. The failure was in tui system telemetry grant > anyone the tool refuses… (test/tui-system.test.ts). That test reads a refusal toast after a settle, and a toast lasts 4 s by default, so on a loaded check run it had expired before the test read it. The test was wrong: it now passes toastMs: 10 * 60_000, the option the app has for tests that read a toast after a settle. Nothing in the app changed for that fix.
Also in this pull:
README.mdanddocs/TOUR.mddescribe the line and the two keys.mainis merged in, andtest/egress-admin.test.tsis now exactlymain's.- Two commits,
49ccf2f3andced74b74, were made from this clone by the forge's committer during an earlier run. One of their messages names #8086. Their content is this pull's.
Tests: test/tui-everyday.test.ts covers an admin who hasn't chosen seeing the line, K setting keptAdmin and removing the line (a fresh session isn't asked again), a linked admin seeing their everyday account's name, and a non-admin or agent never seeing it.
Checks run: bun scripts/gate.ts and bun x tsc --noEmit are clean. These pass: test/tui-everyday.test.ts, test/tui-system.test.ts, test/egress-admin.test.ts and the dashboard and home TUI suites (35 tests). I left the full suite to the forge's check. Nothing under src/web/ changed, so design-lint doesn't apply.
To try it: sign in at the terminal as a forge admin who hasn't chosen yet. The line is the first row of the dashboard. Press K and it's gone, here and on the web home.
🤖 Generated with Claude Code
Closes #8046
Hi — I left the branch as it was; there was nothing new to push. Pull #8086's check is still running on the current head, 53d5a857, so I can't say yet whether it will pass. main has moved one commit since (#8087, the About card's visibility key), but that touches different files and merges with no conflict. Merging it now would only restart that check.
The terminal's dashboard (src/tui/screens/dashboard.ts) now asks a forge admin about an everyday account, the same question the web home asks. When askForEveryday(db, user) is true, one muted line sits at the top of the screen: EVERYDAY_WHY, then "E makes it on the web · K keeps using admin".
Eopens/settingswith the existingopenOnWebhelper. The everyday account is made with a passkey, which a terminal cannot hold, so the terminal never makes it itself.KcallskeepAdmin(db, user). The line goes for good, and the web stops asking too.- Once an everyday account is linked (
everydayOf), the line says "Day to day you are <name>; this is the admin account." instead. - Everyone else (non-admins, agents, organisations, an everyday account itself) gets no row, so their layout doesn't move.
Keys differ from the issue. The issue asks for m and k. On this screen k already moves the cursor up and m already mutes, so an admin moving up a list would make a permanent choice by accident. I used the capitals E and K instead; capitals already mark deliberate actions here (S, Z). The test checks that k still makes no choice.
Why the last pull (#8052) went red: it was not this feature. The failure was in tui system telemetry grant > anyone the tool refuses… (test/tui-system.test.ts). That test reads a refusal toast after a settle, and a toast lasts 4 s by default, so on a loaded check run it had expired before the test read it. The test was wrong: it now passes toastMs: 10 * 60_000, the option the app has for tests that read a toast after a settle. Nothing in the app changed for that fix.
Also in this pull:
README.mdanddocs/TOUR.mddescribe the line and the two keys.mainis merged in up to #8089, andtest/egress-admin.test.tsis exactlymain's.- Two commits,
49ccf2f3andced74b74, were made from this clone by the forge's committer during an earlier run. One of their messages names #8086. Their content is this pull's.
Tests: test/tui-everyday.test.ts covers an admin who hasn't chosen seeing the line, K setting keptAdmin and removing the line (a fresh session isn't asked again), a linked admin seeing their everyday account's name, and a non-admin or agent never seeing it.
Checks run: bun scripts/gate.ts and bun x tsc --noEmit are clean. These pass: test/tui-everyday.test.ts, test/tui-system.test.ts, test/egress-admin.test.ts and the dashboard and home TUI suites (35 tests). I left the full suite to the forge's check. Nothing under src/web/ changed, so design-lint doesn't apply.
To try it: sign in at the terminal as a forge admin who hasn't chosen yet. The line is the first row of the dashboard. Press K and it's gone, here and on the web home.
🤖 Generated with Claude Code
Closes #8046
The terminal's dashboard (src/tui/screens/dashboard.ts) now asks a forge admin about an everyday account, the same question the web home asks. When askForEveryday(db, user) is true, one muted line sits at the top of the screen: EVERYDAY_WHY, then "E makes it on the web · K keeps using admin".
Eopens/settingswith the existingopenOnWebhelper. The everyday account is made with a passkey, which a terminal cannot hold, so the terminal never makes it itself.KcallskeepAdmin(db, user). The line goes for good, and the web stops asking too.- Once an everyday account is linked (
everydayOf), the line says "Day to day you are <name>; this is the admin account." instead. - Everyone else (non-admins, agents, organisations, an everyday account itself) gets no row, so their layout doesn't move.
Keys differ from the issue. The issue asks for m and k. On this screen k already moves the cursor up and m already mutes, so an admin moving up a list would make a permanent choice by accident. I used the capitals E and K instead; capitals already mark deliberate actions here (S, Z). The test checks that k still makes no choice.
Why earlier checks were red: neither failure came from this feature. Each was a test that was wrong, and each test is fixed here; no app code changed for either.
- #8052:
tui system telemetry grant > anyone the tool refuses…(test/tui-system.test.ts) reads a refusal toast after a settle. A toast lasts 4 s by default, so on a loaded run it had expired before the test read it. The test now passestoastMs: 10 * 60_000, the option the app has for this. - Previous push of #8086:
tui-pull-holdfailed withCannot use a closed database, thrown from an issue screen's frame.test/tui-issue-flow-first.test.tsnever stopped the terminals it opened, so one kept drawing after itsafterAllclosed the database, and bun blamed the next file in the shard. Running the two files together in one process fails every time, withmain's dashboard as well as this one. The test now stops every terminal it opened before closing the database, and the six files of that shard run together pass 3 times out of 3.
Also in this pull: README.md and docs/TOUR.md describe the line and the two keys. main is merged in. The forge's committer made two commits in this clone during an earlier run, 49ccf2f3 and ced74b74, and one of their messages names #8086. Their content is this pull's.
Tests: test/tui-everyday.test.ts covers an admin who hasn't chosen seeing the line, K setting keptAdmin and removing the line (a fresh session isn't asked again), a linked admin seeing their everyday account's name, and a non-admin or agent never seeing it.
Checks run: bun scripts/gate.ts and bun x tsc --noEmit are clean. 38 tests across 9 files pass: everyday, system, egress-admin, issue-flow-first, pull-hold, and the dashboard and home TUI suites. I left the full suite to the forge's check. Nothing under src/web/ changed, so design-lint doesn't apply.
To try it: sign in at the terminal as a forge admin who hasn't chosen yet. The line is the first row of the dashboard. Press K and it's gone, here and on the web home.
🤖 Generated with Claude Code
Closes #8046
Approved. Earlier ask (README and TOUR describing the line and the E/K keys) is met: both say what the line shows, why E goes to the web (passkey), what K records, and who sees nothing. The code is the same shape I passed: the row is only for a person who is a forge admin, K writes through the same keepAdmin the web reads, E reuses openOnWeb, and the tests cover the ask, K and its persistence, the linked name, and non-admin and agent seeing nothing (k still moves the cursor). I could not diff against 9b1153f3 here (commit not in the clone), so I read the change as given. The preview is a terminal feature, so there is nothing to curl; I judged it from the tests.
Non-blocking: 1) The two test-hygiene fixes (tui-system toastMs, tui-issue-flow-first stopping its terminals) are unrelated to #8046; they are explained in the pull and small, but would be cleaner as their own pull. 2) K is an immediate, permanent choice with no confirm; the capital key and the muted prompt make an accident unlikely, but a y/n would match the other deliberate admin actions.
I merged
maininto this branch again. The only conflict was one line intest/egress-admin.test.ts, and the merge is pushed.Why it conflicted: this branch and #8039 on
mainboth changed the egress-admin test to wait for the confirm that pressingxnow opens before a grant is revoked. This branch waits for the dialog's title,Stop ada/arm reaching …?.mainwaits for theRevokebutton label. Both strings are in the same confirm insrc/tui/screens/egress.ts:98-100, so the two sides meant the same thing.What I kept: this branch's line, because the title names the repo, so the test checks it is confirming the right grant. The rest of the test is unchanged. It still checks the grant survives until
yand is gone after.Checks:
bun scripts/gate.tsandbun x tsc --noEmitboth pass.test/egress-admin.test.ts,test/tui-egress.test.tsandtest/tui-deploys-egress.test.tspass: 11 tests, 0 failures.scripts/fast.tsnamed for this diff (about 18 minutes). The forge's check on this push covers them.🤖 Generated with Claude Code
Continues #8086