Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 64 of 127 Next →
February 22, 2026
patch FinanceFinance.TestRunner

Overhaul Finance plugin architecture and bump to v1.1.0

Details

Major rewrite of the Finance plugin to align with PrivStack SDK patterns

and the architectural specification. Key changes:

  • Fix ViewModels to inherit ViewModelBase instead of raw ObservableObject
  • Delete empty Class1.cs template file
  • Add proper async lifecycle (InitializeAsync) instead of fire-and-forget
  • Implement 7 capability interfaces as partial classes: IGraphDataProvider,

ILinkableItemProvider, IDataMetricsProvider, IDeepLinkTarget,

IIndexableContentProvider, ISeedDataProvider, IPluginDataSourceProvider

  • Register capabilities in OnInitializeAsync via Host.Capabilities
  • Add Budget entity with BudgetMethodologyType (ZeroBased/Envelope)
  • Replace boolean cleared flags with ClearedStatus enum (Uncleared/Cleared/Reconciled)
  • Add RolloverBehavior enum (StrictReset/PositiveCarryover/NegativeCarryover)
  • Add missing finance_category_group and finance_budget entity schemas
  • Fix BudgetService income detection to use Income account types
  • Implement recursive envelope rollover in GetCategoryBalancesAsync
  • Fix TransactionViewModel.Amount to show account-specific split amount
  • Add Jaro-Winkler + Token Jaccard similarity to ReconciliationService
  • Add reference ID scoring (10% weight) and one-to-many subset sum matching
  • Normalize payee strings (remove hyphens, case-insensitive)
  • Add QIF parser with flexible date format detection
  • Rewrite CSV parser with quoted field handling, delimiter auto-detection,

running balance column exclusion, and debit/credit column splitting

  • Fix IngestionService to register all parsers (OFX, QIF, CSV)
  • Replace hardcoded XAML colors with DynamicResource tokens
  • Rewrite CurrencyBox as proper TemplatedControl with StyledProperty bindings
  • Fix TBB banner to display formatted currency string
  • Add seed data provider with sample accounts, categories, and transactions
  • Remove duplicate MockSdk from TestRunner, delete empty UnitTest1.cs
  • Add comprehensive tests for parsers, reconciliation, and balance calculations
February 21, 2026
minor Habits

Fix Habits plugin compliance gaps and bump to v1.2.0

Habits 1.1.0 → 1.2.0 | 06e54e59
Details

Comprehensive audit and fix for full plugin compliance:

  • Add 5 missing capability registrations in OnInitializeAsync (IGraphDataProvider,

IIntentProvider, IIndexableContentProvider, IQuickActionProvider, ISeedDataProvider)

  • Fix GoalDetailPanel $parent binding crash: replace with Tag+Click handler pattern
  • Wire goal detail persistence: Status/Priority ComboBox SelectionChanged handlers,

Progress Slider PointerReleased handler, centralized PersistGoal()

  • Add reminder_time to habit entity schema indexed fields
  • Add async methods to all 4 services (UpdateAsync, DeleteAsync, CreateAsync)
  • Add seed progress logging to HabitsSeedService
  • Refresh DetailEntries after ToggleHabitCompletion and LogNumericValue
  • Version bump 1.1.0 → 1.2.0 (csproj + PluginMetadata synced)
minor Notes

Update Notes AI pipeline for nested blocks and column layouts

Notes 1.60.0 → 1.61.0 | 4d74a66f
Details

ExtractBlockText now recurses into PageBlock.Children and handles

ColumnLayoutBlock, with dedicated helpers for bullet, numbered, and

task list ChildBlocks extraction. InsertBlockRelative replaced with

InsertBlocksRelative which parses AI content through MarkdownBlockParser

to create structured blocks (lists, headings, code, etc.) instead of

plain paragraphs. CaptureBlockText uses ExtractBlockText for full

block-type coverage. Undo handler supports multi-block removal via

semicolon-separated inserted block IDs. Version bump to 1.61.0.

patch Habits

Fix runtime crash: replace $parent type-cast bindings with Click handlers

Details

The $parent[UserControl].((vm:HabitsViewModel)DataContext) binding pattern

causes a runtime ArgumentException because the XAML type resolver cannot

resolve the vm: namespace prefix inside DataTemplate binding expressions.

Switched to Tag+Click handler pattern matching existing plugins.

patch Habits

Add Habits & Goals plugin: models, services, views, viewmodels, capabilities

Details

Complete implementation of the privstack.habits plugin including:

  • Entity models (HabitItem, GoalItem, HabitEntry, GoalMilestone, HabitCategory) with

JSON serialization, computed properties, and frequency configuration

  • Service layer (HabitService, GoalService, HabitEntryService, CategoryService) as thin

SDK wrappers with sync + async CRUD operations

  • Analytics services (StreakCalculator, HabitAnalyticsService) for streak computation,

heatmap data, trend lines, weekly comparisons, and category breakdowns

  • Seed data service generating 6 categories, 10 habits with 30-90 days of historical

entries, and 4 goals with milestones

  • Main HabitsViewModel with dashboard/habits/goals/analytics view routing, search with

300ms debounce, CRUD commands, and partial classes for dashboard and analytics state

  • 7 AXAML views: HabitsView shell, DashboardPanel, HabitsListPanel, GoalsListPanel,

HabitDetailPanel, GoalDetailPanel, AnalyticsPanel — all using compiled bindings

  • 5 capability partial classes: IGraphDataProvider, IPluginDataSourceProvider,

IIntentProvider (3 intents), IQuickActionProvider (Cmd+H quick log),

IIndexableContentProvider

  • QuickLogHabitForm fix: decimal/double cast for NumericUpDown compatibility
  • Converters: StringToColor, ProgressToWidth, BoolToOpacity, FrequencyDisplay
← Prev Page 64 of 127 Next →

Get notified about new releases