-
MyFSIO v0.5.5 Beta Pre-Release
released this
2026-07-02 07:38:11 +00:00 | 14 commits to main since this releaseHighlights
This release introduces a new completed-multipart storage layout that makes
CompleteMultipartUploadan O(metadata) operation on any filesystem, alongside a round of UI security hardening (XSS fixes), observability corrections, and object-browser reliability fixes.New Features
Segment-based multipart object layout (
MULTIPART_OBJECT_LAYOUT=segments, now the default)- Completed multipart objects are stored as immutable per-part segment files with a sparse stub at the object's key path, instead of concatenating all parts into a single file.
CompleteMultipartUploadbecomes an O(metadata) operation — no full-object copy — so large multipart completes are fast on any filesystem.- Enables zero-copy versioned overwrites.
- All read paths are layout-aware: GET, Range GET,
partNumberGET, server-side copy, replication, and S3 Select all transparently handle both the newsegmentslayout and the legacyconcatlayout. CompleteMultipartUploadnow returnsx-amz-version-id.- Garbage collection sweeps orphaned segment directories (
GC_SEGMENT_MAX_AGE_HOURS, default 24).
Compatibility note: Only new completes use the
segmentslayout; existing objects are untouched and readers handle both layouts indefinitely. SetMULTIPART_OBJECT_LAYOUT=concatto retain the legacy single-file assembly. Older server binaries cannot readsegments-layout objects — upgrade all nodes before enabling.Security
- Fixed UI cross-site scripting (XSS) vulnerabilities:
- Corrected a no-op
escapeHtmlhelper that was failing to escape output. - Closed a JSON-island
<script>breakout in embedded page data. - Swept the remaining
json_encode | safetemplate patterns.
- Corrected a no-op
- Vendored Chart.js locally instead of loading it from a third-party origin.
Improvements
- Cluster resilience: Cluster overview auto-refresh now recovers after peer outages via a shared
PollingManager, and offline-peer cards recover instead of staying stuck. - Scan pollers back off and retry instead of giving up with stale failure counters.
- Static assets: ETags are memoized with vendor caching for cheaper conditional responses.
- Object browser: Object timestamp display is now unified across the browser UI, and folder navigation syncs to a
?prefix=URL for deep links and working back/forward navigation. - Chart.js load failures are now surfaced to the user instead of failing silently.
Bug Fixes
- GC freed-bytes accounting: GC now emits an accurate
total_bytes_freedand counts quarantined files, fixing a persistent undercount. - Object browser virtualizer: Fixed folder-checkbox selection desyncing on scroll, and the virtual list now measures actual row height instead of hardcoding 53px.
- Removed dead bucket-detail modules and hardened poller guards and the Connections edit/refresh flow.
Configuration
Variable Default Description MULTIPART_OBJECT_LAYOUTsegmentsCompleted MPU storage layout: segments(immutable part segments + sparse stub) orconcat(legacy single-file assembly). Affects new completes only.GC_SEGMENT_MAX_AGE_HOURS24Age before orphaned multipart segment directories are GC-swept. Downloads