-
Notifications
You must be signed in to change notification settings - Fork 3
Releases: halfline/git-stage-batch
v0.16.0
a3dc180 Added
- Non-advancing show previews —
show --no-advanceflag for previewing entries without advancing the batch pointer. - Replacement origin replay — split replacements now record their source units and are faithfully replayed on batch refresh. The
discardcommand also records split replacement origins. - AI-assisted decompose workflow — new
install-assetscommand installs per-entry companion assets (Claude skill, Codex skill, and four specialized agents: analyzer, batch-peeler, deconstructor, rebuilder) to help break large staged changes into atomic commits.
Fixed
- Dirty-only submodule diffs — submodule diffs that only reflect dirty working-tree state (no pointer change) are now correctly skipped instead of causing parse errors.
- Metadata-less submodule diffs — submodule pointer hunks that lack the usual
index/modemetadata lines are now parsed correctly.
Documentation
- Man page and command docs updated for
show --no-advance. - New
ai-assistants.mddocumenting the decompose workflow assets.
Assets 2
v0.15.0
3ffda49 Added
- Interactive file-review mode with line replacement, block actions, page
stepping, fixup, status drawer, sift, batch candidate browser, and
marked-file actions. - Atomic rename presentation and startup normalization for staged renames.
check-unstagedpreflight command for CI / AI-assistant workflows.- Replacement range boundaries for the
includecommand. - Prompt section wrapping in the TUI.
- Prestarted TUI session preservation on quit.
Fixed
- File-review replacements now stage from the live index.
- Sparse line IDs preserved across hunk refresh.
- CI test runner configured with a git identity to prevent session leaks.
Changed
- Batch attribution reuses source mappings for better performance.
- Index lock wait time extended.
- Switched pytest to importlib import mode.
Assets 2
v0.14.0
d591ae4 Changes since v0.13.0
Features
block-filenow supports directories — block an entire directory; arguments are normalized to trailing-slash form and stored as glob patterns.block-file --local-only— new flag that writes to.git/info/excludeinstead of the shared.gitignore, keeping the block local to your checkout.unblock-filehandles directory-covered paths — when a directory glob entry covers the target path,unblock-fileinserts a negation entry rather than failing.- Stale session-source detection for bridge repair batches — if a new batch references a session source that has since been superseded, the stale source is automatically replaced with the current one before the batch proceeds.
- Git startup failures reported cleanly — startup errors from git are now surfaced as user-friendly messages instead of raw tracebacks.
Fixes
includeanddiscardcommands now correctly pass the resolved batch-source commit through to storage, fixing a potential inconsistency when the source advances mid-session.
Documentation
docs/batches.mdsubstantially expanded with bridge repair batch terminology and full workflow documentation.- Man pages for
block-fileandunblock-fileupdated to cover directory support, negation behavior, and--local-only.
Internal
- New git utilities for managing
.git/info/excludeand promoting directory ignore entries to glob patterns. - New
source_refresh.pymodule encapsulates stale-source detection logic. - Test coverage added for directory blocking/unblocking,
--local-only, negation via directory entries, stale session source reuse, and Git startup failure reporting.
Assets 2
v0.13.0
acbe196 Features
- Reviewed candidate choices for ambiguous batches — When a batch operation encounters ambiguous merge candidates (multiple valid placements for a hunk), the user is now prompted to review and choose among the candidates.
showdisplays framed previews before execution;includeandapplyrequire reviewed choices for ambiguous batches. - Hunk auto-advance controls — New
--auto-select/--no-auto-selectflags control whether interactive hunk review automatically advances after a selection. Supported byinclude,discard, andskip. --fileoption alias —--file=PATTERNis accepted as an alias for file pattern arguments.- Page-local presence line actions — File review shows per-page presence-only line actions and persists page-local presence selections.
- Per-subcommand man pages — The monolithic man page has been replaced with individual man pages for each subcommand, with proper
git helprouting.
Internationalization
- Candidate choice, review navigation, and recovery prompts translated across 14 languages (Arabic, Chinese, Czech, Dutch, French, German, Japanese, Korean, Polish, Portuguese, Russian, Spanish, Turkish, Ukrainian).
- Framed ambiguity preview strings translated across all 14 languages.
Performance
- Range-backed line selections, mapped storage, piece-table editors, and compact display ranges reduce heap allocations throughout the diff/merge pipeline.
- Scoped diff parser lifetimes release hunks between items to reduce peak memory.
- Patience-diff style anchors with LIS ordering improve structural alignment accuracy.
- Exact replacement bytes preserve original text without unnecessary decoding.
Fixes
- Fixed file-scoped untracked target matching and refresh for
include,discard, andskip. - Fixed parallel pytest-xdist collection with editable meson builds.
- Fixed
git help <subcommand>resolution to installed per-command man page names.
Internal
- Centralized Git index lock policy across all commands.
- Batch candidate selectors parsed and routed (rejected by non-batch commands).
- Colon reserved in batch names for future selector syntax.
- Commit message guidance updated to first-person maintainer voice.
189 files changed, 41,837 insertions(+), 15,296 deletions(-)
Assets 2
v0.12.0
98437ae Features
- Submodule pointer support — Full support for staging, discarding, resetting, showing, and undoing submodule pointer (gitlink) diffs. Embedded repositories are automatically skipped during snapshots.
- Index lock waiting — CLI now waits for transient Git index locks instead of failing immediately.
- Full-file deletion staging —
includewith line-level selections correctly stages whole-file deletions as removals.
Internal
- File buffer abstraction — Replaced byte-oriented I/O with a reusable line-buffer layer. New
editor/package (buffer.py,edit.py,git.py,line_endings.py). Removed dozens of byte-returning wrappers and merge adapters across batch, commands, staging, data, core, and utils subsystems. - Stream-based diff reading — New
stream_git_diffhelper replaces ad-hoc diff invocations inshow,skip,status,include,discard, and batch operations. - Indexed line sequences — Merge, comparison, display, and discard operations now work on indexed line sequences and array-backed line mappings.
- Ownership acquisition — Ownership metadata acquired contextually (scoped/acquired pattern) rather than materialized eagerly, with fingerprint-based attribution matching.
Docs / packaging
- Tightened Claude and Codex commit skill prompts with stronger series narrative and ordering rules.
- Updated
BATCHES.md,docs/batches.md,docs/commands.md, and man page for submodule pointer batches. - Functional test files renamed for unique module names.
Assets 2
v0.11.0
8b74015 Changelog
User-visible features
- Prompt-oriented status output —
statusnow emits a concise, prompt-friendly session summary suitable for hooking into the shell prompt, documented indocs/commands.mdand the README include --lineroutes through transient batches — line-scoped includes now stage lifecycle patches by path, with full rename lifecycle support- Line-ending preservation — merges preserve the target file's native line endings rather than normalising them
- Stale line-ID validation —
include,discard,skip, andresetall reject stale or invalid batch line IDs before applying transforms, preventing silent corruption
Internal
- Presence-claim ownership model — selected lines are now modelled as presence claims; ownership tracks baseline references and translates current-diff rows through the claim graph, replacing the old
semantic_selectionmodule - CI: Codeberg mirror now routes through private refs
Packaging
- Release process updated to use annotated tags (version summary + changelog body)
Assets 2
Release v0.6.0
b4ec2e4 The v0.5.0 release was the project's first public release. It put git-stage-batch in front of real users for the first time, and their feedback quickly shaped the direction of development.
That initial release had a few problems. Files with non-UTF-8 content could break staging because patches were stored as decoded strings rather than raw bytes. Line-to-batch operations displayed the selected hunk twice. The block-file and unblock-file commands left stale index state behind and did not advance to the next hunk automatically.
Users also asked for capabilities the tool did not yet have. There was no way to undo a staging mistake without aborting the entire session. And line-level staging treated replacement rows as independent additions and deletions, forcing users to stage them separately even when they belonged together.
This release addresses all of that.
Bug fixes
- Patches are now stored and applied as raw bytes, so non-UTF-8 files stage correctly
- Line-to-batch operations display the hunk exactly once
- block-file and unblock-file clean up index state and advance to the next hunk automatically
New features
- Full undo/redo system backed by Git's object store, available from both the CLI and interactive mode
- Semantic line-selection that understands replacement rows, staging paired additions and deletions together
- Git-backed batch refs for more reliable state management, with transactional ref updates and exact restoration on abort
- Refreshed translations for all 14 supported languages
- GitHub Actions CI pipeline
Housekeeping
- Minimum meson version updated to 1.10.0 to match actual requirements
- Undo system uses platform default temporary directory instead of hardcoded /var/tmp
- Unused and duplicate imports cleaned up across source and tests
Install
pip install git-stage-batch==0.6.0
Assets 2
v0.5.0
Full Changelog: https://github.com/halfline/git-stage-batch/commits/v0.5.0