Repository navigation
v0.18.0
Themed form system, zero-paste token capture with API validation, profile inspect and delete in the TUI, and six new internal modules.
Context
The profile creation and auth flows are rebuilt on a themed widget layer (new forms theme section, focus-bg idiom matching the segment bar) running in one continuous fullscreen session. Token capture uses a PTY proxy to scrape setup-token's output automatically -- no more copy-paste. Every token is validated against the Anthropic API before saving (hard 401 rejection; the warn-and-save path is gone). Profiles can be inspected (i key / show-profile CLI) and deleted (Ctrl-D/Delete key / delete-profile CLI) from the TUI, with a data-destruction hard-block for profiles whose shared dirs are real directories.
Infrastructure: fsutil.py consolidates all atomic JSON writes (the permission-loss bug class is structurally eliminated), tokens.py consolidates token I/O, the CSI decoder handles Delete/PgUp/PgDn/Insert/parametric Shift-Tab without leaking bytes, and Terminal.cooked() replaces hand-rolled raw-mode transitions.
Breaking: delete-profile now requires --force-delete-data (in addition to --force-delete) to remove profiles with real shared directories.
Features
- Continuous fullscreen create-profile flow. The profile wizard, auth method/browser forms, and a new creation summary page now run as one uninterrupted fullscreen session (no more bouncing between the TUI and scrollback), themed via the new
formstheme section. Theclaude auth login/setup-tokensubprocess and token paste open in a temporary cooked window and return to the session. The CLI new-profile path gets the same flow. - Zero-paste token auth with hard validation. The long-lived token flow now captures
claude setup-tokenoutput directly -- no manual paste needed -- and validates every token against the API before saving. Tokens the API rejects (401) are never saved (one manual re-paste is offered); when the API is unreachable, saving unvalidated requires an explicit choice and is reported as "unverified". The pre-launch auth prompt now launches only on an explicit skip. - Profile inspect. Press
ion the profile segment to open a fullscreen inspection page for the focused profile, or runc show-profile <name>from the CLI. The report covers registration, credentials, token expiry, shared-dir symlink health (with a danger flag for real data at shared names), settings/permission summary, active session count, and disk usage. - TUI profile delete. Press Ctrl-D or Delete on the profile segment to delete the focused profile after an informed confirmation (Cancel default-focused). Profiles holding real data at shared-dir names are hard-blocked with a pointer to the new
delete-profile --force-delete-dataCLI flag -- the TUI offers no override.
Fixes
- Fix:
tokens.jsonno longer loses its 0600 permissions when a token is updated or a profile is deleted (previously triggered health-check warnings after any token update).options.json,state.json, andinodes.jsonlikewise keep their existing permissions across updates, and a corrupttokens.jsonnow produces a clear error instead of a crash. - Fixed silent data loss on profile delete.
delete-profileused to rmtree shared-dir names (e.g.projects/) even when they were real directories holding conversation data instead of symlinks. Deletion now refuses with the at-risk dir names; the built-indefaultprofile is refused outright; profiles on disk but missing from options.json can now be deleted; a stalelast_configprofile reference is purged from state.json. - Fixed a bug where Delete, PgUp, PgDn, and Insert keys leaked stray bytes into the search buffer. Also added support for parametric Shift-Tab (ESC[1;2Z).
- Fixed a bug where updating tokens.json lost its restrictive file permissions (0600 reverted to 0644 on every write).