Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Releases: halfline/git-stage-batch

v0.16.0

17 Jun 14:30
@halfline halfline
a3dc180
This commit was created on GitHub.com and signed with GitHub’s verified signature.
GPG key ID: B5690EEEBB952194
Verified
Learn about vigilant mode.

Choose a tag to compare

Added

  • Non-advancing show previewsshow --no-advance flag 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 discard command also records split replacement origins.
  • AI-assisted decompose workflow — new install-assets command 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/mode metadata lines are now parsed correctly.

Documentation

  • Man page and command docs updated for show --no-advance.
  • New ai-assistants.md documenting the decompose workflow assets.
Assets 2
Loading

v0.15.0

13 Jun 22:38
@halfline halfline
3ffda49
This commit was created on GitHub.com and signed with GitHub’s verified signature.
GPG key ID: B5690EEEBB952194
Verified
Learn about vigilant mode.

Choose a tag to compare

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-unstaged preflight command for CI / AI-assistant workflows.
  • Replacement range boundaries for the include command.
  • 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.
Loading

v0.14.0

28 May 15:08
@halfline halfline
d591ae4
This commit was created on GitHub.com and signed with GitHub’s verified signature.
GPG key ID: B5690EEEBB952194
Verified
Learn about vigilant mode.

Choose a tag to compare

Changes since v0.13.0

Features

  • block-file now 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/exclude instead of the shared .gitignore, keeping the block local to your checkout.
  • unblock-file handles directory-covered paths — when a directory glob entry covers the target path, unblock-file inserts 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

  • include and discard commands now correctly pass the resolved batch-source commit through to storage, fixing a potential inconsistency when the source advances mid-session.

Documentation

  • docs/batches.md substantially expanded with bridge repair batch terminology and full workflow documentation.
  • Man pages for block-file and unblock-file updated to cover directory support, negation behavior, and --local-only.

Internal

  • New git utilities for managing .git/info/exclude and promoting directory ignore entries to glob patterns.
  • New source_refresh.py module 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.
Loading

v0.13.0

17 May 00:38
@halfline halfline
acbe196
This commit was created on GitHub.com and signed with GitHub’s verified signature.
GPG key ID: B5690EEEBB952194
Verified
Learn about vigilant mode.

Choose a tag to compare

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. show displays framed previews before execution; include and apply require reviewed choices for ambiguous batches.
  • Hunk auto-advance controls — New --auto-select / --no-auto-select flags control whether interactive hunk review automatically advances after a selection. Supported by include, discard, and skip.
  • --file option alias--file=PATTERN is 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 help routing.

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, and skip.
  • 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(-)

Loading

v0.12.0

13 May 00:41
@halfline halfline
98437ae
This commit was created on GitHub.com and signed with GitHub’s verified signature.
GPG key ID: B5690EEEBB952194
Verified
Learn about vigilant mode.

Choose a tag to compare

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 staginginclude with 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_diff helper replaces ad-hoc diff invocations in show, 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.
Loading

v0.11.0

09 May 04:36
@halfline halfline
8b74015
This commit was created on GitHub.com and signed with GitHub’s verified signature.
GPG key ID: B5690EEEBB952194
Verified
Learn about vigilant mode.

Choose a tag to compare

Changelog

User-visible features

  • Prompt-oriented status outputstatus now emits a concise, prompt-friendly session summary suitable for hooking into the shell prompt, documented in docs/commands.md and the README
  • include --line routes 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 validationinclude, discard, skip, and reset all 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_selection module
  • CI: Codeberg mirror now routes through private refs

Packaging

  • Release process updated to use annotated tags (version summary + changelog body)
Loading

Release v0.6.0

18 Apr 20:55
@halfline halfline
b4ec2e4
This commit was created on GitHub.com and signed with GitHub’s verified signature.
GPG key ID: B5690EEEBB952194
Verified
Learn about vigilant mode.

Choose a tag to compare

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
Loading

v0.5.0

17 Apr 04:04
@halfline halfline

Choose a tag to compare

Loading

AltStyle によって変換されたページ (->オリジナル) /