Skip to content

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 27 Jun 02:16
· 111 commits to main since this release

1.0.0 (2026-06-27)

  • feat(db)!: adopt kysely, kanel codegen, and kysely-owned migrations (3f6878a)
  • feat(protocol)!: serve full git clone over smart-HTTP v2 (9dd0aea)
  • feat(storage)!: stream ingest through binary COPY and lift the push-size ceilings (259c210)
  • refactor(storage)!: collapse the repo_view projection onto git_object (77aa854)
  • refactor(storage)!: replace pack-blob storage with a postgres-native object schema (cff466f)

Bug Fixes

  • gc: stamp last_pushed_at after the ingest commits, not inside the txn (b83a768)
  • http: decode gzip-compressed request bodies (406e304)
  • http: return git smart-HTTP responses as arraybuffer bodies (d08aae5)
  • object: fail loud on malformed or truncated git trees (35b5ec7)
  • pack: resolve delta bases by fixpoint to handle chained ref-deltas (df939a4)
  • protocol: serve empty pack for zero-want fetch to match git's oracle (11961e4)
  • protocol: surface wire-fault and missing-want conditions as clean client errors, not 500 (5e3c7e7)
  • release: drop npm provenance so scoped token publish works (49b80a8), closes npm/cli#8976
  • testing: apply migrations directly to isolated schemas to avoid drop races (3701286)
  • testing: handle benign git stdin EPIPE so the worker no longer crashes (8f40902)

Features

  • add git object id and packfile object-header codecs (ee1c879)
  • gc: add self-scheduling background GC drain (d45f191)
  • gc: implement per-repo reachability garbage collection (4773eb4)
  • generative: add extendRepoFromCommands seam for incremental differentials (dcf8cad)
  • graph: enumerate reachable objects for fetch packing (ff8d7f6)
  • instrument: add opt-in request-scoped performance instrumentation (a41e3d5)
  • pack: add undeltified v2 packfile writer (99a691c)
  • pack: add v2 packfile reader for base-type objects (9289994)
  • pack: resolve OFS and REF deltas when reading v2 packfiles (2b3cdef)
  • pkt-line: add git wire-protocol pkt-line framing codec (6e2f0e7)
  • protocol: accept git push over smart-HTTP via receive-pack (febea7e)
  • protocol: map client wire errors to clean 400s and harden request validation (49f669c)
  • protocol: negotiate incremental fetch and serve blob:none partial clones (f50ab53)
  • push: apply ref updates atomically for --atomic pushes (48f7eae)
  • push: delete refs via delete-only pushes (3829d39)
  • push: ingest thin packs and update refs via compare-and-swap (6022e27)
  • push: reject pushes whose pack omits reachable objects (6cd57bf)
  • repo-view: project pushed working trees into queryable Postgres rows (35c31ae)
  • scaffold pggit git-remote-over-postgres server (f1e5903)
  • storage: derive and store the commit/tree/tag DAG as queryable edges (fb33d41)
  • store: add postgres-backed git object store (1a560f6)
  • store: add postgres-backed git refs store (6df21c0)

Performance Improvements

  • harness: add diagnostic clone-performance harness (dbc180f)
  • storage: replace the O(N) connectivity walk with bounded SQL queries (25c7a1f)

BREAKING CHANGES

  • the store factories createObjectStore, createRefStore, and createSnapshotStore now accept a porsager Sql client instead of a Kysely<Database>.
  • the queryable file view moves from repo_view_files/repo_view_blobs to repo_file joined to git_object, and RepoBackend drops getObject and gains an includeTag argument on buildPack.
  • migration 0001_init is rewritten to the postgres-native schema (repos/git_object/git_ref) and drops the pack-blob model (packs/objects/refs, the dead_at soft-delete reaper, the offline repack worker); existing databases must be recreated.
  • createObjectStore and createRefStore now require a Kysely rather than a postgres Sql and no longer provide migrate(); apply schema via db.manage or migrateToLatest.
  • createGitApp now requires injected object/ref stores (GitAppDeps) and no longer accepts CreateGitAppOptions/databaseUrl; the removed AppEnv type and the old startServer-builds-app behavior are replaced by serveOnPort.