Repository navigation
This version is focused on making the local-LLM integration accurate and reliable.
API layer
- Switch from Ollama's proprietary
/api/generateto the standard OpenAI-compatible/v1/chat/completionsendpoint — now genuinely works with Ollama, LM Studio, llama.cppllama-serverand vLLM - URL normalization: accepts base URLs with or without
/v1and trailing slashes - Enforce TLS with certificate verification for https endpoints
- HTTP timeouts (5s open / 120s read), HTTP status checks and typed errors (
ConnectionError,ApiError) with friendly messages - Strip ANSI escape sequences from model output (prevents terminal escape injection via prompt-injected diffs)
- 2048-token budget so thinking models (qwen3) finish reasoning before answering; inline
<think>blocks stripped - Output cleaning: code fences, quotes and multi-suggestion replies reduced to a single 72-char subject line
CLI
commitnow commits by default after a y/n confirmation (closed stdin counts as "no" so non-interactive runs never auto-commit)- New
--message-onlyflag replaces print-only behavior;--conventionalfor Conventional Commits format;--lengthfor subject length - New
modelscommand lists models from the server;configpicks from that list when reachable - Fixed
options.lengthcollision that truncated every generated message to 3-4 characters - Fixed option resolution where explicitly passed
--url/--modelwere ignored - Skip the LLM call when nothing is staged; cap diff size at 12k chars; handle detached HEAD
Housekeeping
- Default model →
qwen3:8b - Minitest suite (23 tests) with a dependency-free mock HTTP server
- GitHub Actions CI (Ruby 3.1–3.4) with tests and bundler-audit dependency scanning
- MIT license, gemspec cleanup, README rewrite with a terminal demo GIF (regenerable via
docs/generate_demo.py)
Full Changelog: v0.1.2...v0.2.0