Release v0.13.4
Bug Fix - Atomic Commit Staging Safety + Split Prompt Hardening
Fixes a class of bugs in --split mode where files outside the staging area could be silently committed. Adds three layers of protection: LLM response validation, git pathspec literal enforcement, and subprocess working-directory correctness.
Fixed
Split Commit Staging Safety
parse_split_responsenow validates both directions: LLM-returned file paths must be a subset of the staging area. Previously only the inverse was checked, allowing hallucinated or extra files to be staged and committed viagit addstage_filesnow setsGIT_LITERAL_PATHSPECS=1, preventing git from interpreting bracket characters (e.g.[locale]) as pathspec glob patterns that could match unintended filesunstage_allandstage_filesnow callcurrent_dir(workdir)on subprocess commands, ensuring they operate on the correct repository regardless of the process working directoryget_staged_filesnow force-reloads the git index from disk (index.read(true)), so state is accurate after external git process modifications (e.g.git reset HEAD)
Split Commit Prompt
- Strengthened no-duplicate constraint: now marked as
CRITICAL CONSTRAINTSwith explicitSTRICTLY FORBIDDENwording to reduce LLM violations - Added a complete file list section at the top of the user message, giving the LLM a global view of the partition before seeing individual diffs
Tests
- 3 new unit tests for
parse_split_responseextra-file validation - 3 new unit tests for
stage_filesglob-path behavior andunstage_all+stage_filesround-trip
Upgrade
bash
# Homebrew
brew upgrade gcop-rs
# Cargo
cargo install gcop-rs
# pip
pip install --upgrade gcop-rs