Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 37 of 53 Next →
February 17, 2026
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.

minor Desktop Shell

Add toast notification system to Desktop (v1.33.0)

Desktop 1.32.1 → 1.33.0 | 492c0798
Details

Implement ToastService and ToastContainer control for global

in-app toast notifications. Toasts appear top-center with

type-based styling (Success/Info/Warning/Error), friendly

labels ("All Set", "FYI", "Heads Up", "Action Needed"),

optional action buttons, and auto-dismiss (5-10s by type).

Max 4 visible with oldest trimmed on overflow.

Added ThemeInfo/ThemeInfoMuted color + brush resources to all

7 theme files. Registered ToastService in DI, wired through

PluginHostFactory → PluginHost → IPluginHost.Toast so plugins

can show toasts via Host.Toast.Show(). Bumped Desktop version

from 1.32.1 to 1.33.0.

minor Files

Migrate to IVaultConsumer + SDK vault unlock (v1.8.0)

Files 1.7.7 → 1.8.0 | 20c00191
Details

Replace the Files plugin's hardcoded vault password field and manual

unlock/initialize UI with the centralized SDK RequestVaultUnlockAsync

mechanism. The plugin now implements IVaultConsumer to declare its vault

dependency, and vault unlock is handled via the shared password dialog

prompt from the host application.

Changes:

  • FilesPlugin: Add IVaultConsumer with VaultIds => ["privstack.files"]
  • FileService: Add EnsureVaultUnlockedAsync() using SDK unlock prompt
  • FilesViewModel: Remove VaultPassword, UnlockVaultAsync,

InitializeVaultAsync commands; replace with EnsureVaultUnlockedAsync

  • FilesView: Replace 65-line vault unlock panel (password field + two

sub-panels) with simple "Vault Locked" state + single unlock button

  • Version bump 1.7.7 → 1.8.0
← Prev Page 37 of 53 Next →

Get notified about new releases