Changelog
All the latest updates and improvements to Alteox Mail.
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)
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