Replace the simple ASCII logo with a bold 'GAI' box-drawing font
that renders cleanly in modern terminals. Fix version to v0.1.3
across all files (brand, cli, index, package.json).
After a subcommand returns (especially 'Nothing to commit' cases), the
menu no longer immediately redraws and hides the message. Instead, the
user sees the subcommand output plus a 'Press Enter to return to menu'
prompt, giving them time to read the result before returning.
- Add ASCII art brand banner (src/brand.ts)
- Redesign main menu to match mole's UI pattern:
- Numbered items with ➤ arrow cursor (cyan for active, dim for inactive)
- Label + description two-column layout
- Number key hotkeys (1-8) for direct selection
- Letter hotkeys: H for Help, V for Version, Q for Quit
- Footer with controls hint: ↑↓ | Enter | H Help | V Version | Q Quit
- Full-screen redraw using \033[H cursor home
- Clear-screen transition when entering/exiting subcommands
- Keep selectOne/selectMany for other interactive dialogs (file selector,
platform selector) unchanged
- Full README rewrite with all new commands, pipe support, aliases,
global flags, and configuration examples
- Bump version to 0.2.0, update description
- Update menu.ts and selector.ts to use isStdinTTY() and function-based
terminal colors
- Refactor index.ts from 995-line monolith to ~270-line dispatcher that
registers all commands via the CLI parser and delegates to modules
- Add initTTY() call at startup for correct pipe/TTY detection
- Interactive menu expanded to include new commands (explain, review,
changelog, suggest, amend)
- gai explain: plain-language diff explanation with pipe support
- gai review: AI code review with strict/normal/lenient modes
- gai changelog: generate user-facing changelog from commits,
supports --from/--to ranges and -n count
- gai suggest: suggest branch names or commit type from diff
- All commands support pipe input and auto-stage on empty staging area
- Convert static ANSI constants to functions for dynamic color control
- Respect NO_COLOR convention (https://no-color.org/)
- Support FORCE_COLOR for CI/CD environments
- setColorEnabled() API for --no-color flag integration
- New CLI argument parser supporting subcommands, short/long flags,
flag values, positional args, aliases, and --help per command
- TTY detection via fstatSync (Bun compat: process.stdin.isTTY is
undefined in Bun 1.3.x)
- Extended types: CommitResult, StreamCallbacks
Empty commit/PR states no longer auto-return to the menu. Instead, the
user is shown an in-page prompt with a Back option, mirroring the rest
of the CLI: pressing Enter on Back (or ←/backspace) closes the prompt
and returns control to the previous step.
Extract duplicate menu rendering logic from `index.ts` into a new `src/menu.ts` module, providing generic `selectOne` and `selectMany` functions. This reduces code duplication, improves maintainability, and adds consistent UI controls display across the commit flow and platform selection.
Reviewed-on: #3
Add a new `gai pr` subcommand that generates pull request titles and descriptions using AI, then creates the PR via GitHub CLI (`gh`) or Gitea CLI (`tea`). This extends the existing commit-generation system by reusing retry logic and prompt infrastructure, and introduces a `callAI` function that returns raw output (instead of pre-cleaned messages) to support structured PR responses.
Reviewed-on: #2