Repository navigation
feat(web): add workspace panes and transitions - #28845
maria-rcks wants to merge 472 commits into
Conversation
|
Macroscope skipped reviewing this pull request. Per-review cost limit exceeded (workspace setting). This review would cost an estimated $37.18, which exceeds your per-review limit of $15.00. The top 3 files driving up this estimate:
Tip To get this pull request reviewed, you can:
|
ApprovabilityVerdict: Needs Human Approval Macroscope's review found this PR requires human approval — This adds workspace panes and transitions and changes the default panel animation duration from 0 to 150 ms. The changed default experience requires human confirmation. Needs human approval because:
Review your spending limits in Billing settings, or comment |
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Other scenariosNo All 64 scenario measurements
Baseline: unavailable · PR result: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
f6f00d4 to
b653b87
Compare
b653b87 to
f0dd9b6
Compare
f0dd9b6 to
ba88740
Compare
ba88740 to
91b0851
Compare
91b0851 to
814c2e3
Compare
…33595) Toggling the sidebar with a panel open pushed the panel past the window edge and left a grey band. Use a CSS width transition again, let React learn the strip width after resizing settles, and avoid measuring the closed overview.
…e whole thread (#32782) New tool calls repeated whole-thread filtering, steer-reply collection and background-group exclusion checks. Share the filtered entries, limit steer collection to the live response and defer scans that need compaction answers or notifications. Preserve the entry array when it contains no retried prompt.
…ic (#32786) Each open fold searched and filtered the entire prefix of the entry list on every update. Index entries once, then gather only the hidden entries of each open fold in timeline order.
…held diff notice into the panes
…cing The rule under the tabs now shows only once content scrolls under them, the merge footer loses its rule and tint, and every tab starts 16px below the tabs.
A provider behind a custom endpoint (such as a CLI proxy) has no limits of its own. The thread details row now reads "Not linked" and points at Settings → Providers → Usage providers instead of claiming the account has no subscription limits; the /usage-limits report on web and mobile carries the same notice.
Copy link, selection copy, image copy and save, the reachable address copy, and git results with no follow-up no longer show a success toast, matching main's #36527. Error toasts and the git result that offers a follow-up stay.
Split terminal and Split terminal vertically now sit in the palette's actions with their shortcuts. They split the terminal that had focus, or the focused pane's or thread's terminal, go disabled at four per group, and leave focus in the new terminal like the keys do.
…b focuses its message box
Part 6 of 6 of the T3 Code redesign. Chats, files, terminals and the browser open as panes in a workspace instead of fixed side panels.
The niri parts are behind Settings > Labs > Scrolling workspaces, off by default: the sideways scrolling strip and swipes, extra workspaces and the overview, and the layout tour and hints. With it off, panes shrink to fit; splits, tabs, side panes and per-project layout templates stay on for everyone. cmd+N and cmd+shift+O open main's project picker when there are several projects, and new threads replace the focused tab instead of opening a new one.
Needs approval: Theo for
vite.config.ts(lint ceilings only); Theo or Julius forpackages/contracts(ipc, keybindings, server, settings, including the newscrollingWorkspacesEnabledclient setting, which decodes to false).Stack
Do not merge: this stack still needs review. Each PR targets the one below it.
1-primitives-shell2-composer-timeline3-panels-pages4-settings-setup5-voice6-workspace-panes(this PR)Evidence
Captured against base
5ba6597504b681819ff657e5e0808c54b37edb42and headf6f00d4f4fe175e66f5d7fc6018ace6a1c841ca3, using separate seeded worktrees and the same replay scenarios at 1280 × 720. Dark mode unless labeled light. No code, PR, or branch changes.Chat, terminal, and the same server/package.json file: the fixed right panel becomes an independent workspace column.
Browser: the same example.com page remains usable beside the chat and terminal, with the file and browser represented as workspace tabs.
Workspace tab strip: overflow scrolling and active filename reveal were exercised with package.json, README.md, tsconfig.json, vite.config.ts, and the browser. Measured 466 px of tab content in a 326 px viewport; selecting vite.config.ts revealed its filename. Native drag reordered vite.config.ts before README.md and before tsconfig.json in separate passes. The base has no workspace pane tab strip; its fixed panel baseline is shown above.
Restore a closed chat: Ctrl+Shift+T reopened Replay: todo-list with its existing conversation. Closing and restoring a browser also retained its URL and page. Chat-tab restore has no equivalent on the base.
Layout introduction and guided tour are new on this layer. Opened Show me, advanced through all five steps, entered the overview lesson, and finished back in the workspace.
Usage adopts the floating settings shell. Both refs show the same real provider error, with matching selections, in dark mode.
Usage, matching light-mode pair.
Nine-second recording: native tab drag, horizontal column scrolling, closing the chat, and restoring it. Reviewed the exported sequence, then played the uploaded video to completion and checked seeking.
Findings and limits:
Codex could not read usage (JSON-RPC -32600). No usage data was fabricated.Verification
Every layer, rebased on main 9469095, passes typecheck, knip, lint and format on Blacksmith on its own. At layer 6, the web suite passes (unit and browser). The desktop suite fails one libsecret test, which fails the same way on main. GitHub CI runs the full suite on every layer.
Done with Claude Code (Opus 5.5) and Codex (gpt-6.1-sol high) children in T3 Code.
🤖 Generated with Claude Code