Changelog

All the latest updates and improvements to Alteox Mail.

+Added
~Fixed
Improved
Removed
by Claude
~

Fixed action bar buttons (reply, forward, delete, star, etc.) not responding to clicks

~

Fixed email body not loading in message detail view (lazy-loads from IMAP on demand)

~

Fixed HTML emails rendering as raw text — now renders properly with HtmlWidget

Removed "|" prefix from thread subjects (thread count badge is sufficient)

+

Merged Labels and Auto-Labels settings into a single unified Labels view

Removed global "Enable Auto-Labels" switch — labels can now be toggled individually

+

Added edit dialog for existing labels (name, rule description, color)

+

Added restore button for trashed messages to move them back to original folder

Removed sample Sentry exception that fired on every app start

+

Added label entries to sidebar with emoji icons (dynamically generated from settings)

Removed "+view" button from sidebar — labels are now managed via settings

+

Added searchable emoji picker for label add/edit dialogs

+

Added label persistence to SharedPreferences (name, color, emoji, rule, active state survive restart)

+

Added compose focus: To field focused on new email, Tab navigates To → Subject → Body, skips hidden Cc/Bcc

+

Added AI settings section (choose between flutter_local_ai and llamadart, GGUF model picker)

+

Added AI auto-labeling: new emails are classified against active labels using on-device AI (plain text only, no HTML sent to AI)

+

Added dark mode color inversion for HTML email rendering (white backgrounds become dark, text becomes light)

+

Added translate button in compose toolbar using configured AI model

+

Added configurable translation languages in Settings > AI with searchable language picker (persisted across restarts)

+

Added email autodiscovery for unknown IMAP/SMTP providers (Thunderbird ISPDB, domain autoconfig, DNS MX/SRV lookup, port probing)

~

Fixed app hanging for 2000ms during window resize/move (debounced window state saving with 500ms timer)

~

Fixed reply/forward/reply-all not including original message body in compose (async body fetch from cache/server)

~

Fixed plain text emails showing "Loading..." forever when body is empty (now shows "No content")

Improved dark mode HTML email rendering (strips inline color/background styles per-element via customStylesBuilder)

+

Added WYSIWYG HTML editor in compose (flutter_quill) — reply/forward now renders HTML properly instead of showing raw tags

+

Added HTML email sending support (compose exports both plain text and HTML via vsc_quill_delta_to_html with inline styles)

+

Added auto-insert email signature in compose (from Settings > Signatures) with toggle button in toolbar to add/remove per email

+

Added email count badges in sidebar (toggle in Settings > Appearance > Show email counts)

+

Added domain avatar feature: fetches company logos from unavatar.io, caches locally (memory + disk), displays in email list and detail panes (toggle in Settings > Appearance > Show domain avatars)

~

Fixed duplicate sender info in expanded thread email cards (avatar+name shown twice)

~

Fixed domain avatars flashing initials before logo loads (shows empty placeholder while fetching, instant from cache)

~

Fixed avatar replaced by empty checkbox on hover in email list (avatar now always visible, checkbox only on multi-select)

~

Fixed computeDryBaseline rendering errors from HtmlWidget in email detail (wrapped in LayoutBuilder to isolate layout pass)

by Sven
+

Added HTML message view in message detail window

+

Added "|" in front of subject in case it's a message with a thread

+

Added undo button for messages in trash

+

Added Sentry error tracking