Releases: moralmk/gem-commit
v0.3.0
Quality-of-life improvements to the Gemini run: you can see how long it's taking, you see its errors when something goes wrong, and cancelling actually stops it. No command or config changes — the staged-commit and reword flows work exactly as before.
Highlights
- Elapsed time while you wait — the progress spinner now ticks with elapsed time (
(12s),1m 5s) during candidate generation, so a slow Gemini call clearly shows it's still working instead of looking frozen. - Gemini errors are visible — when Gemini exits non-zero or returns output that can't be parsed, its
stderris printed so you can see the underlying error. Successful runs stay quiet. - Clean cancellation — interrupting with
Ctrl+C(SIGINT/SIGTERM) now terminates the spawned Gemini process group, so thegeminichild (and anything it spawned) no longer lingers in the background after you cancel.
Usage
npm i -g gem-commit
git add <files>
gcommitNo usage changes from v0.2.0. See the README for all options and the CHANGELOG for details.
Full Changelog: v0.2.0...v0.3.0
v0.2.0
Adds gcommit reword <commit> — regenerate the Conventional Commits message for a commit that already exists, then replace it. Same Gemini-powered candidate picker as the staged-commit flow, now pointed at any commit's diff.
Highlights
- Reword existing commits —
gcommit reword <commit>(e.g.HEAD,HEAD~2,a1b2c3d) sends that commit's diff to Gemini, shows candidates, and rewrites the message with your pick. - Safe by construction —
HEADis reworded withgit commit --amend; older commits via a non-interactive rebase that touches only the target message. Supported only on a linear, merge-free path up toHEAD. - Guard rails — refuses to run when the target isn't an ancestor of
HEAD, when the target or anything in range is a merge commit, or when the working tree is dirty. Warns (but proceeds) when the commit was already pushed, since a force-push will be needed. - Same picker, same config — reuses the existing readline list (
↑/↓,Enter,1–9,q/ESC) plus yourgcommit configlanguage and candidate-count settings.
Usage
npm i -g gem-commit
gcommit reword HEAD # or HEAD~2, a commit SHA, …The original staged-commit flow (git add → gcommit) is unchanged.
See the README for all options and the CHANGELOG for details.
Full Changelog: v0.1.0...v0.2.0
v0.1.0
First public release of gem-commit — a Conventional Commits message recommender CLI that pipes your staged diff into the Gemini CLI, shows a few candidate messages, and commits with the one you pick.
Highlights
- No API keys to manage —
gcommitonly spawns the Gemini CLI as a child process, so auth lives entirely in your existinggeminiinstall. - Interactive picker — Conventional Commits candidates rendered as a readline list:
↑/↓(ork/j),Enter,1–9number shortcuts,q/ESC/Ctrl+Cto cancel. - Configurable — message language (
en/ko) and candidate count (1–9) viagcommit config(interactive wizard +get/set/path). - Auto-scoped config — global install writes to
~/.config/gcommit/config.json(or%APPDATA%\gcommit\config.jsonon Windows); devDependency install writes to<project>/.gcommitrc.json. - Safe defaults — fixed on
gemini-2.5-flash, diffs over 50KB are truncated with a warning, one retry on parse failure, and non-TTY environments print candidates instead of hanging.
Usage
npm i -g gem-commit
git add <files>
gcommitSee the README for all options.