Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 34 of 53 Next →
February 18, 2026
minor Email

Email v1.17.0: Multi-select, bulk operations, keyboard shortcuts

Email 1.16.0 → 1.17.0 | 0075e756
Details

Phase 2 of full-featured email client implementation:

  • New EmailViewModel.BulkActions.cs: bulk delete (permanent in trash, move

to trash elsewhere), bulk archive, bulk mark read/unread, bulk star toggle,

select all/deselect all commands using BulkMoveAsync/BulkSetFlagsAsync

for single-connection efficiency

  • Multi-select in message list: ListBox SelectionMode="Multiple" with

SelectionChanged handler that populates SelectedMessages collection

and notifies HasMultipleSelected/SelectedCount properties

  • Bulk action bar in EmailView: conditional bar above message list showing

selected count with Select All/Deselect, Mark Read, Star, Archive,

Move to..., Delete buttons — replaces folder header when active

  • Keyboard shortcuts: Delete/Backspace (delete), E (archive), R (reply),

Cmd+R (reply all), F (forward), N (compose), U (toggle read), S (star),

J/Down (next message), K/Up (previous message), Escape (deselect all)

— all bulk-aware when multiple messages are selected

  • TextBox focus guard prevents shortcuts from firing during text input
minor Email

Email v1.16.0: Folder management, move to folder, trash permanent delete

Email 1.15.9 → 1.16.0 | 4712f58a
Details

Phase 1 of full-featured email client implementation:

  • Split EmailViewModel.MessageActions.cs (439 lines) into MessageActions.cs (~165 lines)

and Internal.cs (~195 lines) for 250-line compliance

  • Split EmailViewModel.Commands.cs (366 lines) into Commands.cs (~140 lines)

and Sync.cs (~170 lines) for 250-line compliance

  • New ImapSyncService.FolderOps.cs: IMAP folder CRUD (create, rename, delete),

bulk move (BulkMoveAsync), permanent expunge (ExpungeAsync), bulk flag

set/clear (BulkSetFlagsAsync) using UID sets for efficiency

  • New EmailViewModel.FolderManagement.cs: folder picker overlay state,

move-to-folder commands (single and bulk), inline folder create/rename/delete

with IMAP sync and local entity updates

  • New FolderPickerOverlay.axaml: modal dialog showing all folders with filter

textbox for quick folder selection when moving messages

  • Fix permanent delete in Trash: DeleteMessageAsync now calls ExpungeAsync

(flag Deleted + expunge) when in Trash folder instead of silently moving

to Trash again

  • Sidebar folder context menus: right-click labels for Rename/Delete, "+"

button next to LABELS header for inline folder creation

  • Message context menu: added "Move to..." option that opens folder picker
  • Added SelectedMessages collection and HasMultipleSelected/SelectedCount

computed properties for future multi-select support

minor Email

Reading pane polish + trust list management (v1.15.0)

Email 1.14.4 → 1.15.0 | 61ccec1f
Details

Restructure reading pane layout with distinct sections: full-width header

with bottom border, full-width trust banner, and white-background email body

area with centered max-width content. Trust banner now dismisses immediately

after clicking trust sender/domain by notifying ShowTrustBanner and

HasHtmlContent properties.

Add granular trust management: SenderTrustService gains GetTrustList(),

RevokeAddressTrust(), and RevokeDomainTrust() methods. AccountSettingsViewModel

now accepts the trust service and exposes TrustedAddresses/TrustedDomains

collections with remove commands. AccountSettingsOverlay shows a "Trusted

Senders" section between Signature and Server Settings with per-entry remove

buttons and an empty state message.

minor Contacts

Add deep-link navigation for contact groups and companies (v1.8.0)

Contacts 1.7.2 → 1.8.0 | 3ff981d2
Details

Clicking a contact_group or company node in the neuron graph or info panel

title now navigates to the correct sub-view in the Contacts plugin. Previously

only the primary "contact" link type was routed, causing silent navigation

failures for the other two entity types.

Implemented IDeepLinkTarget.SupportedLinkTypes returning all three entity types,

added NavigateToEntityAsync dispatcher, SelectGroupByIdAsync, SelectCompanyByIdAsync,

and GetGroupAsync service method.

minor Email

Real-time folder-first sync with footer progress bar

Email 1.13.8 → 1.14.0 | 78ccd08e
Details

Add FoldersSynced event to EmailSyncManager that fires after folder

list is persisted but before message sync begins. This enables the

sidebar to populate immediately with folder structure while messages

sync in the background.

Introduce SyncStatusMessage property on EmailSyncManager that tracks

human-readable sync phase text (Connecting, Syncing folders, Syncing

messages with counts). Add corresponding SyncStatusText and

IsSyncDeterminate properties to EmailViewModel for UI binding.

Move sync progress indicator from above the message list to the

lower-right footer. The footer now shows an indeterminate progress

bar during folder sync phase, switching to a determinate bar with

message count during message sync. When not syncing, the footer

falls back to showing the existing StatusMessage text.

Update OnMessageBatchSynced in EmailPlugin to capture sync state

snapshots (count, total, status) on the background thread before

posting to UI thread, eliminating cross-thread read races.

Wire OnFoldersSyncedAsync in EmailViewModel.MessageActions to reload

folders for the active account when FoldersSynced fires, giving

immediate sidebar feedback after account creation.

Version bump to 1.14.0.

← Prev Page 34 of 53 Next →

Get notified about new releases