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