Repository navigation
Releases: sandgorgon/9vcs
Release list
v0.1.9
What's Changed
- Accept multi-line messages: repeatable -m like Git by @sandgorgon in #41
Full Changelog: v0.1.8...v0.1.9
v0.1.8
What's Changed
- Backfill detailed root-cause writeups into earlier CHANGELOG entries by @sandgorgon in #38
- Bump github.com/sandgorgon/9p to v0.9.1 by @sandgorgon in #39
- Add CHANGELOG entry for v0.1.8 by @sandgorgon in #40
Full Changelog: v0.1.7...v0.1.8
v0.1.7
What's Changed
- Add 9sh-native root resolution over a namespace-first fsx.FS/Tree seam by @sandgorgon in #36
- Add CHANGELOG entry for v0.1.7 by @sandgorgon in #37
Full Changelog: v0.1.6...v0.1.7
v0.1.6
What's Changed
- Document 9vcs restore in the README recovery section by @sandgorgon in #32
- Refresh PLAN.md Status: date and go.mod version by @sandgorgon in #33
- Fix line-graph self-fork from same-patch multi-line delete runs by @sandgorgon in #34
- Add CHANGELOG entry for v0.1.6 by @sandgorgon in #35
Full Changelog: v0.1.5...v0.1.6
v0.1.5
What's Changed
- Add CHANGELOG entry for v0.1.4 by @sandgorgon in #29
- Bump github.com/sandgorgon/9p to v0.7.0; add 9vcs restore by @sandgorgon in #30
- Add CHANGELOG entry for v0.1.5 by @sandgorgon in #31
Full Changelog: v0.1.4...v0.1.5
v0.1.4
What's Changed
- Add CHANGELOG entry for v0.1.3 by @sandgorgon in #24
- Extract working-tree-diff orchestration into a repo library by @sandgorgon in #27
- Add selective (partial) record, keyed by line identity by @sandgorgon in #28
Full Changelog: v0.1.3...v0.1.4
v0.1.3
What's Changed
- Add CHANGELOG entry for v0.1.2 by @sandgorgon in #20
- Add a version command and print it in the help screen by @sandgorgon in #21
- Migrate identity/ to github.com/sandgorgon/9auth by @sandgorgon in #23
Full Changelog: v0.1.2...v0.1.3
v0.1.2
What's Changed
- Add binary release workflow and document it in the README by @sandgorgon in #19
Full Changelog: v0.1.1...v0.1.2
v0.1.1
[0.1.1] - 2026-08-25
Follow-ups from actually dogfooding v0.1.0 (a real two-person-plus
workflow: serve/import/reconcile including genuine divergence
and conflict resolution, bundle export/import, offer/offer apply). No functional or security issues found — these are all
polish/documentation gaps.
Fixed
9vcs help'sstatusline still advertised the removed rename
detection'sR/R+codes; corrected to(A/M/D/U).- Text conflicts (the most common kind) fell through to a generic
CONFLICT: pathmessage inmerge/apply's output, unlike
binary/symlink/type/modify-delete conflicts, which all got a
specific, actionable one. Added an explicit message pointing at the
<<<<<<</=======/>>>>>>>markers.
Documentation
- Clarified that
serveonly reads.9vcs/authorized-peersonce, at
startup — editing it doesn't revoke or grant access on an
already-running server the way "immediately" implied. - Documented that running
offer list/apply/removeagainst your
ownserverequires your own fingerprint to also be listed in your
ownauthorized-peers— otherwise the connection is refused. - Documented the "a network push refuses to move the branch checked
out on the serving machine" behavior in the team workflow section,
with the actual recommended pattern (keep a non-shared branch
checked out where you serve from).
v0.1.0
Changelog
All notable changes to 9vcs are documented here. Format loosely follows
Keep a Changelog; versioning is
semver, with the caveat described in the
README's Versioning and compatibility
section — the on-disk patch/bundle format makes no compatibility
promise between pre-1.0.0 releases.
[0.1.0] - 2026-08-25
First tagged release.
Added
- Full local operation:
init,record,log,branch,diff,
checkout,merge,status— real patch-graph conflict detection
(line-level forks, binary/symlink conflicts, modify/delete races),
not a three-way text diff. apply: N-way merge of multiple patches/branches in a single step.- Networking:
9vcs serve(a 9P2000 server over TLS 1.3 with pinned-
fingerprint peer authentication),import(one-way pull), and
reconcile(bidirectional pull/push), each gated by per-peer
read/propose/writepermissions. - Offline change exchange:
bundle export/import/show(signed,
single-file patch bundles) andoffer/offer list/offer apply
(submit a change without write access, via a peer's/offers
mailbox). - Per-patch authorship: optional Ed25519 signing
(AuthorFingerprint/AuthorSignature), verified independently of
transport-level trust — a relay can't forge authorship of a patch it
merely passes along. .9vcsignoresupport, executable-bit and symlink tracking.- Client-side known-peers store with trust-on-first-use semantics for
import/reconcile.
Security
A round of audits ahead of this release found and fixed several real
issues: path traversal (via patch file paths, ref names, and
symlinks), a couple of unbounded-allocation/CPU-exhaustion vectors
reachable over the network, a local ref-write race, and a
merge-conflict-detection gap that could silently drop one side's
content instead of reporting a conflict. See PLAN.md for
the full writeup of each.
Known limitations
- iOS and Windows builds are unverified — untested on either platform
(see PLAN.md's "Open items to revisit"). - No format-compatibility promise between
v0.xreleases — see
Versioning and compatibility.