Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 53 of 266 Next →
February 27, 2026
patch CalendarEmailNotesTasks

Migrate plugin modal overlays to ThemeShadowXl token

Details

Replace hardcoded BoxShadow="0 8 32 0 #60000000" in all four plugin

ModalOverlayTheme.axaml files (Tasks, Calendar, Notes, Email) with

{DynamicResource ThemeShadowXl} from the new elevation token system.

patch Desktop Shell

Include dataset ID in embedded context metadata

Details

Add the dataset UUID to the context injected for embedded dataset-backed

tables, so Duncan can reference it in [CHART:] markers when creating

notes with chart blocks.

patch Desktop Shell

Enable Duncan to dynamically query datasets via SQL

Details

Add [QUERY] block support to Duncan's cloud chat, allowing dynamic SQL

execution against embedded datasets. When a note contains dataset-backed

tables, Duncan now receives full schema metadata (column names, types,

row count) and can emit [QUERY]SELECT ... FROM source:"Name"[/QUERY]

blocks. The system executes queries via IDatasetService.ExecuteSqlV2Async,

injects results into conversation history, and triggers a follow-up AI

call for analysis.

Safety: read-only validation (SELECT/WITH only), 100 row cap per query,

max 3 queries per response, cloud-only (local models excluded).

patch Tasks

Add right-click context menu to Tasks detailed list view

Details

The detailed/sidebar list view was missing a context menu while all

other views (Simple list, Kanban, GTD, Calendar) had one. Users had

to click a task and use the detail panel buttons for actions like

delete, duplicate, archive, etc.

Adds the same MenuFlyout context menu to the detailed list item Border

with: Edit, Start Work, Mark Complete, Reopen, Start/Stop Timer,

Duplicate, Archive, Delete — matching the Simple list view menu.

patch Tasks

Fix Tasks settings overlay not opening on cog button click

Details

OpenAsync() was awaiting LoadAllAsync() without a try-catch. If any

service call threw (e.g., RuleService.GetRulesAsync SDK query), the

exception was silently swallowed by the AsyncRelayCommand and IsOpen

was never set to true — resulting in zero visual feedback on click.

Wrap LoadAllAsync in try-catch so IsOpen = true always executes.

← Prev Page 53 of 266 Next →

Get notified about new releases