Skip to content

Fix terminal UI/UX consistency audit (#7)#8

Merged
jarkkosyrjala merged 3 commits into
mainfrom
fix/issue-7-terminal-ux-audit
Jul 10, 2026
Merged

Fix terminal UI/UX consistency audit (#7)#8
jarkkosyrjala merged 3 commits into
mainfrom
fix/issue-7-terminal-ux-audit

Conversation

@jarkkosyrjala

Copy link
Copy Markdown
Owner

Fixes #7.

Addresses every checkbox in the terminal UI/UX consistency audit. All changes verified by running the built CLI and with new/updated tests (87 passing).

High

  • H1 — Unified error rendering. Commander parse errors (unknown option, invalid arg, …) now flow through formatCliError ([Error] + parody prelude) via exitOverride/configureOutput, replacing the lowercase error: + usage dump. Worker errors gain the [Error] label. Help/version still exit 0 cleanly.
  • H2 — Wide-character-safe list table. New src/util/textWidth.ts measures display width (East-Asian-width aware), truncates by code point (no split surrogate-pair emoji), and sanitizes control chars/newlines so a task stays on one row. Applied to both the compact table and verbose - <task> lines.
  • H3 — list --verbose includes Due in.

Medium

  • M1 — Empty states labeled: [Info] No pending jobs. / [Info] No jobs.
  • M2 — Dry-run lists shell-quoted invocations under Commands: (was Tasks:); --dry-run --json now includes a commands array.
  • M3 — Terminal cancel states share one parallel phrasing: Job <id> already <state>; nothing to cancel.
  • M4 — Near-miss subcommands (lstlist) are detected and suggested instead of failing with Invalid delay.
  • M5 — Help vs README copy/punctuation reconciled; local restored in the program description.

Low

  • L1 — [Dry-run] single-token label.
  • L2 — Sentence-case table headers, aligned with verbose labels.
  • L3 — Task/job/agent glossary added to the README.
  • L4 — Large second-counts grouped (86,400 seconds).
  • L5 — Imminent schedules say to run now instead of run in 0 seconds (0 seconds).
  • L6 — Message preview keeps a first-task floor so a huge task count can't collapse it to .

Testing

  • npx vitest run → 87 passing (new coverage for wide-char alignment, newline collapsing, verbose Due in, preview floor, empty-state label, dry-run commands, to run now, grouped seconds, subcommand suggestion, unified parse-error format).
  • Manual CLI runs for each error path, dry-run, and CJK/emoji table rendering.

Address all findings from the terminal output audit:

High
- H1: unify error rendering. Commander parse errors now route through
  formatCliError ([Error] + prelude) via exitOverride/configureOutput
  instead of a lowercase `error:` + usage dump; worker errors gain the
  [Error] label.
- H2: wide-character-safe `list` table. New src/util/textWidth.ts measures
  display width (east-asian-width aware), truncates by code point so
  surrogate-pair emoji aren't split, and sanitizes control chars/newlines
  so a task stays on one row.
- H3: `list --verbose` now includes the Due in countdown.

Medium
- M1: consistent empty-state labeling ([Info] No pending jobs. / No jobs.).
- M2: dry-run lists commands under `Commands:` (not `Tasks:`) and
  --dry-run --json now includes a `commands` array.
- M3: parallel cancel states share one phrasing ("already <state>;
  nothing to cancel.").
- M4: near-miss subcommands (e.g. `lst`) suggest the real command.
- M5: reconcile help vs README copy/punctuation; restore "local" in the
  program description.

Low
- L1: `[Dry-run]` single-token label.
- L2: sentence-case table headers, aligned with verbose labels.
- L3: add a task/job/agent glossary to the README.
- L4: group large second-counts with separators (toLocaleString).
- L5: imminent schedules render "to run now" instead of "0 seconds (0 seconds)".
- L6: message preview keeps a first-task floor so a huge task count can't
  collapse it to a bare ellipsis.
Replace the scattered [Error]/[Info]/[Success]/[Dry-run] string literals
across errors, cli, adapter, time parsers, and command modules with a
single Label enum in src/labels.ts, so the output vocabulary has one
source of truth.
@jarkkosyrjala
jarkkosyrjala merged commit bb52dce into main Jul 10, 2026
3 checks passed
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.

Terminal UI/UX consistency audit — fix tracking

1 participant