What's new in v2.1.0
Features
- OIDC group claim → admin role mapping (#190) — SSO providers can now grant or revoke admin access automatically via a group claim in the JWT. Configure the claim name and expected value in Settings → SSO.
- Custom CSS (#191) — Inject your own CSS from Settings → Appearance to personalise the interface beyond the built-in themes.
- Mark-as-read behaviour (#195) — Choose when messages are marked as read: immediately on open, after a configurable delay (1–10 seconds), or never automatically. Configurable in Settings → Appearance → Layout.
- Sender avatars (#197) — Contact photos from CardDAV-synced contacts now appear as avatars in the message list, falling back to the existing initials circle when no photo is available.
Fixes
- Select button on desktop (#194) — The bulk-select button was missing from the message list header on desktop; it now appears alongside the other header controls.
- Inbox refresh delays — Deleting a message now immediately broadcasts a folder update, eliminating the lag before the list refreshed. iOS warm-start stale state is also resolved via a visibility change listener.
- AI private IP hint (#192) — A clearer hint is shown when the AI base URL points to a private IP that requires
ALLOW_PRIVATE_HOSTS=true.