From 0ce45020afb9cd8c32cce4b333753dd7463389e8 Mon Sep 17 00:00:00 2001 From: Lex Christopherson Date: Wed, 11 Mar 2026 01:31:03 -0600 Subject: [PATCH] fix: keep selected options lit when notes field is focused When Tab opens the notes field, committed/checked options now stay visually prominent (text color + muted description) while unselected options dim. Previously Tab greyed everything out equally. - optionUnselected: respect isCommitted when isFocusDimmed - checkboxUnselected: respect isChecked for description color when isFocusDimmed --- package-lock.json | 25 ++++++++++++++++++++++--- package.json | 2 +- src/resources/extensions/shared/ui.ts | 6 +++--- src/wizard.ts | 6 ------ 4 files changed, 26 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index a63e19e06..8df62024f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,17 @@ { "name": "gsd-pi", - "version": "0.1.5", + "version": "0.2.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "gsd-pi", - "version": "0.1.5", + "version": "0.2.2", "hasInstallScript": true, - "license": "BUSL-1.1", + "license": "MIT", "dependencies": { "@mariozechner/pi-coding-agent": "^0.57.1", + "gsd-pi": "^0.1.7", "playwright": "^1.58.2" }, "bin": { @@ -2575,6 +2576,24 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "license": "ISC" }, + "node_modules/gsd-pi": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/gsd-pi/-/gsd-pi-0.1.7.tgz", + "integrity": "sha512-zHpdoOFc6yFnfRJ9oWEEHLv7S8pNr3ZzToZESSofFVbRbPq6VDF+5xZehcXR8ADNpl67XeVG6JEmIZRsnvjLdw==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@mariozechner/pi-coding-agent": "^0.57.1", + "playwright": "^1.58.2" + }, + "bin": { + "gsd": "dist/loader.js", + "gsd-cli": "dist/loader.js" + }, + "engines": { + "node": ">=20.6.0" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", diff --git a/package.json b/package.json index 8a310e909..3fffa0a19 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gsd-pi", - "version": "0.2.1", + "version": "0.2.2", "description": "GSD — Get Stuff Done coding agent", "license": "MIT", "repository": { diff --git a/src/resources/extensions/shared/ui.ts b/src/resources/extensions/shared/ui.ts index ad9d20012..e350467a9 100644 --- a/src/resources/extensions/shared/ui.ts +++ b/src/resources/extensions/shared/ui.ts @@ -266,8 +266,8 @@ export function makeUI(theme: Theme, width: number): UI { optionUnselected: (num, label, description, opts = {}) => { const { isCommitted = false, isFocusDimmed = false } = opts; const marker = isCommitted ? theme.fg("success", ` ${GLYPH.check}`) : ""; - const labelColor = isFocusDimmed ? "dim" : "text"; - const descColor = isFocusDimmed ? "dim" : "muted"; + const labelColor = isFocusDimmed ? (isCommitted ? "text" : "dim") : "text"; + const descColor = isFocusDimmed ? (isCommitted ? "muted" : "dim") : "muted"; return [ ...wrap(`${INDENT.option} ${theme.fg(labelColor, `${num}. ${label}`)}${marker}`), ...wrapIndented(`${INDENT.description}${theme.fg(descColor, description)}`, INDENT.description), @@ -287,7 +287,7 @@ export function makeUI(theme: Theme, width: number): UI { checkboxUnselected: (label, description, isChecked, isFocusDimmed = false) => { const box = isChecked ? theme.fg("success", GLYPH.checkedBox) : theme.fg("dim", GLYPH.uncheckedBox); const labelColor = isFocusDimmed ? (isChecked ? "text" : "dim") : "text"; - const descColor = isFocusDimmed ? "dim" : "muted"; + const descColor = isFocusDimmed ? (isChecked ? "muted" : "dim") : "muted"; return [ add(`${INDENT.option} ${box} ${theme.fg(labelColor, label)}`), ...wrapIndented(`${INDENT.description}${theme.fg(descColor, description)}`, INDENT.description), diff --git a/src/wizard.ts b/src/wizard.ts index 494ad6d66..31439d5df 100644 --- a/src/wizard.ts +++ b/src/wizard.ts @@ -156,12 +156,6 @@ export async function runWizardIfNeeded(authStorage: AuthStorage): Promise ` These unlock additional tools. All optional — press ${cyan}Enter${reset} to skip any.\n\n` ) - // Show what each key unlocks - for (const key of missing) { - process.stdout.write(` ${dim}•${reset} ${cyan}${key.label}${reset} ${dim}— ${key.description}${reset}\n`) - } - process.stdout.write('\n') - // ── Prompts ───────────────────────────────────────────────────────────────── let savedCount = 0