• v0.5.7 424d2f99c4

    MyFSIO v0.5.7 Beta Pre-Release

    kqjy released this 2026-07-24 13:56:51 +00:00 | 6 commits to main since this release

    Breaking changes

    • Streaming SigV4 is now enforced by default. STRICT_STREAMING_SIGV4 defaults to true (was false). The server now validates per-chunk signature chains, the final zero-length chunk, and signed trailers on STREAMING-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, set STRICT_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/DELETE against an unrecognized bucket sub-resource no longer falls through to a bucket listing.

    Added

    • Full upload-checksum verification: crc32c, sha1, and crc64nvme are now verified alongside md5/sha256/crc32 on every upload path, and the aws-chunked trailer checksum section is parsed and verified (it was previously discarded).
    • x-amz-checksum-* response headers on GET/HEAD are now gated behind x-amz-checksum-mode: ENABLED.
    • Durable per-bucket replication pending-ledger (.myfsio.sys/buckets/<bucket>/replication/pending.snapshot.json + pending.journal.jsonl) with crash-safe PENDING → COMPLETED → ack ordering, startup replay with zero sidecar scan, and a one-time seeding migration for pre-ledger buckets.
    • REPLICATION_FULL_RECONCILE_INTERVAL_HOURS (default 0 = 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/DELETE request 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_SIZE default raised 100 → 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 401 now redirects to /login?next=; a single shared binary-unit byte formatter replaces 8+ duplicates; metrics "As of" is server-formatted in DISPLAY_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