v1.4.1

parruda/swarmv1.4.1Aug 7, 2026by github-actions[bot]

AI Summary

This release introduces a command-line tool for self-hosted administrators to reactivate workspace members and enhances security by hardening asset uploads and upgrading various dependencies.

Key Highlights

  • New 'reactivate_workspace_member' command for self-hosted admins
  • Security hardening for asset uploads (clamping file size to limits)
  • Dependency upgrades (cryptography, React Router, sharp) to fix vulnerabilities
  • Bug fix for notifications failing on self-hosted deployments
  • Error boundary for work item layouts to prevent page crashes

New Features

  • Workspace Member Reactivation Command
  • Module members list in workspace-level modules
  • Error boundary for work item layouts

Full Release Notes

### ✨  Features

#### **Workspace Member Reactivation Command**

Self-hosted administrators can now restore a deactivated workspace member straight from the command line, without editing the database by hand. Running `reactivate_workspace_member <workspace-slug> <email>` re-enables the membership and reports the role the member is restored to.

- Validates the workspace, the user, and the existing membership before changing anything, with a clear error when any of them is missing
- Safe to re-run — an already-active member is reported as such instead of failing
- Keeps audit fields intact by limiting the write to the membership's active state

### ⬆️  Enhancements

- The workspace-level modules list now returns the member IDs for each module, so module members and member-based filters render correctly on the workspace modules view.
- Work item layouts are now wrapped in an error boundary. If a single layout fails to render, it degrades to a local "Something went wrong" message with a Retry button instead of taking down the whole page.

### 🐞  Bug fixes

- Fixed notifications failing to load on self-hosted deployments, where a missing trailing slash on the notification list request surfaced as a 500 error behind the reverse proxy.
- Fixed filtering modules by member breaking for modules with no members assigned.
- Fixed the layout dropdown button being clipped and overlapping neighbouring controls in the Create View modal.
- Fixed crashes on work items whose labels included an ID that no longer resolves to a label, affecting the properties row, the spreadsheet label column, the peek overview, and draft work items.
- Fixed crashes when a response came back empty or in an unexpected shape, affecting description version history, previous exports, the integrations list, profile activity, and sub-work-items.
- Fixed the previous exports list failing to refresh, and surfaced an error instead of failing silently when the refresh does not go through.
- Fixed profile activity showing a loading state indefinitely instead of an empty state when a user had no activity.

### 🛡️ Security

- Hardened asset uploads on published Space pages. The endpoint previously trusted the client-supplied file size when signing the upload policy, allowing a caller to request a policy larger than the instance's configured `FILE_SIZE_LIMIT`. The size is now clamped to the instance limit and malformed values are rejected.
- Upgraded `cryptography` to 50.0.0 to close a high-severity PKCS#7 Bleichenbacher oracle.
- Upgraded React Router to 7.18.1, resolving denial-of-service, open redirect, cross-site scripting, and constructor injection advisories.
- Upgraded `sharp` to 0.35.3 to pick up high-severity libvips fixes.
- Resolved further high-severity advisories in `fast-uri` (host confusion), `js-yaml` (quadratic CPU denial of service), `linkify-it` (mailto validator denial of service), `postcss` (source map path traversal), and `undici` (information disclosure, CRLF and cookie injection).
- Resolved medium- and low-severity advisories in `sanitize-html` (URI scheme validation bypass), `valibot`, and `body-parser` (request limit bypass).