fix(web): stop fork markers rendering as UI text, and remember the right panel's shape - #137
Merged
Merged
Conversation
…ght panel's shape Four T3-CUSTOM marker comments from the upstream merge landed in JSX children position inside the traits chip, so React rendered them as literal "// T3-CUSTOM(expbkt3): ..." labels beside the model picker in the composer, in Settings > General, and in each project's new-thread defaults. Removes them and adds a fork-owned test that scans every .tsx for markers in children position, so the class cannot come back. Also makes the right panel open the way it was last used. Upstream tracks "maximized" as a per-thread key in component state, so full screen was forgotten on every thread switch and reload; the choice now lives in local storage behind a fork-owned hook, and closing a panel no longer discards it. Width already persisted upstream under t3code:preview-panel-width and is unchanged.
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
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. |
…text Moves the JSX-children guard out of a web unit test and into the marker checker that already runs repo-wide in CI. The web app's Effect lint bans raw node:fs imports, and this is marker discipline rather than app behaviour, so it belongs beside the existing rule. Rendered markers are never baselined: they are a visible defect, not merge debt.
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.
Problem
Two things, both reported from expbkt3 after the upstream merge.
1. Fork marker comments were being rendered into the UI. Four
// T3-CUSTOM(expbkt3): ...comments landed in JSX children position inside the traits chip, so React rendered them as literal text next to the model picker — visible in the composer, in Settings → General (where the stray text also wrecked the "Default agent model" row layout), and in every project's new-thread defaults. My mechanical marker pass during the merge put them there; markers in attribute position and in plain TypeScript are fine, children position is not.2. The right panel forgot how you like to work. Upstream keeps "is the right panel maximized" as a per-thread key in component state, so opening a plan full-screen in one thread and then opening a plan in another gave you side-by-side again — and a reload always reset it.
How
Removes the four comments, and adds
apps/web/src/forkMarkerPlacement.test.ts: it walks every.tsxunderapps/web/srcand fails on anyT3-CUSTOMmarker sitting in JSX children, while allowing the legitimate attribute-position ones. Verified it catches the regression by re-introducing one deliberately — it failed and named the exact line.For the panel, the maximized choice moves into local storage behind a fork-owned hook (
rightPanelLayoutPreference.ts), so every surface — plan, browser, files — opens in the shape you last chose, and closing a panel no longer discards it. Width needed no work:PreviewPanelShellalready persists it globally undert3code:preview-panel-width.Kept deliberately cheap to re-merge: one new fork-owned module plus four marked lines in
ChatView.tsx(the state declaration, the derivation, the toggle, and the close path), rather than logic threaded through the component.Verification
apps/webtypechecks clean;vp checkclean on the touched files. New tests pass (4 preference + 1 placement guard), as doChatView.logic,TraitsPicker,Sidebar.logicandsession-logic(263 tests). Fork marker check passes.Model: Claude Opus 5 in Claude Code.
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.