Skip to content

Releases: MonteYin/gitsift

v0.2.0

30 Mar 09:17

Choose a tag to compare

What's New

Hunk-level checkout (selective discard)

  • gitsift checkout --hunk-ids <ids> — discard unstaged hunks (revert workdir → index)
  • gitsift checkout --staged --hunk-ids <ids> — discard staged hunks (revert index → HEAD)
  • gitsift checkout --from-stdin — JSON input support
  • Handles untracked files (deletion) and staged new files (index removal)
  • Path traversal guard prevents deletion outside repository boundary

Staged diff

  • gitsift diff --staged — view staged changes (HEAD vs index)

Protocol extensions

  • New checkout method with staged param
  • diff method now supports staged param

Full list of changes

  • New file: src/git/checkout.rs — reverse-patch reconstruction with atomic batch apply
  • New function: diff_staged() in src/git/diff.rs
  • New types: CheckoutRequest, CheckoutResult, CheckoutParams
  • 27 new tests (125 total), all passing

What's Changed

  • GTST-21 feat: add hunk-level checkout and diff --staged support by @MonteYin in #18

Full Changelog: v0.1.3...v0.2.0

v0.1.3

26 Mar 03:54

Choose a tag to compare

What's Changed

Compact TOON-inspired output format — ~40% fewer tokens for agent consumption.

Highlights

  • New default output format toon: compact, token-efficient, inspired by TOON
    • Tabular rows for hunk lines: {tag,content,old,new}: header + CSV-like rows
    • Context lines (unchanged) stripped — agents only need change lines for staging
    • Redundant file_path removed from hunks
  • JSON still available via --format json
  • Removed human output format — gitsift is agent-only
  • Removed similar crate dependency
  • Zero new external dependencies (compact formatter is self-implemented)

Breaking Changes

  • Default output is now toon (was json when piped, human in terminal)
  • --format human and --format auto are removed
  • Agents relying on piped JSON must now use --format json explicitly

Full Changelog: v0.1.2...v0.1.3

What's Changed

  • GTST-20 feat: add compact TOON-inspired output format for agent token efficiency by @MonteYin in #17

Full Changelog: v0.1.2...v0.1.3

v0.1.2

26 Mar 02:04
79f820f

Choose a tag to compare

What's Changed

Coding style improvements — pedantic lints, shared helpers, test deduplication.

Highlights

  • Enable clippy::pedantic with project-wide lint config in Cargo.toml
  • Add rustfmt.toml, clippy.toml, rust-toolchain.toml for consistent tooling
  • Extract shared git2 helpers into git/mod.rs (diff_opts, delta_path, hunk_header, is_binary_delta)
  • Add LineTag::from_origin(), PROTOCOL_VERSION constant, dispatch() helper
  • Deduplicate test setup into tests/common/mod.rs
  • Net -290 lines (348 added, 638 removed)

Full Changelog: v0.1.1...v0.1.2

What's Changed

  • GTST-19 refactor: improve coding style with pedantic lints and shared helpers by @MonteYin in #16

Full Changelog: v0.1.1...v0.1.2

v0.1.1

25 Mar 11:57

Choose a tag to compare

What's Changed

  • GTST-15 feat: universal shell installer for Linux and macOS by @MonteYin in #13
  • GTST-17 feat: add Claude Code skill for gitsift selective staging by @MonteYin in #14
  • GTST-18 fix: handle untracked files in gitsift stage by @MonteYin in #15

Full Changelog: v0.1.0...v0.1.1

v0.1.0

25 Mar 08:01
14074aa

Choose a tag to compare

What's Changed

  • GTST-2 feat: project scaffolding and data models by @MonteYin in #1
  • GTST-3 feat: implement git diff engine by @MonteYin in #2
  • GTST-4 feat: implement hunk-level staging engine by @MonteYin in #3
  • GTST-5 feat: implement line-level staging via patch reconstruction by @MonteYin in #4
  • GTST-6 feat: wire up CLI subcommands end-to-end by @MonteYin in #5
  • GTST-7 feat: implement JSON-lines protocol mode by @MonteYin in #6
  • GTST-10 feat: integration tests and binary file fix by @MonteYin in #7
  • chore: add CI, README, LICENSE, and fix clippy/fmt by @MonteYin in #8
  • GTST-12 feat: add GitHub Actions release workflow by @MonteYin in #9
  • GTST-12 feat: release workflow with aarch64-linux fix by @MonteYin in #10
  • GTST-14 docs: add macOS Homebrew install instructions by @MonteYin in #11
  • GTST-16 feat: switch Linux targets to musl for static linking by @MonteYin in #12

New Contributors

Full Changelog: https://github.com/MonteYin/gitsift/commits/v0.1.0