You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Level and Event filters on the Log Entries list, applied client-side since the backend doesn't support filtering on these properties yet. Event uses a searchable combobox given its ~600 possible values.
Rate-limited manual Refresh button on the Log Entries list (one click per 5 seconds) (webui#8).
Role and Usage/Quota columns on the Accounts list, replacing Created At (webui#12).
Mailbox hierarchy: mailboxes are now indented under their parent instead of shown as a flat list (webui#16).
Three additional color themes — Rose, Amber, Teal — alongside Stalwart/Ocean/Forest/Violet.
"Remember last visited page" per section (localStorage), so switching sections returns to where you left off.
Username and email shown directly in the TopBar user menu trigger.
"Active WebUI" info card and column in the Web Applications list, showing which web app is currently serving the admin UI.
Backend/provider icons across the variant selectors (DNS providers, storage/directory backends, Redis/Valkey).
Changed
Default color theme is now Ocean with square corners (previously Stalwart with rounded corners); existing saved preferences are unaffected.
Active account is preserved across page reloads instead of resetting to the primary account, and switching accounts fully remounts the current view (and clears cached display-name/list lookups) so account-scoped data refreshes immediately instead of requiring a tab switch first (webui#17; reviewed against upstream's own fix for the same issue in stalwartlabs/webui@189e270 and aligned with it).
WebUI label renamed to "Stalwart WebUI Fork" to distinguish this fork from upstream.
Appearance settings moved from the sidebar to the header user dropdown.
Dynamic page titles prefixed with "Stalwart |".
x:Application list layout aligned with Domains (Description first, Enabled second).
Updated Vite to 8.2.0, @vitejs/plugin-react to 6.0.5, and lucide-react to 1.28.0.
Fixed
Custom logos no longer flash the default Stalwart logo while loading. Loading is encapsulated in logoCache (shared fetch + AbortController + blob URL revoke), keeping uiStore free of logo state while still caching across TopBar/Login remounts.
Icon/label alignment in backend select triggers.
Web Applications list shows an Enabled column again.
Appearance Corners preview: only the Rounded choice forces rounded radius on its card and sample; Square stays sharp even when the global theme is square.
Removed the experimental PWA/service worker: it precached index.html with <base href="/">, which broke Stalwart's mount-path rewrite (/admin, /account) and produced a blank UI. Aligns with upstream webui, which does not ship a service worker.
iOS home-screen Web App support without a service worker: apple-touch-icon plus apple-mobile-web-app-title set to "Stalwart".
Known limitations (confirmed backend-side, not fixable from this fork)
Level/Event filters on Log Entries are client-side only (see Added above) because the backend's JMAP query engine rejects level/event as filter conditions (webui#15).
Text filters across the admin API (Spam Rules & Scores, Accounts, Domains, ...) only support exact match, not partial/glob/wildcard search — confirmed systemic across the whole x: filter engine, requires a server-side change.