Skip to content

Releases: player1537/amend-commit-ai

Release list

v0.2

Choose a tag to compare

@player1537 player1537 released this 09 Jul 15:07
Bump version to 0.2

v0.1

Choose a tag to compare

@player1537 player1537 released this 20 Jun 15:56
Consolidate Claude, Pi, and Zed transcript readers into unified CLI

Replaces the three standalone scripts (amend_commit_cl.py,
amend_commit_pi.py, ,amend-commit-za) with a single package exposing a
Transcript base class and ClaudeTranscript, PiTranscript, ZedTranscript
subclasses.

Key design:
- Transcript dataclass with name, summary, created, modified, models,
  and user_messages fields
- Each subclass implements read(name) and readall() classmethods
- ClaudeTranscript reads ~/.claude/projects/**/*.jsonl
- PiTranscript reads ~/.pi/agent/sessions/**/*.jsonl
- ZedTranscript reads Zed's SQLite threads.db with zstd decompression
- mdformat wraps prose at 72 chars while preserving code blocks
- CLI uses --claude/--pi/--zed flags (default: all sources)
- Default mode copies amend command to clipboard; --doit runs it directly
- Uses === Transcript header instead of ### Transcript

=== Transcript

Clone https://github.com/player1537/mediocreatbest.git into /tmp/ and
review its implementation of `amend_commit_cl.py` and `amend_commit_pi`;
and review `~/bin/,amend-commit-za`. We're going to take those 3
individual scripts and consolidate them into one cohesive command line
tool in this project. We should have a `Transcript` base class, with
`ClaudeTranscript`, `PiTranscript`, and `ZedTranscript` subclasses that
each override the `classmethod` `def read(cls, name: str)` and a
`classmethod` `def readall(cls)`. The class should have a
`user_messages: list[UserMessage]` field, a `created` and a `modified`
datetime field. `read` should read one file, `readall` should do
appropriate globbing or database querying in order to get all available
transcripts. Tell me your plan, including specific code samples, for my
approval.

---

Rather than directly calling `git commit --amend`, it should work like
`,amend-commit-za` and write out a command to the user's clipboard that
will do the amend. A flag `--doit` should directly call the
`git commit --amend` command. Also, newlines in the user's messages
should be preserved. The default command should get all transcripts from
all 3 sources, rather than only from one or the other. Instead of
subcommands, the flags `--claude`/`--pi`/`--zed` should configure which
agents transcripts are used; if none are passed, it should pull from all
3; but if any are passed, then only the ones passed should be used. We
currently use `### Transcript` but that doesn't play nicely with the
interactive editing of commit messages later. Let's use `=== Transcript`
instead. The user messages can be assumed to be markdown by default: try
to parse and text wrap the markdown using some python dependency, and if
the parsing fails, then just use the current method. This should allow
us to have code blocks that don't get mangled.

---

The `Transcript` dataclass should keep track of all models used.
Implement our plan.

---

Commit your changes