From 6f5a3d2bd8bcb010e31b82cb2c9ff0bd66da9cd6 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Thu, 24 Sep 2026 12:42:13 +0000 Subject: [PATCH] fix(commits): scroll changed-files list in commit detail Make .cd-files fill the upper react-resizable-panels slot (height 100%, min-height 0, overflow-y auto) so a multi-file commit can scroll every path without clipping. Mirror the same fill on .cd-diff / .cd-diff-scroll and mark the split handle as horiz so the row-resize hit area matches other vertical splits. Co-authored-by: Daniels --- README.md | 2 +- ROADMAP.md | 9 ++++++++- TASKS.md | 1 + docs/learnings.md | 8 ++++++-- ui/src/styles/features.css | 13 ++++++++++--- ui/src/views/CommitDetail.tsx | 2 +- website/docs/commits-and-history.md | 2 +- 7 files changed, 28 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 59713f4..1c04540 100644 --- a/README.md +++ b/README.md @@ -318,7 +318,7 @@ the resolved app appearance automatically. defaults and the existing changed-file and full-diff dialog. - **Commit graph** — SVG lanes with branch/tag chips, revealable inline stash nodes with non-mutating diff inspection, a - resizable commit detail panel with lazy GPG/SSH/X.509 verification, + resizable commit detail panel with a scrollable changed-files list, lazy GPG/SSH/X.509 verification, subject/body copy, and exact patch export; in-graph search by message / author / hash; a multi-selection toolbar/menu for ordered cherry-pick, two-commit comparison, metadata copy, and patch-series export; a diff --git a/ROADMAP.md b/ROADMAP.md index ba1e019..337bfd6 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -46,7 +46,8 @@ system ported verbatim. No real feature surface yet. - ◐ **Commit graph** - ☑ Table view from `repo_log` - ☑ SVG lane/edge rendering with branch colors - - ☑ Inline commit detail panel (changed files, message body) + - ☑ Inline commit detail panel (changed files, message body; file list + scrolls in the upper split — DAN-79) - ☑ Keyboard navigation (focuses current commit on open; ↑/↓ moves row focus; Enter opens details; Esc closes details) - ☑ Multi-select (⌘/Ctrl-click toggles, Shift-click ranges, Shift+↑/↓ @@ -3141,6 +3142,12 @@ cross-platform performance certification remain explicit follow-ups. - **Naming & trademark.** USPTO/EUIPO/WIPO search before 0.5 public launch. +**Commit-detail file list scrolls (2026-09-24):** The All Commits detail +panel's changed-files list now fills the upper vertical split and scrolls +when a commit touches more paths than fit (`.cd-files` `height: 100%` + +`overflow-y: auto`; DAN-79). Diff pane scroll and the split resize handle +are unchanged. + **Worktrees UI revision (2026-09-04):** Reworked PR 113's cramped table into readable two-line rows: branch and directory together, working changes and latest commit in separate columns, explicit current/locked indicators, and diff --git a/TASKS.md b/TASKS.md index 33a058a..073d882 100644 --- a/TASKS.md +++ b/TASKS.md @@ -1086,6 +1086,7 @@ community plugins, performance and platform certification from Git feature gaps. exactly two expose Compare, and any selection exposes ordered bulk cherry-pick) - ☑ Inline commit detail panel (`CommitDetail.tsx` — subject, body, meta, file list, `` of the focused file; right-side resizable Panel `strand:commits-split`) +- ☑ Commit-detail changed-files list scrolls inside the upper vertical split (`.cd-files` `height: 100%` + `min-height: 0` + `overflow-y: auto`; `.cd-diff` fills the lower panel; DAN-79) - ☑ Keyboard nav (`Commits` focuses the current commit on open; ↑/↓ move row focus; Enter opens details; Esc closes details) - ☑ Commit-detail actions: Checkout (detached) + "Tag…" (opens the New-tag diff --git a/docs/learnings.md b/docs/learnings.md index 7f6ba98..750a52f 100644 --- a/docs/learnings.md +++ b/docs/learnings.md @@ -587,8 +587,12 @@ lives inside a Panel: } ``` -Existing sites: `.body`, `.lc-main`, `.lc-files`, `.main`, `.sidebar`. -Copy the pattern when adding a new resizable region. +Existing sites: `.body`, `.lc-main`, `.lc-files`, `.lc-files-section`, +`.cd-files`, `.cd-diff`, `.main`, `.sidebar`. +Copy the pattern when adding a new resizable region. The commit-detail +changed-files list (DAN-79) is the same trap: `.cd-files` used to be +`flex-shrink: 0` with no overflow, so a tall file list clipped inside +the upper `Panel` instead of scrolling. --- diff --git a/ui/src/styles/features.css b/ui/src/styles/features.css index 4e19c3c..c39231b 100644 --- a/ui/src/styles/features.css +++ b/ui/src/styles/features.css @@ -1444,9 +1444,13 @@ font-family: var(--font-ui); } .cd-files { + /* Panel children are display:block — height:100% fills the upper split + * so overflow-y can scroll when the commit touches more files than fit. */ + height: 100%; + min-height: 0; + overflow-y: auto; padding: 8px 0; border-bottom: 0.5px solid var(--border); - flex-shrink: 0; } .cd-file { display: grid; @@ -1500,12 +1504,15 @@ color: var(--del); } .cd-diff { - flex-shrink: 0; + height: 100%; + min-height: 0; display: flex; flex-direction: column; } .cd-diff-scroll { - flex-shrink: 0; + flex: 1; + min-height: 0; + overflow: auto; } .cd-head-row { display: flex; diff --git a/ui/src/views/CommitDetail.tsx b/ui/src/views/CommitDetail.tsx index 304a992..ff7f9bb 100644 --- a/ui/src/views/CommitDetail.tsx +++ b/ui/src/views/CommitDetail.tsx @@ -424,7 +424,7 @@ export function CommitDetail({ )} - +
{focused ? ( diff --git a/website/docs/commits-and-history.md b/website/docs/commits-and-history.md index 868dc65..6e223e5 100644 --- a/website/docs/commits-and-history.md +++ b/website/docs/commits-and-history.md @@ -39,7 +39,7 @@ Rows are decorated with chips: ### Commit detail panel -Selecting a commit (click or `Enter`) opens a detail panel on the right with the full message, a metadata grid, the list of changed files, and the diff of the focused file. The metadata includes a lazy GPG, SSH, or X.509 signature check: verified signatures show the signer, while bad, expired, revoked, untrusted, unavailable, and unsigned states stay distinct. Hover the signature for key, fingerprint, and trust details. Verification runs only for the opened immutable commit, never across the paged graph. +Selecting a commit (click or `Enter`) opens a detail panel on the right with the full message, a metadata grid, the list of changed files, and the diff of the focused file. When a commit touches more files than fit in the upper pane, that list scrolls independently of the diff below. Drag the divider between the list and the diff to give either more room. The metadata includes a lazy GPG, SSH, or X.509 signature check: verified signatures show the signer, while bad, expired, revoked, untrusted, unavailable, and unsigned states stay distinct. Hover the signature for key, fingerprint, and trust details. Verification runs only for the opened immutable commit, never across the paged graph. The panel can copy the subject or body separately and export the exact commit as an mbox-compatible `.patch`. It also re-roots the sidebar's **Files** tab to that commit; the short hash above the tree makes the historical context explicit. Historical trees are read-only, and opening a file keeps Content and Preview pinned to that revision. Image changes render as before/after previews. Drag the divider to resize the panel; the split is remembered. Press `Escape` to close it and return Files to the working tree.