Repository navigation
Conversation
A persisted sidebarProjectScopeKey that resolves to a scratch workspace kept the new sidebar filtered to that one catalog entry across reloads. The snapshot reset only cleared a scope whose group was missing, and Scratch stays in the catalog. Clear that scope the same way once snapshots are ready.
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a focused sidebar bug fix that clears only stale or Scratch-only persisted scopes after project snapshots are ready, leaving valid project scopes unchanged. The logic is small, isolated, and covered by targeted tests. Notes:
You can add or adjust custom eligibility rules. Learn more. |
|
Note Written by Hi! We are cleaning up open PRs, and this one does not say which model or harness was used to create it. If this change is really important, we recommend rebuilding the PR with a newer model and noting the model and harness in the PR description. |
|
Note Written by Reopening, this was closed by mistake. Sorry for the noise! |
Dismissing prior approval to re-evaluate 69dd86d
What Changed
The new sidebar clears a persisted
sidebarProjectScopeKeyonce project snapshots are ready and that key resolves only to Scratch ("No project") workspaces.shouldClearPersistedSidebarProjectScopeinSidebar.logic.tskeeps the existing missing-group reset and adds the scratch case, usingisScratchProjectagainst each member's own environment scratch root. The sidebar effect calls that helper and sets the scope to null. Scratch stays in the scope combobox. The legacy sidebar is unchanged.Why
A scope key that points at Scratch is a real catalog group, so the missing-group reset never fires. The sidebar stays filtered to that one project across reloads and hides every other project. Fixes #16692.
Verification
Base:
upstream/main73e097b8c86000ddc4b38926ba86e1595109d78e. Head:69dd86dd656ce8ad8f9cf54a148d34ae62b8d7c2. Platform: Linux 6.12.94+ x86_64. Node for tests and lint: v24.13.1. Capture server: Node v24.21.0.vp test run apps/web/src/components/Sidebar.logic.test.ts— 1 file, 152 tests passed (includes the scratch-scope cases: keep until snapshots are ready, keep a null scope, clear a missing group, clear a scratch workspace, keep a normal project, compare each member to its own environment scratch root, keep a mixed group).vp run --filter @t3tools/web typecheck— exit 0.PATH="/workspace/node_modules/.bin:$HOME/.nvm/versions/node/v24.13.1/bin:$PATH" vp run --filter @t3tools/web test— 467 files, 6497 tests passed. An earlier run through the globalvpbinary failed to resolve workspacejsdom; the workspace binary is the run that passed.vp run knip:check— exit 0.vp check— exit 0. All 5139 files formatted. 0 errors and 893 warnings (pre-existing).Manual check: isolated web app, fixture repo
/tmp/fx(projectfxwith its bootstrap thread) plus the local scratch project. Typed "scratch note" into the No project draft so the sidebar showed both rows, chose "No project" in the scope picker (the app wrotet3code:ui-state:v1), then reloaded. On73e097b8cthe key stayed6a27e5c9-8b10-4fa0-8ffb-17f3a57de2ca:/tmp/t3state/home/scratchand the sidebar showed only the No project draft. On69dd86dd6the same pick cleared the key, and after reload both the No project draft and the fx thread were visible.Limitations: Working section (beta) stays off by default, and an empty Working shelf does not render a header, so the captures show the inbox (fx hidden, then fx visible) rather than a labeled Working header. The scratch row is a composer draft with text, because sending a thread needs a provider CLI. Pairing the isolated server needed Node 24.21.0; Node 24.13.1's
node:sqlitecannot bind the boolean in the pairing consume query. Mobile and the legacy sidebar were left unchanged.UI Changes
Before

[before.mp4 (download)](https://raw.githubusercontent.com/macodev00/t3code/47e8656fe75d817bfc60f90ec1aadef37b7ea303/issue-16692/before/recording.mp4)After

[after.mp4 (download)](https://raw.githubusercontent.com/macodev00/t3code/47e8656fe75d817bfc60f90ec1aadef37b7ea303/issue-16692/after/recording.mp4)Checklist
@t3tools/websuite, typecheck,knip:check, andvp check.pr-assets, not on this branch.Model and harness: Grok 4.7 (high effort) in a Cursor Cloud Agent.