Migrate to IVaultConsumer + SDK vault unlock (v1.8.0)
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
Redesign account setup with 3-phase flow (v1.4.0)
Details
Replace the single-screen account setup overlay with a cleaner 3-phase
flow: provider selection, OAuth in-progress, and manual setup.
OAuth providers (Google/Microsoft) now work as one-click buttons that
open the browser, complete authorization, extract the email and name
from the id_token, auto-populate all IMAP/SMTP presets, and create the
account without any manual fields. No email input required before OAuth,
no Save button needed after.
Non-OAuth providers (Yahoo, iCloud, Fastmail, Custom) go through a
dedicated manual setup screen with email/password fields, provider
dropdown, and advanced IMAP/SMTP settings.
Key changes:
- Add AccountSetupMode enum (ProviderSelection, OAuthInProgress, ManualSetup)
- Add id_token JWT payload parsing to EmailOAuthService to extract email/name claims
- Rewrite AccountSetupViewModel with setup mode state machine
- SignInWithOAuthCommand now takes provider as parameter and auto-creates account
- Remove old provider dropdown from initial screen
- Redesign AccountSetupOverlay.axaml with 3 visibility-toggled panels
- Add BackToProviderSelection navigation for both OAuth cancel and manual back
- Manual flow Providers list narrowed to non-OAuth providers only
Add account settings overlay and view preference persistence (v1.3.0)
Details
Add full account settings UI that exposes existing backend infrastructure
for signature editing, sync interval control, server configuration, and
enable/disable toggling. Settings overlay is accessible from both the
gear menu and account context menu.
New files:
- EmailViewPreferences model for persisted view state (sort, reading
pane, compact list, sidebar collapsed)
- AccountSettingsViewModel for editing existing account properties
including display name, signature, sync interval, enabled state,
and IMAP/SMTP server configuration with test connection support
- AccountSettingsOverlay.axaml modal with General, Signature, and
collapsible Server sections
Modified files:
- EmailPlugin.cs: Pass Host.Settings to ViewModel for IPluginSettings
- EmailViewModel.cs: Accept IPluginSettings, add account settings
overlay state, load view preferences on construction
- EmailViewModel.ViewOptions.cs: Persist view prefs on every toggle
(reading pane, compact list, sort mode), add OpenAccountSettings
command with Saved/Cancelled event handlers
- EmailViewModel.Commands.cs: Persist sidebar toggle to view prefs
- EmailView.axaml: Add Account Settings to gear menu and account
context menu, add sync error indicator on account list items,
dim disabled accounts via EnabledToOpacity converter
- EmailConverters.cs: Add EnabledToOpacity converter
Version bumped from 1.2.0 to 1.3.0 in both csproj and PluginMetadata.
Add full-featured options menu, context menus, and view toggles (v1.2.0)
Details
Add production-grade toolbar with sync button and gear settings menu containing
account management, view toggles (reading pane, compact list), bulk actions
(mark all read, empty trash), sort submenu, and sidebar toggle. Remove redundant
sort ComboBox and sync button from the messages area header.
Extract message list into MessageListView with right-click context menu providing
Reply, Reply All, Forward, Toggle Star, Mark as Unread, Archive, Move to Junk,
and Delete actions. Add MoveToJunkAsync command following the existing archive
pattern.
Enhance account sidebar context menu with Sync Now (parameterized per-account),
Mark All Read in Account, Enable/Disable Sync, and Remove Account options.
Add IsReadingPaneVisible and IsCompactList view state properties with
CompactToPadding converter. Add ICommandProvider entries for Mark All as Read
and Empty Trash. New ViewOptions partial keeps all new commands modular.
Version bump 1.1.0 -> 1.2.0 in both csproj and PluginMetadata.
Modernize calendar popover layout and replace emojis with PathIcons
Details
Restructure event detail popover: move title+color-dot to header area
just below the close button, replace edit/delete icon buttons in the
top toolbar with labeled text buttons ("Edit" / "Delete") in a new
footer section separated by a border line. Close button now uses a
PathIcon X instead of the ✕ emoji. Delete button uses ThemeErrorBrush
for visual distinction.
Replace all emoji-based UI icons across CalendarView.axaml with
Material Design PathIcon SVG paths: settings gear, recurring badge,
calendar date, video camera, location pin, document text, calendar
outline, and info circle. All PathIcons use DynamicResource theme
brushes for consistent cross-platform rendering.
Version: 1.9.0 → 1.10.0
Get notified about new releases