Skip to content

feat(cli): setup progress spinners, Tab-to-select, and banner polish#296

Merged
andreybavt merged 4 commits into
mainfrom
taller-t-bar-banner
Jun 12, 2026
Merged

feat(cli): setup progress spinners, Tab-to-select, and banner polish#296
andreybavt merged 4 commits into
mainfrom
taller-t-bar-banner

Conversation

@andreybavt

Copy link
Copy Markdown
Contributor

Adds animated, ktx-orange progress spinners to the slow ktx setup waits — managed runtime install, embedding daemon start + first-run model download, the embeddings/LLM health checks, the connection-test gate, and source validation/clone/Metabase discovery — through a shared runWithCliSpinner helper and a TTY-aware createCliSpinner that falls back to a static, stderr-only spinner before raw-mode pickers, so the animated spinner's stdin grab can no longer corrupt the table-tree picker or the demo tour. It also unifies the LLM model-check progress so every backend (Claude subscription, Codex, Vertex, Anthropic) shows the same spinner, makes Tab the select/toggle key with consistent navigation hints across the setup prompts and tree pickers, and doubles the height of the setup banner's T crossbar. Spinner frames are recolored from clack's magenta to the mascot orange (#FF8A4C) via clack's typed styleFrame option and the static helper. All TypeScript, dead-code (knip + Biome), and Biome format gates pass, along with the full and slow CLI test suites.

The six interactive multi-select surfaces in `ktx setup` documented three
different hint voices, one had no hint at all, and they named two different
select keys (Space vs Tab). Tab is the only key that can toggle selection
without colliding with type-to-search input, so make it the single documented
select key everywhere and compose every hint from one shared fragment
vocabulary in prompt-navigation.ts.

- Register `updateSettings({ aliases: { tab: 'space' } })` so Tab toggles flat
  multiselects; the alias applies only to non-text prompts, leaving typed
  search input (schema/Notion) untouched.
- Add the missing hint to the agent-targets prompt and drop the stray
  "Space to select … Esc …" info line plus the now-dead writeSetupInfo helper.
- Replace the schema-scope ad-hoc hint with the searchable-multiselect voice
  and standardize "filter" -> "search" vocabulary.
- Delete DEFAULT_TREE_PICKER_HELP_TEXT and the unused TreePickerChrome.helpText
  seam; render the shared tree hint instead.
Rename runLlmHealthCheckWithProgress to validateModelWithProgress and
wrap the Claude subscription and Codex auth probes in the same spinner
progress as the Anthropic API and Vertex backends, so each backend shows
consistent "Checking <provider> LLM" output during setup.
Add a shared runWithCliSpinner helper and a TTY-aware createCliSpinner:
an animated clack spinner in a terminal, and a static stderr-only spinner
before raw-mode pickers (the table tree picker and demo tour), where the
animated spinner's stdin grab would otherwise corrupt the next prompt.

Wrap the slow setup waits in progress spinners: managed runtime install,
embedding daemon start + first-run model download, embeddings health
check, the connection-test gate, and source validation / dbt clone /
Metabase discovery. Recolor every spinner frame from clack's magenta to
the ktx mascot orange (#FF8A4C) via the static helper and clack's
styleFrame option.
@vercel

vercel Bot commented Jun 12, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
ktx-docs-site Ready Ready Preview, Comment Jun 12, 2026 2:39pm

Request Review

@andreybavt andreybavt merged commit 663eaff into main Jun 12, 2026
9 checks passed
@andreybavt andreybavt deleted the taller-t-bar-banner branch June 12, 2026 14:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants