Skip to content

feat(web): make the session view in turns the only one - #480

Merged
kalaspuff merged 2 commits into
mainfrom
fctl/992-now-when-we-have-the-new-session-viewer
Nov 8, 2026
Merged

kalaspuff merged 2 commits into
mainfrom
fctl/992-now-when-we-have-the-new-session-viewer

Conversation

@fctl-sh

@fctl-sh fctl-sh Bot commented Nov 8, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Every session now opens in the view that reads in turns, which shipped as an opt-in in #474–#477. The classic session page and everything that switched between the two views are gone: the ⋯ menu's "Try the new view" / "Back to the classic view", the v shortcut, and the New session view toggle in Settings → Appearance. Browsers that kept a pick (fctl:session-view in localStorage) forget it when the app loads, so the app no longer stores anything about the view.

The new view's code had been reusing the classic page's details rail and share dialog. It now lives in routes/session.tsx, together with that shared code. The code only the classic page used goes too: its Transcript component, the rows that showed thoughts and calls streaming in inside the transcript (the new view shows them in the line above the message box), and the context that let each page pick its own busy mark (it is always the dot wave now). The docs (getting started and llms.txt) describe the one view.

To verify, I ran the classic page's tests against the new page: closing the overlays when another session opens, the runner-disk and paused-sandbox notes, and the c, d and r keys. The transcript's tests now run against the transcript in turns, minus the two that covered streaming rows the new view doesn't have. cargo xtask check web and cargo test -p xtask (docs links) pass. I looked at the page in cargo xtask demo, in both themes and at a phone's width, with main's web app beside it against the same stack.

The privacy policy on fctl.sh lists the view's localStorage key. Its pull request below removes that line, and it should merge once this change is deployed:

Screenshots

At f06936e, in cargo xtask demo's world: shop#231 mid-turn, as everyone who hadn't opted in saw it before (classic) and as everyone sees it now.

Before After
Before: the classic session page, light After: the session in turns, light
Before: the classic session page, dark After: the session in turns, dark
Before: the classic session page on a phone, dark After: the session in turns on a phone, dark

Settings → Appearance without the New session view toggle:

Before After
Before: Appearance with the New session view toggle After: Appearance with the theme and the clock only

Worth confirming

  • Decision: No way back: there is no setting or hidden switch to bring back the classic page, and v is now free rather than reassigned.
  • Decision: The app removes the leftover fctl:session-view key at startup instead of leaving it in people's browsers, so the privacy policy can drop its line. That cleanup can be removed after a few releases.
  • Assumption: Nothing people relied on was only on the classic page. On a computer, its header also showed the description, the status's reason, the branch and the reconnecting, runner and disk notes. The new view shows the first of those notes in the header, the description and branch on the cover, and the rest in the details.

fctl session


Note

Medium risk. It replaces the session page, the app's main screen, with the page that was an opt-in until now and deletes the classic page and its switch, so a gap in the merged page reaches every user at once.

What it does. Makes the session view in turns the only one: the classic session page, its transcript, the Settings toggle, the menu entries and the v shortcut are removed. The code the new page shared with the classic one (details rail, share dialog) moves into routes/session.tsx, and main.tsx clears the old fctl:session-view browser setting at startup. Docs and tests are updated to match, and the two page test files are merged into one.

Classic view removed. There is no way back to the classic session page, and a privacy policy change in fctl-site#115 should merge only after this is deployed.

fctl review's first look at dbebbed · 30 files, +1500 −2797 · Review agent settings

The session page is the view that reads in turns for everyone: the classic
page, the switch between the two (the ⋯ menu's item, v, and the setting in
Settings → Appearance) and what only the classic page used go. Browsers
forget the pick they kept (fctl:session-view).

The classic page's tests of the details, the share dialog, the runner's disk
and the page's keys run against the page in turns, and the transcript's own
tests against the transcript in turns.
@fctl-review

This comment has been minimized.

Comment thread docs/llms.txt Resolved
@kalaspuff
kalaspuff merged commit 389b216 into main Nov 8, 2026
13 checks passed
@kalaspuff
kalaspuff deleted the fctl/992-now-when-we-have-the-new-session-viewer branch November 8, 2026 01:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant