Skip to content

v3.0.0

Choose a tag to compare

@scolladon scolladon released this 02 Jul 17:58
eb253e9

3.0.0 (2026-07-02)

⚠ BREAKING CHANGES

  • status: correlate staged/unstaged per path with diff endpoints (#140)
  • standardise the commit-ish parameter on rev (rev/from-to/ref vocabulary) (#137)
  • merge: run/continue/abort namespace, fastForward enum, internal reflog channel (#136)
  • snapshot: stop leaking snapshot wiring from the public barrel (#133)
  • status: type-changed/mode-changed kinds + unmerged paths (#128)
  • status: real index-vs-HEAD staged column (Changes to be committed) (#127)
  • show,diff: structured output only — drop cosmetic rendering surface (#126)

Features

  • active-driver filter, clean/smudge, and textconv support (#195) (bbbce35)
  • archive — byte-faithful tar + zip export (#199) (63009dd)
  • bisect — pure midpoint primitive returning structured halving data (#202) (f0e92ec)
  • blame: line-by-line authorship via reverse-diff history walk (#130) (5e542d6)
  • bundle — create / verify / list-heads (#201) (ed03755)
  • config: cache config tokens, eager merge-driver refusal, empty path-like feature-off (#181) (f1eb1e7)
  • config: char-wise config parser parity (#172) (7292a50)
  • config: exact subsection identity and raw section-name addressing (#168) (c67bcc2)
  • config: faithful int-typed core compression config validation (#182) (65bf21b)
  • config: git-faithful quoted-value (un)escaping in the config reader and writer (#162) (3356c5f)
  • config: refuse valueless string config across the remaining keys (#179) (da4dba3)
  • config: refuse valueless string config with git's missing-value message (#170) (ef10ea8)
  • config: span-aware line surgery for multi-line entries (#166) (586affe)
  • config: subsection-name (un)escaping in section headers (#164) (3a5605c)
  • config: valueless keys parse as git NULL entries (#165) (0452ce7)
  • conflict-marker size + per-operation conflict labels (#161) (1c96a0c)
  • converge log/diff onto the read model (log defaults to git date order) (#142) (9e8f183)
  • custom merge drivers (.gitattributes merge=<driver>) (#159) (eac30e5)
  • describe: byte-faithful candidate selection (git early-termination) (#145) (a86d101)
  • describe: nearest-tag distance (git describe), structured-output only (#123) (bb22dcb)
  • diff: faithful gitlink/submodule diffs across all change kinds (#194) (adb03cf)
  • diff: honour diff/binary attribute in binary-vs-text decision (#196) (bfe55b0)
  • diff: recursive tree-diff for the shared patch path (#121) (4492407)
  • diff: similarity rename, copy, and break detection (-M/-C/-B) (#188) (1651a29)
  • diff: whitespace diff options (-w / -b / --ignore-space-at-eol / --ignore-cr-at-eol / --ignore-blank-lines) (#189) (adf4c7f)
  • fsck — repository integrity check (#197) (ac88e66)
  • grep: grep command with JavaScript RegExp pattern grammar (#192) (f4b2a02)
  • hooks: hook coverage parity — prepare-commit-msg, post-commit, post-merge, post-checkout, pre-rebase, post-rewrite (#158) (e9a15c7)
  • log parent-count filter, faithful type-change patch, and diff faithfulness pins (#193) (9dc544f)
  • merge: add/add content merge + distinct-types rename (#163) (b59717f)
  • merge: distinct types with a base — per-side renames, symlink pairs, mode-aware conflict writes (#167) (bb7b607)
  • merge: materialise non-conflict outcomes to the working tree + index (#156) (d346826)
  • merge: union built-in merge driver via per-region content merge (#160) (c886c7a)
  • name-rev: name a commit by the nearest containing ref (+ describe --contains) (#150) (7b8a65c)
  • notes — git-faithful add/read/list/remove on refs/notes/* (#204) (325a53b)
  • primitives: streamBlob with streaming working-tree writes (#191) (c661f52)
  • range-diff: compare two commit ranges (structured range-diff) (#148) (11605d1)
  • read-model: readFileAt(rev, path) (#135) (6334215)
  • read-model: walkCommitsByDate + foldSubject (23.4b) (#134) (9ebe48b)
  • shortlog: per-author commit summary (#147) (d79b75a)
  • show,diff: structured output only — drop cosmetic rendering surface (#126) (240cc89)
  • show: formatted object output for commit/tag/tree/blob (#118) (9ca696a)
  • show: v2 flags (pretty, stat, combined diff, date modes, rev:path) (#122) (a2e8722)
  • status: carry conflicted-path worktree mode on UnmergedEntry (#146) (6c432ad)
  • status: correlate staged/unstaged per path with diff endpoints (#140) (ace3785)
  • status: real index-vs-HEAD staged column (Changes to be committed) (#127) (4e9f943)
  • status: type-changed/mode-changed kinds + unmerged paths (#128) (33fa9f4)
  • submodule: network write side — add / update (+ sync --recursive) (#155) (79a9d6e)
  • submodule: write side (local) — init/sync/deinit (#153) (dfd397b)
  • types: re-export facade-reachable public type surface from all entries (#186) (dd9f6ef)
  • whatchanged: log walk with raw structured changes (#149) (30466f5)
  • worktree: add / list / move / remove (linked working trees over one gitdir) (#157) (b3c53ef)

Bug Fixes

  • checkout: replace an occupying symlink with a regular file via one shared writer (#177) (0daf403)
  • merge: refuse conflicting merges that would overwrite dirty or untracked paths (#178) (53b61b4)
  • read pack objects whose compressed payload exceeds 64 KiB (#185) (0d58f72)

Documentation

  • backlog: add 23.1b for deferred show v2 flags (#120) (f9a1302)
  • backlog: add 26.11 — date-priority-queue heap migration (c374290)
  • backlog: reorder Phase 26 so refactoring precedes the perf pass (#154) (6adba12)
  • backlog: sub-itemize 23.4 API-foundation program; renumber inspection tail (#132) (dd50478)
  • backlog: tick 23.4 umbrella (#198) (d027ca5)
  • backlog: track 23.2b — status staged column (describe --dirty follow-up) (#124) (6285019)
  • backlog: track 23.7 (name-rev / describe --contains); multi-arg non-goal (#125) (010cdce)
  • workflow: add promote-workflow design-session brief (aceb5aa)
  • workflow: add spelling check to review fix-batch gate (f38dd6c)
  • workflow: gate PR creation on scoped mutation triage (044a925)
  • workflow: model-matched delegation, parallel 4-dim reviews, non-blocking mutation (5d9b915)
  • workflow: tighten the tsgit forge declination (#173) (efd3066)

Refactor

  • consolidate the date-ordered commit priority-queue (#131) (4640a2f)
  • merge: run/continue/abort namespace, fastForward enum, internal reflog channel (#136) (7f761e4)
  • snapshot: stop leaking snapshot wiring from the public barrel (#133) (914c15c)
  • standardise the commit-ish parameter on rev (rev/from-to/ref vocabulary) (#137) (0339612)
  • unify all working-tree path joins into joinPath and joinPathSegment (#184) (6b25fb3)