4.34

stalwartlabs/stalwart4.34Jun 15, 2026by chrislusf

AI Summary

This release focuses on enhancing S3 capabilities, improving the Admin Server dashboard, and stabilizing Volume Server operations, particularly around Erasure Coding (EC) and tiering.

Key Highlights

  • S3 improvements include handling account-less identities and STS sessions with distinct owners.
  • Admin Server gains maintenance task configuration, sparklines, and a connected mount clients page.
  • Volume Server introduces crash-safe EC operations and fixes for vacuum and replication processes.
  • Grafana metrics dashboard is overhauled for better visibility.

New Features

  • Export per-bucket quota and read-only state metrics
  • Configure maintenance tasks via admin.toml
  • Native sparklines on the admin dashboard
  • Connected Mount Clients page
  • volume.tier.move can move volumes between data centers

Full Release Notes

## What's Changed
* S3
  * s3: export per-bucket quota and read-only state metrics by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9923
  * s3: validate copy source path segments by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9929
  * [s3] validate indirect filer path inputs by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9931
  * [s3]: preserve multipart copy checksums by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9948
  * s3: give account-less identities a distinct owner instead of admin by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9962
  * s3: give STS sessions a distinct owner account instead of admin by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9963
  * s3tables: scope management authorization to the caller's identity by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9961
  * s3: register account-less identities' synthesized account so ACL/owner ids resolve by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9971

* Misc
  * fix(tests): 32-bit build of EC e2e tests, type-check linux/386 in CI by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9922
  * ci: run weed tests on linux/386 by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9924
  * fix(util): ignore comment only sql input by @7y-9 in https://github.com/seaweedfs/seaweedfs/pull/9933

* Shell
  * shell: volume.tier.move can move volumes between data centers by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9925
  * shell: stop ec.encode/ec.rebuild from destroying live EC shards (no crash needed) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9939

* Admin Server
  * admin: configure maintenance tasks via admin.toml by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9926
  * admin: native at-a-glance trend sparklines on the dashboard by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9957
  * admin: fold dashboard sparklines into the existing cards (de-dup) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9964
  * admin: add connected Mount Clients page and dashboard section by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9968

* Volume Server
  * feat(storage): sweep leftover empty EC .dat stubs on volume server startup by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9927
  * fix(storage): never let an empty .dat delete healthy distributed EC shards by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9930
  * fix(ec): crash-safe ecx-journal fold and shard rebuild (fsync before publish, no short-read-as-success) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9938
  * fix(ec): never delete recoverable EC shards on startup/reconcile (the non-empty-.dat sibling of the stub bug) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9941
  * [volume] preserve volume data mtime across tier moves by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9947
  * fix(replication): verify-before-destroy in VolumeCopy, check.disk, and over-replication trim by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9943
  * fix(vacuum): crash-safe compaction commit with a durable .cpc marker, fsync-before-rename, and a reload fence by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9944
  * fix(tiering): never delete a shared remote object while replicas still reference it by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9942
  * fix(ec): make ec.decode write-path crash-safe and atomic by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9949
  * fix(ec): persist EC source readonly mark and skip writable replicas on orphan cleanup by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9950
  * [volume] preserve compression state during replication by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9946
  * fix(ec): don't fabricate a stub .vif when mounting an EC volume by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9951
  * fix(ec): group orphan-source completeness by encode generation (topology encode_ts_ns) by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9952
  * fix(ec): fence stale-worker EC shard cleanup by encode generation by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9953
  * fix(storage): delete/unmount every copy of a duplicate volume id by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9954
  * fix(ec): remove shared EC index only when no shard remains node-wide by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9955
  * fix(ec): recover EC shards with the volume's own ratio, not the build default by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9958
  * refactor(ec_balance): make the balance planner per-volume ratio-capable by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9960

* Metrics
  * metrics: overhaul Grafana dashboard for full metric coverage by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9956
  * metrics: guard time()-based dashboard panels against unset gauges by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9965
  * metrics: add per-bucket S3 panels and volume slot utilization to dashboard by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9969
  * filer: keep metadata-subscription send gauge fresh on idle heartbeat by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9966

* Helm Charts
  * [helm]: configure JWT expiration by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/9940


**Full Changelog**: https://github.com/seaweedfs/seaweedfs/compare/4.33...4.34