Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 50 of 212 Next →
February 27, 2026
patch IO

Fix stale plugin dependencies in incremental build

Details

The --with-plugins incremental skip check only looked at plugin source

files (.cs, .csproj, .axaml) to decide if a rebuild was needed. When

PrivStack.Sdk or PrivStack.UI.Adaptive changed without any plugin source

change, the stale dependency DLLs persisted in plugins/ output, causing

MissingMethodExceptions at runtime.

Now also checks if PrivStack.Sdk.dll or PrivStack.UI.Adaptive.dll build

output is newer than the plugin DLL, triggering a republish when shared

dependencies change.

patch Tasks

Fix Tasks settings button not responding to clicks

Details

The settings cog button showed a tooltip on hover but clicking did nothing.

Root cause: AsyncRelayCommand's CanExecute returns false while a previous

execution is in-flight. If the RuleService SDK call during initialization

hung or took too long, OpenSettingsCommand would be permanently stuck in

"executing" state, silently rejecting all subsequent Execute calls.

Fix: Replace the Command binding with a Click handler in code-behind that

directly sets Settings.IsOpen and calls LoadSettingsDataAsync(), bypassing

the AsyncRelayCommand concurrency guard entirely. Also cleaned up debug

logging from previous investigation attempts.

patch Desktop Shell

Replace terse action catalog with concrete examples

Details

Models follow copy-pasteable examples far better than compact schema

listings. Replace the DatasetActionReference with three concrete [ACTION]

examples (create note with chart, update note, generate insights) that

the model can directly adapt. This fixes Duncan describing actions

instead of emitting [ACTION] blocks.

~318 tokens (was 188 terse, but 188 wasn't working). Total dataset

context injection is ~1,169 tokens — still under the original draft.

patch Tasks

Fix Tasks settings button permanently unclickable after first click

Details

Root cause: OpenSettingsAsync() awaited Settings.OpenCommand

.ExecuteAsync(), which is an AsyncRelayCommand with

AllowConcurrentExecutions=false (the default). Inside that command,

LoadAllAsync() calls RuleService.GetRulesAsync() → sdk.SendAsync().

If the SDK call hangs (never resolves), the command stays in

"executing" state forever. AsyncRelayCommand.CanExecute returns false

while executing, so the Button becomes permanently disabled — clicks

are silently ignored, but tooltip still works on hover.

Fix:

  • Show the overlay immediately (IsOpen = true) before loading data
  • Call LoadSettingsDataAsync() directly from the parent ViewModel

instead of going through Settings.OpenCommand, bypassing the

AsyncRelayCommand concurrency guard entirely

  • Rename LoadAllAsync → LoadSettingsDataAsync (internal) so the parent

VM can call it directly

patch Desktop Shell

Inject compact action catalog when embedded datasets are present

Details

When a note has embedded dataset tables, always inject the

ActionFormatHeader + a compact DatasetActionReference (~188 tokens)

listing notes.create_note, notes.update_note, and data.generate_insights

with chart block syntax. This ensures Duncan knows how to use [ACTION]

blocks for note operations without relying on RAG index freshness.

Collapsed the reference from ~481 tokens to ~188 by removing duplicated

format rules (ActionFormatHeader already covers those).

← Prev Page 50 of 212 Next →

Get notified about new releases