4.45
udecode/plate4.45Aug 31, 2026by chrislusf
Upgrading?
AI Summary
Release introducing the Rust maintenance worker, a visual IAM policy editor, and improvements to S3 API reliability and admin metrics.
Key Highlights
- Ship the Rust maintenance worker with the release.
- Add visual IAM policy editor in admin UI.
- Retry transient failures in S3 API and Filer metadata listings.
- Manage bucket policies via the admin UI.
New Features
- Rust maintenance worker
- Visual IAM policy editor
Full Release Notes
## What's Changed * helm: install chart CI against an image tag that exists by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10877 * Ship the Rust maintenance worker with the release by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10879 * Build the Rust worker against the protoc that ships with the build by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10881 * install.sh: install the Rust maintenance worker by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10882 * admin: add visual iam policy editor by @mat813 in https://github.com/seaweedfs/seaweedfs/pull/10878 * build(deps): bump github.com/moby/go-archive from 0.2.0 to 0.3.0 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10826 * admin: count plugin-runtime workers in worker metrics by @junkerderprovinz in https://github.com/seaweedfs/seaweedfs/pull/10884 * s3api: retry a transient failure when listing multipart uploads/parts (RFC on layering) by @junkerderprovinz in https://github.com/seaweedfs/seaweedfs/pull/10886 * admin: stop the maintenance scanner pinning itself to one scan per second after a transient failure by @junkerderprovinz in https://github.com/seaweedfs/seaweedfs/pull/10887 * s3api: retry a transient filer failure on metadata listings by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10890 * test: wait for volume server registration in the FUSE DLM harness by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10891 * test: keep per-test log directories in the FUSE DLM harness by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10893 * test: wait for volume server registration in the FUSE p2p harness by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10897 * server: reject a Range start offset equal to the file size by @junkerderprovinz in https://github.com/seaweedfs/seaweedfs/pull/10898 * mount: use the kernel-resolved node id in Link, not the persisted attribute by @junkerderprovinz in https://github.com/seaweedfs/seaweedfs/pull/10885 * master: never re-seed a raft cluster over committed state under -raftBootstrap by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10883 * server: 416 only when no requested range overlaps, with Content-Range, and the Rust mirror by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10889 * telemetry: confirm a cluster after a week of reports, not two days by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10899 * s3api: no filer failover after the callback has consumed part of a response by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10902 * master: don't let a dead KeepConnected handler close its successor's channel by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10900 * s3: confine a Lance catalog table location to the caller's own bucket by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10901 * ec: refund the cleared leftover shards' slots in the encode source health check by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10903 * telemetry: let the dashboard pick the confirmation window by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10904 * s3: propagate storage rule fsync to volume server uploads by @sunchao6106 in https://github.com/seaweedfs/seaweedfs/pull/10906 * Manage bucket policies via the admin ui by @mat813 in https://github.com/seaweedfs/seaweedfs/pull/10895 * admin: honor a persisted or admin.toml maintenance enabled=false by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10909 * Fixes from the review of the admin bucket policy UI by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10907 * ec: read a needle's intervals in parallel by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10911 * mini: reserve the admin gRPC port instead of binding it late by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10928 * S3: let a key that is a prefix of other keys be an object by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10912 * Bump Tarantool client library from 3.0.0 to 3.0.1 by @MaratKarimov in https://github.com/seaweedfs/seaweedfs/pull/10925 * tarantool: fix upsert data corruption and missing context propagation by @MaratKarimov in https://github.com/seaweedfs/seaweedfs/pull/10926 * build(deps): bump github/codeql-action from 4.37.6 to 4.37.8 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10923 * build(deps): bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10922 * build(deps): bump github.com/rabbitmq/amqp091-go from 1.13.0 to 1.14.0 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10920 * build(deps): bump cloud.google.com/go/pubsub from 1.51.0 to 1.51.1 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10919 * build(deps): bump github.com/shirou/gopsutil/v4 from 4.26.6 to 4.26.7 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10918 * build(deps): bump github.com/seaweedfs/goexif from 1.0.3 to 2.0.0+incompatible by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10917 * S3: commit GET status only after the first read succeeds by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10930 * helm: expose loadBalancerClass, loadBalancerIP, loadBalancerSourceRanges on services by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10929 * S3: commit SSE GET status only after the first read succeeds by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10935 * s3: log each request at -v=2 by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10931 * admin: show a copyable S3 object URL in the bucket file browser by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10933 * filer.backup, filer.sync: stop sharing resume checkpoints across destinations by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10934 * helm: serve the Lance catalog and deploy the Rust worker by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10936 * helm: trim the Lance chart comments by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10940 * mount: register UNC mount points as WinFsp network file systems by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10943 * build(deps): bump github.com/getsentry/sentry-go from 0.44.1 to 0.48.0 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/10921 * filer: stop TUS uploads from turning into garbage by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10945 * s3: stop one abandoned request from cancelling every concurrent upload by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10948 * master: stop hintless small-file assigns from marking volumes full by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10944 * volume: stop read-only volumes from pinning .idx and .sdx by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10950 * filter volume by local or remote storage name by @27149chen in https://github.com/seaweedfs/seaweedfs/pull/10946 * admin: accept a list of collections in the task collection filter by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10953 * rust volume: search .sdx for read-only volumes instead of holding the index by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10951 * s3: deny anonymous access when the identity config loads no identities by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10954 * shell: parse every collection filter the same way by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10955 * mount: name the disk after the mounted path by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10958 * rust volume: fail closed on sorted-index failures and reconcile tier-up by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10956 * master: cap the reported capacity at what the disks hold by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10960 * filer: apply the path's storage rule TTL on every write path by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10963 * mount: stop a replaced rename destination from flushing over the rename by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10965 * rust volume: stop racing the clock in torn_sdx_is_regenerated by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10966 * s3: fix UploadPartCopy with volume-data encryption by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10971 * s3: keep verifying the request host when externalUrl is set by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10970 * mount: let a rename remove its source at the source's own version by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10973 * volume: resolve the disk IO slow-latency threshold per disk by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10976 * s3: keep a missing object a 404 under If-Match and If-Unmodified-Since by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10985 * webdav: describe a listed entry the way clients expect by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10993 * mount: keep metadata operations working on an unlinked open file by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10989 * Authorize an Iceberg table create before it writes by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10991 * filer, s3: reuse the volume server's guarded remote-storage client builder by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10990 * s3tables: delete only the location the dropped table owns by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10986 * s3: cover the directory marker key with object lock by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10988 * shell: remove the directories emptied by volume.fsck's filer entry purge by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10992 * s3: reject a request that names two operations by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10987 * volume: cut the memory a server holding millions of volumes still uses by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10999 * s3: distinguish a failed bucket lookup from a missing bucket on HEAD by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11000 * wdclient: bound the wait for a master leader by the caller's context by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11002 * s3: share one retry allowance across a batch delete by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11001 * Report a delete the filer rejected instead of answering success by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11003 * Classify a filer error before a user-controlled path is wrapped into it by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11004 * Let filer.sync move past a chunk the source cluster no longer has by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11019 * Bound the memory an EC shard recovery holds by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11020 * Read metadata log chunks the way the mount reads every other chunk by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11018 * s3: replay a delete whose reply the transport dropped by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11022 * mount: implement fallocate by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11021 * Re-check an EC shard map a failed read has disproved by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11023 * ec: split the shard-interval recovery into a gather and a rebuild by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11005 * s3: an abort answered mid-part no longer leaves the upload completable by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11025 * master, filer, s3api: bound the collection deletes that strand a caller by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11026 * ec: scrub a volume through its parity data by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11006 * rust: cover the READS scrub reconstruction path by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11027 * filter by volume ids by @27149chen in https://github.com/seaweedfs/seaweedfs/pull/10983 * ec: uniform shard block layout by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/10932 * fix: Move cluster.LiveLock.generation to first field fix 32bit alignment by @baalimago in https://github.com/seaweedfs/seaweedfs/pull/11028 * ec: pin auto-selected shard placement to the disk that already owns the shard by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11029 * ec: refuse to mount a 0-byte shard file when the index has entries by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11030 * master: shed assigns retryably until volume servers register capacity by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11032 * mq: fix idle-cleanup shard deadlock that permanently wedges the broker's topic map by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11051 * get volume topology info without volume details by @27149chen in https://github.com/seaweedfs/seaweedfs/pull/11036 * build(deps): bump github.com/ydb-platform/ydb-go-sdk/v3 from 3.147.1 to 3.151.1 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/11041 * build(deps): bump modernc.org/sqlite from 1.56.0 to 1.57.0 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/11042 * build(deps): bump github/codeql-action from 4.37.8 to 4.37.9 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/11045 * build(deps): bump actions/setup-java from 5 to 6 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/11047 * build(deps): bump github.com/aws/aws-sdk-go-v2 from 1.43.5 to 1.45.1 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/11046 * build(deps): bump google.golang.org/api from 0.293.0 to 0.294.0 by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/11044 * build(deps): bump google.golang.org/grpc from 1.84.0-dev.0.20260723093437-b6eac429d7b6 to 1.85.0-dev by @dependabot[bot] in https://github.com/seaweedfs/seaweedfs/pull/11043 * sts: session duration no longer clamped to the web identity token exp by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11048 * shell: keep fs.mergeVolumes from spinning past the finished moves by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11050 * s3: let attached policies authorize CreateBucket by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11049 * shell: keep noLock to the command that set it by @chrislusf in https://github.com/seaweedfs/seaweedfs/pull/11052 ## New Contributors * @junkerderprovinz made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/10884 * @baalimago made their first contribution in https://github.com/seaweedfs/seaweedfs/pull/11028 **Full Changelog**: https://github.com/seaweedfs/seaweedfs/compare/4.44...4.45
Related Repositories
openclaw/openclaw★ 392,696
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
nilbuild/developer-roadmap★ 370,068
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
morluto/rea★ 357,772
Reverse engineer anything with agents, from app behavior down to native binaries.
anomalyco/opencode★ 219,680
The open source coding agent.
n8n-io/n8n★ 208,252
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.