The banner sits inside the message body's 16px gutter with room below,
"Looks like spam!" is red, and the rspamd symbols are replaced by up to
three human-readable reasons (neutral symbols are hidden). All strings go
through ctx.t with English and Polish catalog entries.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The first start tried the default languages once; a DNS failure at that
moment left them missing for good. Languages asked for are now kept as
pending in state.json and retried in the background (30 s, doubling to
15 min) until they are in, across restarts; an install from the admin
panel joins the same queue. A state from before this, with nothing
installed, counts as an unfinished first start. The admin panel shows
what is waiting.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Email translation moves from LibreTranslate to our own translator
service (translator/): Mozilla's Firefox Translations models on the
Bergamot engine, fastText language detection (176 languages). Polish,
English, German, French, Spanish and Italian on first start (~350 MB
instead of ~10 GB); Admin panel > Email translation installs and
removes languages. Built and pushed as the `translator` image.
- Every message is translated paragraph by paragraph as plain text;
names travel with their sentence and are kept only where the model
changed them; a sentence start the model copied ("Enclosed") is tried
again in lower case; list markers are not sent
- The Translate button shows only for installed languages
- New logo: favicon, app/maskable/iPhone icons, notification badge,
email logo and calendar copy regenerated; BIMI logo rebuilt in SVG
Tiny PS with its gradients; masks render in browsers
- Launch screen background is the app's dark grey
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Snooze (with a Snoozed folder), keyboard shortcuts with a Settings
section, mail templates (Compose > More > Templates), a Subscriptions
folder with bulk unsubscribe/delete, and tracker blocking with a
Privacy toggle (on by default)
- Own dialogs instead of browser popups; emoji picker in compose; compose
windows survive a visit to Settings
- Sentence completion learned from the user's sent mail (no AI)
- Interface in English and Polish (one file per language, English as the
fallback), picked from the browser on first run, then kept
- Email translation on the server via LibreTranslate: Translate button
and "Translate to...", messages in several languages translated part
by part, names/addresses/emoji/file names/phone numbers kept, an
animated line while translating
- Antispam "Mark as spam" loads with the message, not when the menu opens
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>