This repository was archived by the owner on Apr 30, 2026. It is now read-only.
Repository navigation
v0.3.0 "Angora"
darn v0.3.0
Patchwork alignment, porcelain mode, property tests, and cross-platform CI.
Highlights
- Patchwork schema alignment β Directory and file documents now match Patchwork's
FolderDoc/FileDocconventions (title/docs/urlfields,extension/mimeType, automerge URL encoding via bs58check) - Porcelain output mode (
--porcelain) β Machine-readable tab-separated output on every command; no spinners, colors, or box-drawing characters.--forceimplied. - File attributes (
.darnattributes) β Gitattributes-style rules for overriding text/binary detection. Includes sensible defaults for lockfiles, source maps, and minified assets. Files over 1 MB default to binary. - TLS backend selection β
native-tls(default) for macOS/Linux-gnu,rustlsfor musl static builds. No OpenSSL needed for statically-linked binaries. - Property-based testing β 13 modules converted to bolero property tests covering roundtrips, idempotency, and validation invariants.
New Features
--porcelainglobal flag for scriptable output on all commands-v/--verboseglobal flag enables debug-level tracing.darnattributesfile for text/binary/auto classification per glob patterndarn clonenow accepts automerge URLs (automerge:<bs58check>) in addition to raw IDs- Parallel file discovery with
ShardedDirCacheand progress callbacks - Remote file deletion detection β files removed on the remote are cleaned up locally
- Streaming UTF-8 validation (64 KB chunks instead of full-file reads)
TLS & Build
- Feature flags:
native-tls(default) andrustlson bothdarn_coreanddarn_cli - musl targets build with
--no-default-features --features rustls(pure Rust TLS, no system OpenSSL) tungstenitedependency trimmed todefault-features = falseto avoid pulling in OpenSSL transitively- Release profile:
lto = "fat",codegen-units = 1,panic = "abort",strip = "symbols"
CI
- build.yml β 5-target matrix (x86_64/aarch64 Γ gnu/musl + aarch64-apple-darwin) plus Nix build; automatic nightly releases
- test.yml β ubuntu + macOS matrix plus Nix-based test run
- quality.yml β build, check, nightly rustfmt, clippy with
-D warnings - cargo-audit.yml β daily + on-push dependency vulnerability scanning
- spellcheck.yml β markdown spellcheck with custom dictionary
Testing
- 13 modules now use bolero property tests (path, file, directory, refresh, peer, manifest, discover, ignore, attributes, workspace/id, workspace/registry, file/name, file/metadata/permissions)
Once-guarded test signer ensures CI works without pre-existing~/.config/darn/signer/- Tests migrated from
.expect()panics to-> TestResultwith? - Removed tests that only exercised external libraries
Bug Fixes
- File discovery now respects
.darnattributesand includes dotfiles like.darnignore - Large files (>1 MB) default to binary storage, avoiding expensive character-level CRDT overhead
- Fixed
tungstenitedefault features pulling in OpenSSL on musl targets - Fixed feature unification where workspace dependency defaults re-enabled
native-tls
Breaking Changes
- Automerge document schema updated to Patchwork conventions β existing v0.2 workspaces need migration
anyhowreplaced witheyre/color-eyre- Repository moved to
github.com/inkandswitch/darn
Dependencies
- Added:
color-eyre,eyre,globset,sha2,bolero(dev) - Removed:
anyhow - Updated:
console0.15 β 0.16 - Nix: Rust pinned to 1.90.0, nightly rustfmt pinned to 2026-02-23