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.
Extend UI.Adaptive graph models with unified types and physics settings (v1.32.0)
Details
Add Tags, ModifiedAt, WikiLinkCount fields to GraphNode and Label to GraphEdge.
Port AdjacencyList, BFS, GetLocalGraph, and AssignBfsDepths from plugin GraphData
to the Adaptive GraphData model, enabling the Graph plugin to output Adaptive types
directly without conversion. Remove 5 vestigial PhysicsParameters fields
(RepulsionStrength, SpringStrength, CollisionStrength, VelocityDecay, MinSeparation)
that were marked unused. Add GraphPhysicsSettings composable ObservableObject that
maps 0-100 slider values to consumer-specific parameter ranges, and GraphPhysicsPanel
reusable control with 4 labeled sliders for both Graph plugin and InfoPanel consumers.
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
Extract Canvas/Whiteboard into standalone plugin (v1.0.0)
Details
Canvas (whiteboards) has been extracted from the Notes plugin into its
own standalone plugin PrivStack.Plugin.Canvas. This reduces the Notes
god-object problem and gives Canvas its own navigation entry in the
sidebar.
New plugin (PrivStack.Plugin.Canvas v1.0.0):
- Standalone PluginBase<CanvasViewModel> with own NavigationItem
- Whiteboard CRUD via WhiteboardService (PluginId: privstack.canvas)
- Entity sidebar for cross-plugin drag-to-canvas
- Connector toolbar with style/arrow controls
- IDeepLinkTarget for whiteboard deep links
- IRecipient<EntitySyncedMessage> for cloud sync
- One-time data migration from privstack.notes to privstack.canvas
Notes plugin cleanup (v1.42.0):
- Removed whiteboard EntitySchema, WhiteboardService, CanvasViewModel
- Removed IsCanvasView property and Canvas toggle button
- Removed ~450 lines of canvas XAML and ~200 lines of code-behind
- Removed whiteboard sync handler and canvas event wiring
- Retained inline CanvasBlock support (AddCanvasBlock command) for
embedded canvas blocks within pages
Get notified about new releases