Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 5 of 53 Next →
February 25, 2026
minor Journal

Journal v1.11.0: rich text editor integration for text sections

Journal 1.10.0 → 1.11.0 | b318456b
Details

Replace plain TextBox controls with RichTextEditor (WYSIWYG inline markdown)

in text section editors and quick-capture card. Add persistent FormattingToolbar

with bold/italic/underline/strikethrough/code/link buttons. Text sections in

read-only views (focused view, section grid) now render formatted text via

RichTextEditor IsReadOnly mode. Feed card previews strip markdown to plain text

via updated StripLinksConverter. Search indexing and RAG chunks strip markdown

before indexing. Backward-compatible — existing plain text entries render

identically since plain strings are valid inline markdown.

minor Finance

Finance v3.24.0: add right-side category edit panel to budget dashboard

Finance 3.23.0 → 3.24.0 | 3551d2c2
Details

Add click-to-edit pattern matching Account Register: clicking a budget

category row opens a 340px edit panel on the right side with name,

rollover, goal type, and conditional goal fields. The Goal column

auto-hides when editing to make room. CurrencyBox inline editing is

preserved via a visual tree check that skips the panel open for clicks

on CurrencyBox controls. Panel closes on month navigation. After save,

the panel re-selects the same category with fresh data.

New files:

  • BudgetDashboardViewModel.EditPanel.cs: partial class with edit panel

state (EditingCategory, IsGoalColumnVisible, save/hide/close commands)

  • BudgetCategoryEditPanel.axaml: extracted UserControl for the edit form

Modified files:

  • BudgetDashboardView.axaml: restructured to 2-column layout (content +

edit panel), goal column uses Auto width with IsVisible binding,

category rows get hover/selected styles

  • BudgetDashboardView.axaml.cs: PointerPressed tunnel handler with

CurrencyBox descendant check

  • CategoryViewModel.cs: added IsSelected property for row highlighting
  • BudgetDashboardViewModel.cs: re-selection logic after LoadDataAsync,

edit panel close on month navigation

minor Journal

Journal v1.10.0: multi-column layouts + map routing

Journal 1.9.3 → 1.10.0 | b3ff8ad5
Details

Add magazine-style multi-column layouts for journal entries. Each row can

have 1-3 columns with configurable width ratios (Full, 1/2+1/2, 1/3+2/3,

2/3+1/3, Thirds). Each cell holds any section type (text, photo, audio, map).

Extend map sections with three modes:

  • Pin: existing postal code geocoding + click-to-place
  • Route: A-to-B driving routes via OSRM public API with polyline, distance,

and duration. Also supports GPX file import for hiking/cycling tracks.

  • Waypoints: click-to-add manual waypoints with connecting polyline and

distance calculation.

Maps now have configurable height (Small 150px / Medium 250px / Large 400px)

and color-coded markers (green=start, red=end, blue=intermediate).

Data model additions are fully backward-compatible: new fields are nullable

with defaults, so existing entries render identically.

New files: GpxParser, RoutingService, JournalRowViewModel, SectionRow,

SectionsToRowsConverter, RowEditor, SectionGridView.

Also fixes: focused view now renders Audio and Map sections (previously

missing), seed data uses local timezone for sensible times, and includes

a multi-column example entry.

minor Desktop ShellSDK

Fix RAG index cascade on bulk file operations

SDK 1.67.0 → 1.68.0 | Desktop 1.67.0 → 1.68.0 | a42c57ee
Details

RagIndexService now uses batch-coalescing debounce instead of per-entity

timers. Incoming EntitySyncedMessages are queued and deduplicated, then

dispatched as a single batch — calling each IIndexableContentProvider at

most once per batch and loading hashes once. This reduces bulk operations

(e.g. trashing 40 files) from ~560 ReadList calls to ~14.

SdkMessage gains a SuppressChangeNotification property (JsonIgnored) that

tells SdkHost to skip the EntitySyncedMessage broadcast while still

recording sync outbound snapshots. Batch callers send a single summary

notification after all items are processed.

Version bump: 1.67.0 → 1.68.0 (SDK + Desktop)

minor Desktop Shell

Add biometric unlock (Touch ID / Windows Hello) support

Desktop 1.66.5 → 1.67.0 | d3412e72
Details

Implement platform-native biometric authentication as a convenience option

for unlocking PrivStack. The master password remains the root of trust —

biometric enrollment stores it in the OS keychain (macOS Keychain / Windows

Credential Manager), gated by biometric access control. On unlock, biometric

verification retrieves the password and feeds it through the existing

UnlockApp path. Zero Rust core changes required.

New files:

  • IBiometricService interface with IsSupported, IsAvailable, Enroll,

Authenticate, Unenroll

  • MacBiometricService: Security.framework P/Invoke for Keychain +

LocalAuthentication.framework for Touch ID prompts

  • WindowsBiometricService: advapi32.dll CredWrite/Read/Delete +

UserConsentVerifier for Windows Hello

  • NullBiometricService: Linux/unsupported fallback

Integration points:

  • UnlockView: biometric button with "or" separator, auto-attempts on load
  • SensitiveUnlockOverlay: biometric option for re-authentication
  • Settings > Security: toggle with inline password enrollment, auto

re-enrollment on password change

  • Setup Wizard: optional biometric step after password creation (shown only

when hardware is available)

  • AppSettings: BiometricUnlockEnabled persisted setting
  • ServiceRegistration: platform-conditional DI registration

Version: 1.66.5 → 1.67.0

← Prev Page 5 of 53 Next →

Get notified about new releases