Releases: JarvusInnovations/gitsheets
Release list
v2.5.0
Schema contracts: sheets can now declare implements on named, versioned, immutable JSON Schema contracts — vendored into the repo as the canonical lock artifact, enforced by construction on every write, and mechanically verifiable by cross-system consumers (openSheet({ contract }), gitsheets contracts). See the new contracts guide.
Improvements
- feat(core): schema contracts — implements, vendored store, composed enforcement [#265] @themightychris
- feat: consumer-side contract verification — the two-rung ladder in openSheet [#267] @themightychris
- feat(cli): git sheet contracts — adopt, verify, test, sync, export, prune [#268] @themightychris
Technical
- specs+plans: schema contracts (implements, vendored canonical-TOML lock, two-rung consumer verification) [#263] @themightychris
- docs: schema contracts guide + contract attribution on write-failure output [#269] @themightychris
- chore(napi): sync manifests to published @gitsheets/core-napi 0.4.0 [#270] @themightychris
v2.4.1
Packaging/infrastructure release: establishes the PyPI publication track for the Python binding (py-v* tags — gitsheets 0.1.0 shipped to PyPI on this work) and pins the JS Release PR automation to the v* tag track. No change to the gitsheets JS package's runtime behavior.
Technical
- feat: PyPI publication for the Python binding (py-v* track) [#259] @themightychris
- docs(specs): correct Python read surface; close out pypi-publication plan [#261] @themightychris
- ci(release): pin release-prepare to the v* tag track [#262] @themightychris
v2.4.0
Declarative date-bucket path keys: partition records by day, month, or ISO week (${{ field: YYYY/MM/DD }}) with UTC-guaranteed semantics — plus a rewritten README covering all four consumption surfaces.
Improvements
- feat: declarative date-bucket path keys (YYYY/MM/DD, YYYY/MM, YYYY/WW) [#253] @themightychris
- docs(readme): use-case examples and four-surface getting started [#254] @themightychris
Technical
- chore(plans): close out core-napi-0.2.0-release [#249] @themightychris
- docs(claude): document the dual-track release flow [#251] @themightychris
- docs(specs): distribution tracks + Python binding surface; PyPI publication plan [#256] @themightychris
- chore(napi): sync manifests to released core-napi 0.3.0 [#258] @themightychris
v2.3.1
The npm re-cut of v2.3.0, whose registry publish failed (workspace tests resolved pre-#241 platform binaries). Ships the same consumer-hardening batch — read-your-writes freshness, streaming attachment reads, one-call byte attachments, an exposed write lock, cast-free Standard Schema typing, and 1.x-parity null handling — now atop the released @gitsheets/core-napi 0.2.0. See the v2.3.0 release notes for the full batch details.
Technical
- chore(release): @gitsheets/core-napi 0.2.0 consumer bump [#247] @themightychris
v2.3.0
Consumer-hardening release driven by the first production 2.x migration: read-your-writes freshness, streaming attachment reads, one-call byte attachments, an exposed write lock, cast-free Standard Schema typing, and 1.x-parity null handling.
Improvements
- feat(api): read freshness (refresh + transact auto-refresh) and streaming blob reads [#239] @themightychris
- feat(api): bytes attachments, repo.withLock, and cast-free Standard Schema typing [#242] @themightychris
- fix(marshal): drop null/undefined-valued keys instead of throwing (1.x parity) [#241] @themightychris
Technical
- docs(specs): correct attachment handle naming to shipped types [#246] @themightychris
v2.2.0
A big agent-facing (gitsheets-axi) release: bulk write ops, read-side analytics, and incremental-write robustness — the toolkit an agent needs to ingest, classify, and audit a databank at scale without falling back to --ndjson-out | jq.
Improvements
- feat(axi): bulk upsert + patch, side-channel query exports, config/working-tree hints [#222] @themightychris
- feat(axi): read-side analytics, filter operators, write robustness, rename + bulk delete (#223) [#227] @themightychris
Technical
- chore: consume holo-tree fixes — place attachments by hash + drop CI git-identity workaround (#220, #221) [#224] @themightychris
v2.1.0
v2.1.0 adds Sheet.count(), a cheap record count that walks candidate paths without parsing any record, and fixes the gitsheets-axi home/sheets overview: record counts now render as bare numbers instead of quoted strings, and are counted via the cheap path rather than by loading every record in every sheet.
Improvements
- feat(sheet): add Sheet.count() — cheap record count without parsing @themightychris
- fix(axi): count via Sheet.count() + render record counts as numbers @themightychris
Technical
- docs(skill): update gitsheets skill for the v2 Rust core @themightychris
v2.0.0
v2.0.0 rebuilds the gitsheets engine as a shared Rust core (@gitsheets/core-napi), with a new Python binding running on that same core. The public JavaScript API does not change, so upgrades are drop-in at the code level. Two things do change for existing repos: the package now depends on a prebuilt native addon (bundled for Linux x64/arm64 with glibc and musl, macOS x64/arm64, and Windows x64, so a plain install needs no build toolchain), and the canonical on-disk form is re-baselined once. The re-baseline is value-preserving; re-normalize an existing repo with git sheet normalize. Bulk upsert is about 24% faster and queries about 2.4x faster.
Improvements
- feat(node): re-thin the gitsheets package over the Rust core (the cutover, #127) [#216] @themightychris
- feat(python): pyo3 binding over gitsheets-core [#211] @themightychris
Technical
- chore(deps): bulk dependency update (supersedes dependabot #193, #190, #186) [#198] @themightychris
- specs+plans: Rust-core architecture + full implementation DAG (#127) [#200] @themightychris
- feat(core): migrate tree ops to @hologit/holo-tree (#127) [#201] @themightychris
- feat(core): migrate Transaction commit + ref movement to @hologit/holo-tree (#127) [#202] @themightychris
- feat(core): migrate working tree to @hologit/holo-tree, drop hologit (#127) [#203] @themightychris
- docs(specs): reconcile architecture with merged holo-tree migration @themightychris
- docs(specs): lock FFI type-fidelity rules for the core value type @themightychris
- chore(plans): mark gitsheets-core-foundation in-progress @themightychris
- feat(core): scaffold gitsheets-core + napi FFI boundary [#204] @themightychris
- chore(plans): mark toml-canonical-core in-progress @themightychris
- feat(core): TOML parse/serialize + canonical normalization in gitsheets-core [#205] @themightychris
- docs(specs): lock boa_engine as the embedded JS engine @themightychris
- chore(plans): mark definition-logic-core + canonical-rebaseline in-progress @themightychris
- feat(core): rebaseline canonical form + normalization spec [#206] @themightychris
- feat(core): definition logic — path templates, validation, embedded boa engine [#207] @themightychris
- chore(plans): split record-engine-core; carve out record-query-index @themightychris
- feat(core): record CRUD + diff/patch over holo-tree [#208] @themightychris
- chore(plans): mark record-query-index in-progress @themightychris
- feat(core): query traversal + filtering + secondary indexing [#209] @themightychris
- chore(plans): mark sheet-store-core in-progress @themightychris
- feat(core): Sheet / Transaction / Store orchestration in the core [#210] @themightychris
- chore(plans): split cutover prereqs (markdown codec, native ICU collation) @themightychris
- feat(core): markdown/mdx content-type codec [#212] @themightychris
- chore(plans): mark locale-collation-core in-progress @themightychris
- feat(core): native ICU collation for declarative locale sort [#213] @themightychris
- chore(plans): add markdown-normalize-core (native dprint, no wrap) @themightychris
- feat(core): native dprint markdown body normalization [#214] @themightychris
- chore(plans): mark node-binding-thin in-progress (the cutover) @themightychris
- chore(plans): add attachment-staging-core; re-gate the cutover @themightychris
- feat(core): attachment + blob staging + diff rename detection [#215] @themightychris
- chore(plans): re-dispatch node-binding-thin (core now attachment-complete) @themightychris
- chore(plans): track addon per-platform prebuild + npm publish (release track) @themightychris
- docs(specs): reconcile stack/architecture to the shipped Rust core [#217] @themightychris
- chore(plans): mark addon-prebuild-publish in-progress @themightychris
- ci(release): prebuild + trusted-publish machinery for @gitsheets/core-napi [#218] @themightychris
- docs(plans): mark addon-prebuild-publish done (7 packages live + verified) @themightychris
- docs(readme): refresh for the shipped Rust-core engine (v2) @themightychris
- build(deps): sync lockfile with published @gitsheets/core-napi platform packages @themightychris
v1.4.1
TOML records now parse with smol-toml, eliminating a ~6× heap blowup for consumers that hold large datasets in memory — with no change to the on-disk format.
Improvements
- perf(toml): parse with smol-toml, keep @iarna for serialize [#197] @themightychris
Technical
- docs(specs): promote holo-tree migration + land spike planning record [#195] @themightychris
- chore(specops): adopt consolidated CLAUDE.md hook + plans protocol @themightychris
- chore(skills): update specops skill @themightychris
- chore(asdf): bump nodejs to 22.22.3 @themightychris
v1.4.0
Adds an explicit setup hooks command to install the agent session hook, matching the AXI standard and the first-party reference tools.
Improvements
- feat(gitsheets-axi): add
setup hookscommand for session-hook install [#191] @themightychris
Technical
- chore(agents): install specops skill @themightychris