Repository navigation
feat(desktop): per-lane visibility toggles on the workspaces board - #6568
Conversation
Linear-style lane hiding: each board lane gets a checkbox (with its status icon) in the Display dropdown, backed by hiddenLanes in the filter store. Toggling keeps the menu open; reset restores all lanes.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (10)
Included review availability: Your plan includes up to 10 reviews per rolling hour; 8 remain after this review. 📝 WalkthroughWalkthroughThe V2 Workspaces page now supports board-lane visibility controls, archive-aware board columns, and synchronized board or list view state in the URL and filter store. ChangesV2 Workspaces filtering and view state
Estimated code review effort: 3 (Moderate) | ~20 minutes Merge Risk: ⚪ Minimal · up to This change adds optional per-lane visibility controls to the workspaces board, with hidden lanes restored through the Display menu. No actionable merge-blocking risk remains after normal checks and review. Sequence Diagram(s)sequenceDiagram
participant V2WorkspacesHeader
participant v2WorkspacesFilterStore
participant V2WorkspacesBoard
participant getVisibleBoardColumns
V2WorkspacesHeader->>v2WorkspacesFilterStore: toggleLane(lane)
v2WorkspacesFilterStore-->>V2WorkspacesBoard: update hiddenLanes
V2WorkspacesBoard->>getVisibleBoardColumns: provide archive window and workspace counts
getVisibleBoardColumns-->>V2WorkspacesBoard: return archive-aware columns
V2WorkspacesBoard->>V2WorkspacesBoard: render columns excluding hidden lanes
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
🧹 Preview Cleanup CompleteThe following preview resources have been cleaned up:
Thank you for your contribution! 🎉 |
* docs: weekly update for PRs merged 2026-08-12 to 2026-08-19 - usage.mdx (new): Usage page - quota meters, multi-account switching, expired sign-in copy command, token-cost analytics, machine resources (#6530, #6567, #6585, #6628) - agent-integration.mdx: interrupted agent sessions now auto-resume; Resume button/banner replaced by Resuming pill + failure Retry (#6572) - automations.mdx: Triggers list on the detail page - multiple schedules, Add Trigger, explicit Save triggers; Custom label; COUNT/UNTIL and no-upcoming-run rules rejected (#6534, #6542, #6618) - workspaces.mdx: Board default + Filter/Display menus, Pinned filter, per-lane visibility toggles (#6561, #6568); CLI/automation sessions auto-place in the sidebar (#6558) - first-workspace.mdx: stale Auto-run command line reworked (toggle now lives on tasks surfaces only) Trigger event providers (Slack/Linear/GitHub/etc.) deliberately not documented: gated to internal accounts by automation-event-triggers. * docs: tighten wording in the weekly update * docs: add Usage page screenshot captured from the live app
Links
Summary
BoardColumnIconstatus glyph, so any lane can be hidden — not just the empty archived ones.Why / Context
#6563 fixed the empty Merged/Deleted lanes left behind by the archived filter, but hiding was implicit and hard-coded to those two lanes. The actual intent is user-controlled column visibility. Linear's board (our reference) offers per-column "Hide column" plus a "Show empty columns" toggle; this PR brings the per-lane control to our board in the Display menu where the other board options already live.
How It Works
v2WorkspacesFilterStoregainshiddenLanes: V2WorkspacesBoardLane[]andtoggleLane(). The lane union is defined self-contained in the store (mirroringBoardColumnKey) to avoid the store →deriveBoardColumn→useAccessibleV2Workspaces→ store import cycle;reset()restores all lanes.V2WorkspacesHeaderrenders the Lanes checkbox section only in board view, reusingBOARD_COLUMN_LABELSandBoardColumnIconso the menu rows match the column headers 1:1.onSelectis prevented so the menu stays open while toggling several lanes.V2WorkspacesBoardfiltersgetVisibleBoardColumns(...)(from fix(desktop): hide empty archived workspace lanes #6563) byhiddenLanes.Manual QA Checklist
Verified end-to-end over CDP against the dev app (renderer on this branch, real signed-in session):
Testing
bun run --cwd apps/desktop typecheckbun testfor the v2-workspaces suite (16 pass: newtoggleLane/reset tests + existing store, board-column, and filter tests)toggleLanemakes the new test failbiome check --writeon all touched filesKnown Limitations / Follow-ups
hiddenLanesis in-memory only — not persisted to the URL or across restarts (same as other filter state pre-fix(desktop): hide empty archived workspace lanes #6563; URL persistence is a natural follow-up).Summary by cubic
Adds per-lane visibility toggles to the Workspaces board and sets Board as the default view with archived items hidden by default. Previously only empty Merged/Deleted lanes were implicitly hidden when archived were hidden; now users can show/hide any lane from the Display menu.
Review notes
hiddenLanesandtoggleLane(lane); defaults nowviewMode: "board"andarchivedWindow: "none";reset()clears filters and hidden lanes, preserves the chosen view, and restores archived to "none".getVisibleBoardColumns(...); whenarchivedWindow === "none", empty Merged/Deleted lanes are omitted; visible lanes are further filtered byhiddenLanes.viewaccepts"board"or"list"; default values are omitted from the URL (viewomitted when board,archivedomitted when none); parsing handles both.getVisibleBoardColumnsand the filter store. Hidden lanes are not persisted (URL/app state persistence is a follow-up).Written for commit cd68a98. Summary will update on new commits.
Summary by CodeRabbit