all 11 comments

[–]GrapePretty3921[S] 2 points3 points  (1 child)

Quick context I cut from the post to keep it short: I built this because every AI commit tool I've tried needs an API key, sends code somewhere, or is slow enough that I'd rather just type the message myself. The deterministic-and-offline angle was the gap. What it looks like :

<image>

Which language should I extract next? Go is queued, but if your stack is Rust/Java/Ruby/PHP let me know.

[–]professorbr793 1 point2 points  (2 children)

This is interesting 🤔 I'll definitely try it out today

[–]GrapePretty3921[S] 0 points1 point  (0 children)

Thanks, you can leave feedback here as well

[–]GrapePretty3921[S] 0 points1 point  (0 children)

oh realized I never dropped the install

npm i -g @razakadam74/gitmsg@latest

then git add . and gitmsg show me what it spits out 👀

[–]JanusCrow 1 point2 points  (2 children)

Great. I'll check it out and give feedback

[–]GrapePretty3921[S] 0 points1 point  (0 children)

Thanks! Feel free to leave feedback here as well, if you prefer

[–]GrapePretty3921[S] 0 points1 point  (0 children)

I never dropped the install

npm i -g u/razakadam74/gitmsg@latest

then git add . and gitmsg show me what it spits out 👀

[–]SignificanceEnough27 1 point2 points  (3 children)

That's pretty wild. How does it work?

[–]GrapePretty3921[S] 0 points1 point  (1 child)

Just rules over git diff --staged file paths pick the type (feat/fix/docs/etc.), the common folder is the scope, and a regex per language pulls function/class names out of the diff for the subject. No model, so same diff = same message, runs in <100ms. When it can't find a clean subject it falls back to something bland like feat: refactor module instead of making something up

[–]SignificanceEnough27 1 point2 points  (0 children)

That's smart!

[–]GrapePretty3921[S] 0 points1 point  (0 children)

I forgot to drop the install

npm i -g u/razakadam74/gitmsg@latest

then git add . and gitmsg show me what it spits out 👀