Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 42 of 53 Next →
February 15, 2026
minor UI Components

Add InfiniteCanvasControl to UI.Adaptive (v1.27.0)

SDK 1.26.0 → 1.27.0 | 30b5aa7f
Details

Add reusable infinite canvas/whiteboard control with 8 partial class files

for modularity. Includes pan/zoom, element creation (note card, text, rect,

ellipse, freehand, group frame, image, page reference), connector rendering

(straight/curved/elbow with arrow heads), selection with marquee and resize

handles, Douglas-Peucker freehand simplification, viewport culling, drag-drop

support for page references and images, and a performance warning badge.

Models: CanvasData, CanvasElement, CanvasConnector, StrokePoint, CanvasToolMode

enum, CanvasElementType string constants, ConnectorStyle enum.

Bumps PrivStackSdkVersion from 1.26.0 to 1.27.0.

minor Calendar

Replace sidebar agenda list with mini calendar widget, fix agenda event click (1.9.0)

Calendar 1.8.4 → 1.9.0 | 69077ed5
Details

Sidebar now shows a mini month calendar with day-of-month cells, today

highlight, selected-date ring, and event-presence dots. Clicking a date

navigates the main view (day/week/month) or scrolls-to in agenda mode.

Month navigation arrows let the mini cal move independently of the main

view. Removed the redundant UpcomingEventGroups sidebar list that

duplicated the Agenda view. Single-clicking an event in Agenda view now

opens the event detail popover (previously only set SelectedEvent

without showing popover). Generalized ShowEventPopover to accept any

Control, not just Border, so the agenda Button elements can reuse the

same popover positioning logic.

minor Desktop Shell

Replace update panel with status bar indicator and centered modal (1.29.0)

Desktop 1.28.6 → 1.29.0 | ca2e8976
Details

The old UpdatePanel was a slide-in panel buried in the user menu that

users rarely discovered. This replaces it with two new surfaces:

1. Status bar indicator — a clickable text link in the bottom-right

status bar that shows "Check for updates" by default. Clicking it

triggers a manual check, briefly shows "On latest version (vX.X.X)"

for 5 seconds, then resets. When an update is found (either via

manual check or the 4-hour auto-check), it switches to "Update

available" with a green dot, persistently visible until acted on.

2. Centered update modal — follows the SubscriptionDetailModal pattern

with a semi-transparent backdrop, centered 440px card, version

transition display (vCurrent → vNew), optional release notes block,

download progress bar, and "Download & Install" / "Not Now" buttons.

Download auto-chains into install+restart on completion.

Also adds ReleaseNotes property to the desktop model (PlatformReleaseGroup

and LatestReleaseInfo) to surface release notes from the API.

Removes: UpdatePanel.axaml, UpdatePanel.axaml.cs, IsUpdatePanelOpen,

ToggleUpdatePanelCommand from MainWindowViewModel.

minor Desktop Shell

Wire unified recovery through C# desktop app

Desktop 1.27.0 → 1.28.0 | 5e4f78a6
Details

Completes the unified recovery kit feature across the C# desktop layer:

Bindings:

  • NativeLibrary: add CloudSyncSetupUnifiedRecovery + AuthResetWithUnifiedRecovery
  • ICloudSyncService: add SetupUnifiedRecovery method
  • CloudSyncService: implement SetupUnifiedRecovery via FFI
  • IAuthService: add ResetWithUnifiedRecovery method
  • PrivStackService: implement ResetWithUnifiedRecovery via FFI

PDF:

  • Add UnifiedRecoveryKitPdfService with blue info box ("recovers BOTH

vault password and cloud data"), red warning, word grid, and two

instruction sections (vault + cloud recovery)

  • Delete CloudRecoveryKitPdfService (replaced by unified service)

ViewModels:

  • CloudSyncSettingsViewModel: EnableForWorkspaceAsync now calls

SetupUnifiedRecovery instead of SetupPassphrase; SaveRecoveryKitPdf

uses UnifiedRecoveryKitPdfService with updated title/filename

  • RecoveryViewModel: ResetPasswordAsync calls ResetWithUnifiedRecovery

to recover both vault and cloud in one step

  • SettingsViewModel.EmergencyKit: RegenerateEmergencyKit uses unified

recovery when cloud is active; DownloadRegeneratedKit uses unified

PDF service when cloud is active

Tests:

  • Update EnableForWorkspaceAsync_ShowsRecoveryKit to mock SetupUnifiedRecovery
  • Add EnableForWorkspaceAsync_DoesNotCallSetupPassphrase test
  • Update FailsWhenVaultLocked to verify neither setup method is called

Version: PrivStack.Desktop 1.27.0 -> 1.28.0

Backward compatible: old Emergency Kit mnemonics still work via

existing ResetWithRecovery; old cloud mnemonics work via existing

RecoverFromMnemonic. No existing FFI functions removed.

minor Core

Add create_recovery_blob_with_mnemonic for unified recovery

Core 1.9.1 → 1.10.0 | f9edf119
Details

Adds a new crypto primitive that encrypts the vault master key with a

caller-provided mnemonic instead of generating a fresh one. This enables

the unified recovery flow where a single BIP39 mnemonic protects both

the vault master key and the cloud X25519 keypair.

Changes:

  • privstack-crypto: add create_recovery_blob_with_mnemonic() + tests
  • privstack-crypto: export new function from lib.rs
  • privstack-vault: add Vault::setup_recovery_with_mnemonic() that

stores a recovery blob using an external mnemonic

  • privstack-vault: add VaultManager::setup_recovery_with_mnemonic()

wrapper

  • Bump workspace version to 1.10.0

Two new tests verify round-trip decryption and cross-compatibility

(same mnemonic decrypts both vault blob and simulated cloud keypair).

← Prev Page 42 of 53 Next →

Get notified about new releases