Repository navigation
feat(web): make the session view in turns the only one - #480
Merged
Merged
Conversation
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.
This comment has been minimized.
This comment has been minimized.
kalaspuff
approved these changes
Nov 8, 2026
kalaspuff
deleted the
fctl/992-now-when-we-have-the-new-session-viewer
branch
November 8, 2026 01:15
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
vshortcut, and the New session view toggle in Settings → Appearance. Browsers that kept a pick (fctl:session-viewin 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: itsTranscriptcomponent, 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 andllms.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,dandrkeys. 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 webandcargo test -p xtask(docs links) pass. I looked at the page incargo xtask demo, in both themes and at a phone's width, withmain'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.Settings → Appearance without the New session view toggle:
Worth confirming
vis now free rather than reassigned.fctl:session-viewkey 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.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
vshortcut are removed. The code the new page shared with the classic one (details rail, share dialog) moves intoroutes/session.tsx, andmain.tsxclears the oldfctl:session-viewbrowser 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