From 4ab035130acff90c3e11b7075b125b52ec1c83d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20HOUZ=C3=89?= Date: Sun, 23 Aug 2026 18:31:06 +0200 Subject: [PATCH] =?UTF-8?q?Render=20a=20dimmed=20=E2=9C=93=20instead=20of?= =?UTF-8?q?=20blank=20space=20for=20deselected=20checkboxes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace empty space with pc.dim('✓') at three render sites in src/render.ts: repo sticky line, repo row, and extract row - Maintains column alignment while providing a visible, clickable target - Improves UI consistency for mouse support (issue #169) - All tests pass; no formatting or knip issues --- src/render.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/render.ts b/src/render.ts index 133607b..9441fb9 100644 --- a/src/render.ts +++ b/src/render.ts @@ -461,7 +461,7 @@ export function renderGroups( ); if (repoRowIndex >= 0 && repoRowIndex < scrollOffset) { const g = groups[cursorRow.repoIndex]; - const checkbox = g.repoSelected ? pc.green("✓") : " "; + const checkbox = g.repoSelected ? pc.green("✓") : pc.dim("✓"); // Fix: clip to termWidth so the sticky line never wraps — see issue #105. stickyRepoLine = clipToWidth( pc.dim(`▲ ${checkbox} ${pc.bold(g.repoFullName)} ${pc.dim(buildMatchCountLabel(g))}`), @@ -564,10 +564,8 @@ export function renderGroups( if (row.type === "repo") { const arrow = group.folded ? pc.magenta("▸") : pc.magenta("▾"); - // ✓ for selected, space for deselected — keeps the line clean while a - // green checkmark clearly signals selection. The space preserves column - // alignment so the repo name always starts at the same offset. - const checkbox = group.repoSelected ? pc.green("✓") : " "; + // Green ✓ for selected; dimmed ✓ for deselected — provides a clickable target in both states. + const checkbox = group.repoSelected ? pc.green("✓") : pc.dim("✓"); // On cursor rows, use bold+white for the repo name (dark bg applied // to the whole line via renderActiveLine; no inline bgMagenta needed). // On inactive rows, use bright purple (same as the bar) in bold. @@ -602,7 +600,7 @@ export function renderGroups( const ei = row.extractIndex!; const match = group.matches[ei]; const selected = group.extractSelected[ei]; - const checkbox = selected ? pc.green("✓") : " "; + const checkbox = selected ? pc.green("✓") : pc.dim("✓"); const seg = match.textMatches[0]?.matches[0]; const locSuffix = seg ? `:${seg.line}:${seg.col}` : ""; // Active extract row: locSuffix uses bold+white (same as path) for