Skip to content

Releases: moralmk/gem-commit

v0.3.0

09 Jun 04:02

Choose a tag to compare

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 stderr is 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 the gemini child (and anything it spawned) no longer lingers in the background after you cancel.

Usage

npm i -g gem-commit
git add <files>
gcommit

No 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

05 Jun 02:16

Choose a tag to compare

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 commitsgcommit 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 constructionHEAD is reworded with git commit --amend; older commits via a non-interactive rebase that touches only the target message. Supported only on a linear, merge-free path up to HEAD.
  • 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, 19, q/ESC) plus your gcommit config language 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 addgcommit) is unchanged.

See the README for all options and the CHANGELOG for details.

Full Changelog: v0.1.0...v0.2.0

v0.1.0

04 Jun 13:08

Choose a tag to compare

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 managegcommit only spawns the Gemini CLI as a child process, so auth lives entirely in your existing gemini install.
  • Interactive picker — Conventional Commits candidates rendered as a readline list: / (or k/j), Enter, 19 number shortcuts, q/ESC/Ctrl+C to cancel.
  • Configurable — message language (en / ko) and candidate count (19) via gcommit config (interactive wizard + get / set / path).
  • Auto-scoped config — global install writes to ~/.config/gcommit/config.json (or %APPDATA%\gcommit\config.json on 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>
gcommit

See the README for all options.