Repository navigation
feat(desktop): narrow Files changed list beside the terminal - #9199
harshithmullapudi wants to merge 3 commits into
Conversation
The changes-list pane (a list-only Changes view) was registered but nothing could open it. Add it to RIGHT_PANE_OPTIONS so it shows in the + menu and the right-pane new tab, for a narrow, persistent file list beside the agent terminal without an open diff (GH #9198, SUPER-3078).
… area openBesidePane delegated to store.openPane, and the right pane area's placeInTabs ignores `beside` and opens a new tab. A file clicked in the Files changed list then opened a Changes tab that hid the list. Reuse an unpinned pane of the same kind in the anchor's tab, else split it in to the left, in openBesidePane itself. The center store behaves as before.
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Add changes-list pane .../RightPaneNewTab/types.ts, .../RightPaneNewTab/paneOptions.ts, .../RightPaneNewTab/paneOptions.test.ts |
RightPaneKind includes changes-list. The pane options include “Files changed,” and createRightPane returns data with that kind. Tests check the option and generated pane. |
Update beside-pane placement .../placeInTabs/placeInTabs.ts, .../placeInTabs/placeInTabs.test.ts |
When a valid anchor and tab exist, placeInTabs reuses a matching unpinned pane or creates a split beside the anchor. Tests check pane reuse and placement. |
Estimated code review effort: 2 (Simple) | ~10 minutes
Change: Feature · Severity of issue fixed: Medium
Possibly related issues
- Clicking a file in the Changes sidebar opens a split pane even when Changes is set to open in a new tab #9039: The changes affect where a diff opens beside its anchor, but do not add the requested “New tab” preference.
- revert the changes screen #9195: The new list-only pane option addresses part of the Changes interface concern by offering a changed-files list without the merged diff view.
Suggested reviewers: saddlepaddle
Merge Risk: 
Minimal · up to fcd8e
-
The new files list opens diffs beside it. No actionable merge-blocking issue was established.
Pre-merge checks: 
4 · 
1
-
Failed checks: 1 warning Passed checks: 4 passed-
Full details: Description check
-
Explanation
The description is complete and relevant. It explains what changed, why it changed, implementation decisions, testing, manual QA, linked work, and known limitations. It does not reproduce the template's separate Checklist section, but it covers the key required information.
Full details: Linked Issues check
-
Explanation
Issue
#9198asks for a narrow, persistent, list-only changed-files view that stays visible when a diff is closed. At head, RIGHT_PANE_OPTIONS in paneOptions.ts adds { kind: "changes-list", label: "Files changed", Icon: LuFiles }, so the + menu offers the list-only pane. createRightPane returns { kind, data: { kind } } for "changes-list". RightPaneKind includes the new kind. The list pane opens beside an anchor through openPane({ beside }). placeInTabs.ts now honors beside in the right area. It reuses an unpinned pane of the same kind in the anchor's tab, or splits a new pane with position "top" above the anchor. Closing the diff leaves the list pane in place, so the list stays visible without an open diff. The issue's proposed "compact" mode is not built. The PR instead uses the existing list-only pane, which the PR description says fits at about 280 px. The PR documents this choice, and the code delivers the required visibility behavior. Tests cover the new option (paneOptions.test.ts) and the stacking and reuse behavior (placeInTabs.test.ts). The previous assessment cited openBesidePane.ts placement logic. That logic is no longer in the reviewed change set, so this assessment relies on the current placeInTabs.ts and paneOptions.ts. Not verified: the rendered diff stats in ChangesListPane. That file is not in the change summary, and this assessment does not inspect it.
Full details: Out of Scope Changes check
-
Explanation
The changed files map to the issue objective. paneOptions.ts and types.ts expose the existing changes-list pane. placeInTabs.ts and its test implement placement for panes opened beside an anchor, which the list-to-diff flow requires. paneOptions.test.ts covers the new option. The placeInTabs behavior also applies to ReviewPane, which calls openBesidePane. In the right area, Review items now stack above the review list instead of opening a new tab. This is a side effect of the shared placement path, and the PR description discloses it. It is connected to the same mechanism and is not an unrelated feature change. The PR objectives mention a Vale lint failure on CTASection.tsx. That file is not part of this PR's changes and does not bear on the issue's coding requirements. No unrelated coding change was found in the reviewed change summary.
-
Full details: Docstring Coverage
-
Explanation
Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 2 functions across 5 files.
Resolution
Write docstrings for the functions missing them to satisfy the coverage threshold.
-
Finishing Touches
-
Generate docstrings
-
- Commit to this branch
- Create a new PR
Generate unit tests (beta)
-
- Commit to this branch
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
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.
🚀 Preview Deployment🔗 Preview Links
Preview updates automatically with new commits |
[Medium impact] The PR appears safe to merge. SummaryAdds “Files changed” to the right-pane choices. File clicks now open or reuse a pane beside the list instead of hiding it behind another tab.
Diagram%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Choose Files changed] --> B[Open list in right area]
B --> C[Click a file]
C --> D{Unpinned diff in this tab?}
D -->|Yes| E[Update and focus that pane]
D -->|No| F[Split a diff left of the list]
E --> G[List stays in the same tab]
F --> G
Reviews (1) · Last reviewed commit: "fix(desktop): open beside-panes beside t..." · Reviewed by Greptile |
|
Review verdict: minor issues. The change is small and works in the desktop dev build: "Files changed" shows on the right-pane new tab, a file click splits a diff beside the list, a second click reuses that diff, and closing the diff leaves the list open. The new regression test fails on Findings:
CI: everything passes except Vale prose lint. Vale fails on a missing Full report with screenshots: https://app.superset.sh/page/pr-9199-review-narrow-files-changed-list-8yetpn |
…chor Review feedback: openBesidePane copied the beside branch of the panes store and skipped getPaneKey reuse. Revert it to delegate to openPane, and make the right pane area's placeInTabs honor `beside` instead: reuse an unpinned pane of the kind in the anchor's tab, else split it in above the anchor. Stacking keeps a ~280 px Files changed list on screen, where a side-by-side split pushed it past the window (panes are >= 260 px).
Links
Summary
changes-listpane) to the right-pane options, so it shows in the + menu and on the right-pane new tab.placeInTabshonouropenPane({ beside }), so a file clicked in that list opens the diff stacked above the list instead of in a new tab that hides the list.Why / Context
People want a narrow, persistent file list next to the agent terminal without an open diff viewer. The list inside
DiffPanehides below 540 px, and the Files overlay closes after each pick.ChangesListPanealready showed only the list, but nothing could create it. This is option 1 from the issue triage.How It Works
RIGHT_PANE_OPTIONSgets{ kind: "changes-list", label: msg({ message: "Files changed" }), Icon: LuFiles }, andcreateRightPanereturns{ kind, data: { kind } }.RightPaneKindincludes the new kind.ChangesListPanecallsopenBesidePane, which callsstore.openPane({ beside }). In the right area the store'splacePaneisplaceInTabs, which ignoredbesideand opened a tab, so the first click opened a separate Changes tab.placeInTabsnow reuses an unpinned pane of the same kind in the anchor's tab, or splits a new one in above the anchor. It stacks rather than splitting sideways because panes are at least 260 px wide, and a side-by-side split pushed a ~280 px list past the window edge.openBesidePaneis unchanged, sogetPaneKeyreuse throughopenPanestill applies. The center store is not affected.Manual QA Checklist
Done end to end over CDP in the desktop dev build (screenshots on the page):
Testing
bun test src/renderer/routes/_authenticated/_dashboard/v2-workspace(1159 pass)placeInTabs.test.tscase "stacks a beside pane above its anchor, then reuses it" (fails before the fix, passes after);paneOptions.test.tscovers the new optionbun run typecheck(desktop),biome checkon changed filesbun run check:i18n: "Files changed" already exists in every catalog (it is the pane title), 0 missing, no catalog changesDesign Decisions
besideinplaceInTabs, not inopenBesidePane: this keeps a single placement path throughopenPane(includinggetPaneKeyreuse). After review it is the only right-area placement, andopenBesidePaneis the only production caller that passesbeside.compactmode: at 280 px the normal toolbar still fits, and compact mode drops the commit/base-branch filter.Known Limitations
ReviewPanealso usesopenBesidePane: in the right area, items opened from Review now stack above the review list instead of opening a new tab.Summary by CodeRabbit