Skip to content

release: autter 2.3.0 — redesigned onboarding, sign-in, status screens and interactive views - #78

Merged
sagnik11 merged 2 commits into
mainfrom
claude/tui-signup-design-plan-32b0d3
Oct 26, 2026
Merged

sagnik11 merged 2 commits into
mainfrom
claude/tui-signup-design-plan-32b0d3

Conversation

@sagnik11

@sagnik11 sagnik11 commented Oct 25, 2026 •

Copy link
Copy Markdown
Member

Summary

Redesigns autter's terminal UI end to end and releases it as 2.3.0. Design, decisions and as-built notes: specs/roadmap/tui-onboarding-design.md.

Signup

  • autter onboard opens with the "a." logo and walks one step rail of numbered questions. Each answered question collapses to one line, and the closing summary lists each problem with the command that fixes it.
  • New sign-in screen for onboard and login: code, live countdown, Enter to reopen the browser, c to copy (OSC 52), Esc to continue locally or cancel. Polling stops when the user steps away.
  • After a failed sign-in: retry, paste an access token (masked, validated before storing), or continue locally. This replaces the wall of fallback text.
  • Integrations are a checklist of the detected tools plus git capture. Only checked tools get hooks; --yes still installs everything.

Everyday commands

  • Bare autter at a terminal shows a status card built from local state only. autter help still lists every command.
  • whoami shows a card; doctor shows a spinner per check that resolves in place; install-hooks lists tools on a rail.
  • New autter stats -i (recent commits by AI share, with breakdown by tool and model) and autter blame -i <file> (AI/human/untracked gutter, line details, prompt transcript on Enter), built on ratatui, which was already a dependency.

Foundation

  • New src/ui/ module: terminal detection, theme in the brand teal, header, rail, cliclack prompts, sign-in screen, timed confirm, and spinner.
  • Color goes through one helper, so NO_COLOR and --no-color now apply to onboarding and login.
  • ASCII and half-block fallbacks for legacy Windows consoles.

Compatibility

  • Piped, --json and non-interactive output keep the same information.
  • Spinner outcome lines move to stderr at a terminal; piped stdout keeps its exact lines.
  • Selector: Esc now cancels, and the 1–9, Tab and Space shortcuts are gone.
  • New dependencies: cliclack and console (console was already in the tree). textwrap raised the existing icu_* crates to 2.4. All of them need Rust 1.88 or older.

Release

  • Bumps Cargo.toml, Cargo.lock and npm/package.json to 2.3.0 and adds the CHANGELOG.md section. Merging tags v2.3.0 and publishes.

Test plan

  • cargo test --lib: 1999 pass. The 3 failures are environment-only, in untouched code (Windows symlink privilege, PowerShell timing in debug/diagnostics).
  • New unit and snapshot tests:
    • terminal detection (desktop panel, Windows Terminal, conhost, locales, depth)
    • header variants, rail, sign-in layout and countdown, OSC 52 encoding
    • onboarding step counts and summary
    • whoami and home cards, bar splitting, blame line classification
    • a lint test against raw ANSI escapes in setup flows
  • Integration (Windows): onboarding, install-hooks and upload-hold tests pass. Some blame/daemon tests time out intermittently in the harness's daemon wait (test_repo.rs:1925) and pass on rerun.
  • Two upload_hold connect tests that fail on Windows on main too are fixed separately in Pin the credentials file in integration tests on Windows #77.
  • cargo fmt --check clean. Clippy finds nothing in changed code; local 1.99 flags pre-existing lints elsewhere that pinned 1.93 does not.
  • cargo run --example ui_preview checked in the Claude desktop terminal: true color and Unicode detected, header, selector, sign-in screen and multiselect render.
  • Not yet exercised: a real browser sign-in against app.autter.dev on the new screen, and stats -i / blame -i on a real repo by a person.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

sagnik11 and others added 2 commits October 25, 2026 15:51
Add a src/ui module that every interactive command goes through:
terminal detection (color depth, Unicode support, width), a theme in
the brand teal, the "a." logo header, a step rail, cliclack-based
select/multiselect/masked input, a hand-drawn browser sign-in screen,
the timed confirm, and the spinner. Color goes through
caps().paint(..), so NO_COLOR and --no-color now apply to onboarding
and login, which wrote escape codes unconditionally.

autter onboard opens with the header and walks one rail of numbered
questions. Sign-in shows the code with a live countdown: Enter reopens
the browser, c copies the code over OSC 52, Esc continues in local
mode, and polling stops when the user steps away. A failed attempt
offers retry, paste an access token, or continue locally, replacing
the block of fallback instructions. Integrations are a checklist of
the detected tools plus git capture, all checked; only checked tools
get hooks (install_hooks::run_for_tools), and --yes still installs
everything. autter login uses the same screen and recovery.

Non-interactive runs print the same information as before. Spinner
outcome lines go to stderr on a terminal; piped stdout keeps the
exact lines it had. The selector loses its 1-9, Tab and Space
shortcuts, and Esc now cancels like Ctrl-C.

cargo run --example ui_preview walks the screens with sample data
without touching config or the server. Design and decisions are in
specs/roadmap/tui-onboarding-design.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bare `autter` at a terminal shows a status card (mode and account,
the latest commit's AI share and tool, pending uploads, commands to
try) built from local state only; `autter help` still lists every
command. `whoami` shows a card, `doctor` runs each check under a
spinner that resolves in place, and `install-hooks` lists tools on a
rail. Piped and --json output of all of these is unchanged.

`autter stats -i` browses the last 200 commits by AI share with a
per-commit breakdown by tool and model, computed on a background
thread so the list opens at once. `autter blame -i <file>` shows the
file with an AI/human/untracked gutter, line details, n/N between AI
changes, and the prompt transcript on Enter. Both use ratatui (already
a dependency), need a terminal, and fall back to the plain command.

Bump to 2.3.0 with the CHANGELOG entry covering this and the
onboarding and sign-in redesign; merging to main tags and publishes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sagnik11
sagnik11 merged commit cfa7c08 into main Oct 26, 2026
2 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.

1 participant