Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 38 of 53 Next →
February 17, 2026
minor SDK

Add IToastService interface to SDK (v1.35.0)

SDK 1.34.0 → 1.35.0 | 8797e71d
Details

Introduce ToastType enum and IToastService interface for global

in-app toast notifications. Plugins will access this via

IPluginHost.Toast to show transient messages with type-based

styling and optional action buttons. Added Toast property to

IPluginHost interface. Bumped SDK version from 1.34.0 to 1.35.0.

minor Email

Redesign account setup with 3-phase flow (v1.4.0)

Email 1.3.2 → 1.4.0 | a59d6f6a
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
minor Desktop ShellSDK

Add RequestVaultUnlockAsync for plugin vault unlock (v1.34.0)

SDK 1.33.0 → 1.34.0 | Desktop 1.31.1 → 1.32.0 | 4acd10e9
Details

Add IPrivStackSdk.RequestVaultUnlockAsync(vaultId) so any plugin can

request the host to prompt the user for their master password and

unlock a vault. This replaces the pattern of plugins hardcoding their

own password input UI for vault unlock.

SdkHost implements the method using a delegate callback wired in

ServiceRegistration. The callback dispatches to the UI thread and

shows the existing PasswordConfirmationWindow dialog. If the user

enters the correct password, the vault is initialized (if needed)

and unlocked. Returns true on success, false on cancel or bad password.

Also adds email-credentials and calendar-credentials to the

StandardVaultIds array so they auto-unlock at startup alongside

the connections vault.

SDK version bumped to 1.34.0. Desktop version bumped to 1.32.0.

minor Desktop Shell

Refactor GraphDataService and BacklinkService to hybrid provider model (v1.31.0)

Desktop 1.30.23 → 1.31.0 | e0bceb77
Details

GraphDataService now discovers IGraphDataProvider implementations via

IPluginRegistry and aggregates their node, edge, content, and explicit

link contributions. Entity types not covered by any provider fall back

to the existing legacy SDK-based loading path, ensuring zero regressions

while plugins are gradually migrated.

BacklinkService follows the same hybrid pattern: provider contributions

are merged with legacy entity loading, and wiki-link parsing is

consolidated through the shared WikiLinkParser utility.

PluginRegistry auto-registers IGraphDataProvider alongside the existing

ILinkableItemProvider in ActivatePlugin(). GraphPlugin injects

IPluginRegistry into GraphDataService via DI.

All 16 entity types continue to appear in the graph via the legacy

fallback until external plugins implement IGraphDataProvider.

minor SDK

Add IGraphDataProvider capability interface and WikiLinkParser utility (v1.33.0)

SDK 1.32.0 → 1.33.0 | 7e630c06
Details

Introduces the IGraphDataProvider capability interface in PrivStack.Sdk that

allows plugins to contribute their own graph nodes, structural edges, content

fields for wiki-link parsing, and explicit cross-entity links. This decouples

the Graph plugin and BacklinkService from hard-coded knowledge of every entity

type — each plugin can now self-describe its graph contributions.

New SDK types: GraphContribution, GraphNodeContribution, GraphEdgeContribution,

ContentField, ExplicitLinkContribution, and ParsedLink.

WikiLinkParser consolidates the duplicated wiki-link regex patterns and content

extraction logic previously found in both GraphDataService and BacklinkService

into a single shared utility with ParseLinks(), ExtractContentFromEntity(), and

ExtractSnippet() methods.

← Prev Page 38 of 53 Next →

Get notified about new releases