Add ReleaseStage enum to SDK for plugin maturity indicators
Details
Add ReleaseStage enum (Release, Beta, Alpha) to PluginMetadata and
NavigationItem in PrivStack.Sdk. This enables plugins to declare their
maturity stage, which will be displayed as badges in the UI. NavigationItem
includes computed IsAlpha/IsBeta helpers for XAML binding. SDK version
bumped to 1.43.0.
Fix multi-select, remove sidebar filters, add Gmail category support
Details
Selection: Changed ListBox SelectionMode from Multiple to Extended.
Multiple mode caused every click to accumulate selections (showing
"7 selected" when only 1 was intended). Extended mode gives standard
behavior: click selects one, Shift+click for range, Ctrl+click to
toggle individual items.
Filters: Removed the sidebar filter buttons (All Mail, Unread,
Starred, Attachments). These were redundant with folder navigation
and IMAP search. FilterLabel now shows just the folder name.
Gmail categories: Added EmailFolderType.Category to classify Gmail
category folders ([Gmail]/Categories/Promotions, Social, Updates,
Forums, Purchases). Categories appear in the system folders section
between Archive and Junk, sorted alphabetically.
Search: Server-side search results now sort by date descending to
match the default message list ordering.
Version: 1.25.0 → 1.26.0
Limit email initial sync to 60 days, remove Load More button
Details
Initial IMAP sync now uses DeliveredAfter search query to only fetch
message headers from the last 60 days instead of all messages. This
prevents the UI from locking up on accounts with thousands of emails.
Older messages remain accessible via server-side IMAP search.
Progress bar runs in indeterminate mode during sync since the total
message count within the 60-day window isn't known upfront. Status
text shows count-only format ("Synced N messages...").
Removed the explicit "Load more messages..." button from the message
list panel — scroll-to-load at 80% threshold remains as the seamless
pagination mechanism.
Version: 1.24.2 → 1.25.0
Enrich intent prompt with description, due_date, priority slot filling
Details
Few-shot examples now demonstrate rich slot filling: concise generated
titles, detailed descriptions, due dates, priority levels, and location.
Action list now shows optional slots with '?' suffix so the model knows
they exist. Examples show tasks with description + priority + due_date
and events with description + location. This teaches the model to
generate meaningful titles and fill context into descriptions rather
than just copying raw text. Bumps desktop to v1.42.0.
Change Notes save model to LostFocus instead of keystroke debounce
Details
Remove the 500ms auto-save debounce from MarkBlockModified(). Previously
every keystroke would cancel/restart a timer that saved the entire page
after 500ms of idle, causing frequent saves, DB writes, and intent signal
emissions even during active typing.
Now MarkBlockModified() only sets HasUnsavedChanges = true (dirty flag).
Actual persistence is triggered by:
1. Block LostFocus — a tunnel handler on NotesView detects when focus
leaves a block editor element and calls SaveOnBlockLostFocus() with
a 200ms debounce to coalesce rapid focus transitions.
2. Explicit save — Cmd+S / page navigation / FlushAndCancelAutosaveAsync
still works as before via SaveCurrentPageAsync().
This reduces unnecessary load and ensures intent signals only fire once
per meaningful edit rather than on every typing pause.
Bump Notes plugin to v1.47.0.
Get notified about new releases