-
MyFSIO v0.5.7 Beta Pre-Release
released this
2026-07-24 13:56:51 +00:00 | 6 commits to main since this releaseBreaking changes
- Streaming SigV4 is now enforced by default.
STRICT_STREAMING_SIGV4defaults totrue(wasfalse). The server now validates per-chunk signature chains, the final zero-length chunk, and signed trailers onSTREAMING-AWS4-HMAC-SHA256-PAYLOAD*uploads, and rejects requests that fail validation or declare streaming without a signing context — previously these were accepted unvalidated (fail-open passthrough). If you must keep the old behavior for a non-conforming client, setSTRICT_STREAMING_SIGV4=false; this is a warn-and-passthrough escape hatch, and checksum trailers are still verified either way. - Unknown bucket sub-resources now return
501 NotImplemented.GET/DELETEagainst an unrecognized bucket sub-resource no longer falls through to a bucket listing.
Added
- Full upload-checksum verification:
crc32c,sha1, andcrc64nvmeare now verified alongsidemd5/sha256/crc32on every upload path, and theaws-chunkedtrailer checksum section is parsed and verified (it was previously discarded). x-amz-checksum-*response headers onGET/HEADare now gated behindx-amz-checksum-mode: ENABLED.- Durable per-bucket replication pending-ledger (
.myfsio.sys/buckets/<bucket>/replication/pending.snapshot.json+pending.journal.jsonl) with crash-safePENDING → COMPLETED → ackordering, startup replay with zero sidecar scan, and a one-time seeding migration for pre-ledger buckets. REPLICATION_FULL_RECONCILE_INTERVAL_HOURS(default0= off) for an optional periodic full replication consistency pass.- Persistent per-bucket counters (live objects/bytes, version count/bytes, delete-marker count) in the listing snapshot, giving O(1) quota checks and bucket stats.
Changed
- Listing-index compaction moved off the
PUT/DELETErequest path to a background worker (generation-numbered journals, seal-under-lock / snapshot-outside-lock, drains before shutdown). - Object metadata read cache is now a real LRU;
OBJECT_CACHE_MAX_SIZEdefault raised100 → 1024. - UI: presign expiry gains preset + custom-seconds inputs with inline min/max validation that blocks out-of-range values (previously clamped silently); create-bucket dialog autofocuses and adds an enable-versioning checkbox; AJAX
401now redirects to/login?next=; a single shared binary-unit byte formatter replaces 8+ duplicates; metrics "As of" is server-formatted inDISPLAY_TIMEZONE; the quota card splits into Objects / Versions / Total stored; error toasts are titled "Error"; object preview has a stable layout with%PDF-magic-byte sniffing and a styled "Preview unavailable" fallback. - UI bucket / dashboard / cluster storage walks are parallelized.
Fixed
- Quota undercounting on versioned and versioning-suspended overwrites; quota fallback
PUTs now bypass the stats cache instead of projecting from stale totals.
Downloads
- Streaming SigV4 is now enforced by default.