Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 24 of 32 Next →
February 17, 2026
minor Email

Streaming batched sync with real-time UI updates (v1.9.0)

Email 1.8.0 → 1.9.0 | 7cbaa9d7
Details

Add FetchHeadersBatchedAsync to ImapSyncService for initial sync: fetches

all UIDs, reverse-sorts newest-first, fetches in batches of 50 with

IProgress<List<EmailMessage>> callback. EmailSyncManager fires

MessageBatchSynced event per batch, persisting each batch immediately.

ViewModel inserts new messages at correct sorted position in real-time.

Add sync progress bar with "Syncing: X of Y messages..." indicator.

Incremental sync (subsequent syncs) remains unchanged.

minor Email

Paginated message loading with virtual scrolling (v1.8.0)

Email 1.7.0 → 1.8.0 | 332edef9
Details

Replace load-all-messages with paginated loading using SDK limit/offset

parameters (50 messages per page). Add VirtualizingStackPanel to ListBox

for efficient rendering of only visible items. Auto-load next page when

user scrolls past 80% depth. Add explicit "Load more messages" button as

fallback. Add CountMessagesAsync to EntityService via SDK CountAsync.

minor Email

Slim email header schema and reduce IMAP fetch (v1.7.0)

Email 1.6.0 → 1.7.0 | d23d2317
Details

Move To, Cc, Size, IsAnswered, InReplyTo to transient fields populated

on-demand by FetchBodyAsync instead of persisting them per-entity. This

reduces stored entity size by ~50%. IMAP header fetch now only requests

UniqueId, Envelope, Flags, and BodyStructure (drops Size and PreviewText).

Snippet row removed from message list view since preview text is no longer

fetched during sync. Search now filters on Subject and From only. Compose

reply/forward uses BodyText instead of removed Snippet field.

minor Email

Fix folder discovery and initial message sync (v1.6.0)

Email 1.5.2 → 1.6.0 | 9a6e2f30
Details

Two critical sync bugs:

1. GetSubfoldersAsync(true) means subscribedOnly=true, which on Gmail

skips system folders (Sent, Drafts, Trash, Spam, All Mail, etc.).

Changed to GetSubfoldersAsync(false) to enumerate all folders.

2. Phase 2 message fetch used the server's CURRENT UidNext from Phase 1

(e.g., 5000), creating range [5000, MaxValue] — zero existing messages.

Now uses the PREVIOUSLY stored UidNext from the DB. For new folders

(first sync), UidNext=0 fetches all messages via [MinValue, MaxValue].

minor Email

Use toast notifications for email sync feedback (v1.5.0)

Email 1.4.4 → 1.5.0 | e039d8a9
Details

Replace inline ErrorMessage strings with actionable toast

notifications for sync failures ("Action Needed" with guidance

to check password/app password). Add success toast on sync

complete ("All Set"). Wired IToastService from Host.Toast into

EmailViewModel. Bumped version from 1.4.4 to 1.5.0.

← Prev Page 24 of 32 Next →

Get notified about new releases