tcfs v0.12.1
·
2 commits
to 994250991da9dbc4a1de3316aecf0bc582e690dc
since this release
tcfs v0.12.1
Quick Install
macOS (.pkg installer — recommended):
curl -LO https://github.com/Jesssullivan/tummycrypt/releases/download/v0.12.1/tcfs-0.12.1-macos-aarch64.pkg
sudo installer -pkg tcfs-0.12.1-macos-aarch64.pkg -target /Linux / macOS (shell script):
curl -fsSL https://github.com/Jesssullivan/tummycrypt/releases/download/v0.12.1/install.sh | shHomebrew:
brew tap Jesssullivan/tummycrypt https://github.com/Jesssullivan/tummycrypt --branch homebrew-tap
brew install tcfsContainer image:
podman pull ghcr.io/jesssullivan/tcfsd:v0.12.1Debian/Ubuntu:
curl -LO https://github.com/Jesssullivan/tummycrypt/releases/download/v0.12.1/tcfs-0.12.1-amd64.deb
sudo dpkg -i tcfs-0.12.1-amd64.debRPM (Fedora/RHEL/Rocky):
curl -LO https://github.com/Jesssullivan/tummycrypt/releases/download/v0.12.1/tcfsd-0.12.1-x86_64.rpm
sudo rpm -i tcfsd-0.12.1-x86_64.rpmVerify checksums
curl -LO https://github.com/Jesssullivan/tummycrypt/releases/download/v0.12.1/SHA256SUMS.txt
sha256sum -c SHA256SUMS.txtVerify signature (Sigstore Cosign)
curl -LO https://github.com/Jesssullivan/tummycrypt/releases/download/v0.12.1/SHA256SUMS.txt.sig
curl -LO https://github.com/Jesssullivan/tummycrypt/releases/download/v0.12.1/SHA256SUMS.txt.pem
cosign verify-blob \
--signature SHA256SUMS.txt.sig \
--certificate SHA256SUMS.txt.pem \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--certificate-identity-regexp 'github.com/Jesssullivan/tummycrypt' \
SHA256SUMS.txtmacOS artifacts
macOS CLI binaries are Developer ID signed when Apple credentials are configured.
FileProvider and .pkg notarization is attempted for Apple artifacts, but release
publication does not fail if Apple's notarization service or account agreements are unavailable.
Binaries included
| Binary | Purpose |
|---|---|
tcfs |
CLI: push, pull, sync-status, mount, unsync |
tcfsd |
Daemon: gRPC socket, FUSE, Prometheus metrics |
tcfs-tui |
Terminal UI for interactive management |
tcfs-mcp |
MCP server for AI agent integration |
What's Changed
- fix(sync): P0 sync engine — empty files, permissions, delete by @Jesssullivan in #176
- feat(sync): symlink handling with cycle detection by @Jesssullivan in #177
- feat(sync): streaming chunker for large files (>64MB) by @Jesssullivan in #178
- fix(nats): sync_always documentation + stream health verification by @Jesssullivan in #181
- fix(sync): eliminate panics — unwrap, bounds check, parse validation by @Jesssullivan in #182
- fix(daemon): race guards for FileDeleted, deferred vclock, active-file protection by @Jesssullivan in #184
- fix(fuse): implement flush via VFS fsync + improve error-to-errno mapping by @Jesssullivan in #187
- fix(vfs): OOM prevention, RwLock for concurrent reads, bounded negative cache by @Jesssullivan in #188
- feat: unsync dehydration + auto-unsync with disk pressure by @Jesssullivan in #191
- feat: selective sync policies + D-Bus gRPC backend by @Jesssullivan in #192
- feat(sync): sync trash + bandwidth throttling by @Jesssullivan in #193
- feat(cli): tcfs trash list/restore/purge commands by @Jesssullivan in #194
- fix(storage): centralize prefix resolution, fix 5 namespace bugs by @Jesssullivan in #195
- fix(sync): recursive remote index listing + ListFiles fallback by @Jesssullivan in #196
- feat(daemon): hydration state in ListFiles + macOS watcher disable by @Jesssullivan in #197
- feat(daemon): periodic reconciliation loop by @Jesssullivan in #198
- feat(fileprovider): badge decorations + custom actions, remove FinderSync by @Jesssullivan in #199
- fix(security): NATS TLS default, trash path traversal, auth bypass warning by @Jesssullivan in #215
- fix(sync): clear both conflict and status on resolution by @Jesssullivan in #211
- fix(sync): sync empty directories via .tcfs_dir markers by @Jesssullivan in #212
- feat(menubar): TCFSStatus.app conflict monitor by @Jesssullivan in #200
- test(sync): unit tests for engine, NATS serialization, reconcile by @Jesssullivan in #213
- fix(sync): retry chunk upload/download with exponential backoff by @Jesssullivan in #214
- chore: repo hygiene — stale advisories + unreachable!() by @Jesssullivan in #216
- fix(secrets): unified credential discovery, AWS file support by @Jesssullivan in #217
- test(fileprovider): 9 functional tests with memory backend by @Jesssullivan in #218
- test(daemon): 8 gRPC unit tests + fix production unwraps by @Jesssullivan in #219
- fix(cli): replace bare unwrap() with expect() by @Jesssullivan in #220
- test(fuzz): cargo-fuzz targets + proptest for manifest, crypto, paths by @Jesssullivan in #221
- [codex] Reject traversal paths in gRPC push by @Jesssullivan in #239
- [codex] Persist and recover StateCache metadata by @Jesssullivan in #240
- [codex] Converge toolchain and CI by @Jesssullivan in #242
- [codex] Align canonical home and release surfaces by @Jesssullivan in #244
- [codex] Retry manifest reads during download by @Jesssullivan in #241
- [codex] Add recovery-aware manifest/index publish durability by @Jesssullivan in #243
- [codex] Add failure-injection retry coverage by @Jesssullivan in #245
- [codex] Expand tcfsd gRPC coverage by @Jesssullivan in #246
- [codex] Add tcfs-mcp tool coverage by @Jesssullivan in #247
- [codex] Add resilience replay simulation coverage by @Jesssullivan in #248
- [codex] Fix PathLocks cleanup under contention by @Jesssullivan in #249
- [codex] Add orphaned chunk visibility by @Jesssullivan in #250
- [codex] Add orphan chunk grace-period cleanup by @Jesssullivan in #251
- [codex] Prevent upload TOCTOU races by @Jesssullivan in #252
- [codex] Normalize Unicode rel paths by @Jesssullivan in #254
- [codex] Make key rotation resumable by @Jesssullivan in #253
- [codex] Cover NATS retry delivery decisions by @Jesssullivan in #255
- [codex] Add CLI workflow coverage by @Jesssullivan in #256
- [codex] Wire orphan chunk cleanup into reconcile surfaces by @Jesssullivan in #257
- [codex] Add guarded FUSE mount roundtrip coverage by @Jesssullivan in #258
- [codex] Cover live NATS durable replay semantics by @Jesssullivan in #259
- [codex] Expand FUSE lifecycle coverage across rename and delete by @Jesssullivan in #260
- [codex] Cover live storage outage recovery by @Jesssullivan in #261
- [codex] Add named neo-honey live smoke lane by @Jesssullivan in #268
- [codex] Sign release container image by digest by @Jesssullivan in #266
- [codex] Record Apple surfaces as experimental by @Jesssullivan in #270
- [codex] Backfill changelog through v0.12.0 by @Jesssullivan in #269
- [codex] Reduce overstatement in platform support docs by @Jesssullivan in #267
- [codex] Let manual release dispatch exercise tag-gated jobs by @Jesssullivan in #271
- [codex] Harden release proof dispatch and Apple notarization by @Jesssullivan in #272
- [codex] Prepare v0.12.1 release metadata by @Jesssullivan in #273
Full Changelog: v0.12.0...v0.12.1