feat(lanes): name the files behind a lane's uncommitted counts
GET /api/lanes/:id/git now returns `files`, the raw `git status --porcelain` lines the dirty/untracked counts were already parsed from, capped at 20 so a lane mid-`npm install` cannot ship thousands of paths through a polled endpoint. The lane card hovers them as the tooltip on its "N modified · N untracked" text, appending "… +N" when the cap bit. No new subprocess and no new endpoint — statusCounts was counting those lines and throwing them away.
This commit is contained in:
@@ -539,7 +539,20 @@ export default function LaneCard({
|
||||
<span className="shrink-0 text-fg-muted">{git.head}</span>
|
||||
<span className="truncate text-fg-muted">{git.subject}</span>
|
||||
{(git.dirty > 0 || git.untracked > 0) && (
|
||||
<span className="shrink-0 text-status-warning/80">
|
||||
<span
|
||||
className="shrink-0 cursor-help text-status-warning/80"
|
||||
/* Native title: the counts' own file list, capped server-side.
|
||||
A hover card would need a portal to escape this truncating
|
||||
row — the browser's tooltip already escapes it for free. */
|
||||
title={
|
||||
git.files?.length
|
||||
? git.files.join("\n") +
|
||||
(git.dirty + git.untracked > git.files.length
|
||||
? `\n… +${git.dirty + git.untracked - git.files.length}`
|
||||
: "")
|
||||
: undefined
|
||||
}
|
||||
>
|
||||
{t("git.uncommitted", { dirty: git.dirty, untracked: git.untracked })}
|
||||
</span>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user