Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 51 of 139 Next →
February 21, 2026
patch UI Components

Add cross-block drag selection escape detection to RichTextEditor

SDK 1.59.1 → 1.59.2 | d122611a
Details

RichTextEditor now detects when a drag selection moves outside its vertical

bounds (pointer Y < 0 or > Bounds.Height) and fires a new DragSelectionEscaped

event with the block ID and escape direction (+1 below, -1 above). On escape,

the RTE selects text from anchor to the corresponding edge, releases pointer

capture, and stops its internal drag — allowing the parent (NotesView) to take

over cross-block selection.

New public API:

  • DragSelectionEscaped event (Action<string, int>)
  • SelectToEnd() / SelectToStart() — select from anchor to document edge
  • ReleaseDragCapture() — externally end drag state
  • SelectionAnchor property (int?) — expose caret anchor position
  • HitTestPoint(Point) — char-index hit-test for external callers

Version bump: 1.59.1 → 1.59.2

patch Desktop Shell

Persist intent suggestions across app restarts

Desktop 1.58.5 → 1.58.6 | aee9eb6a
Details

IntentEngine now saves/loads suggestions to intent-suggestions.json in the

app data directory. Suggestions older than 7 days are auto-expired on load.

Persistence is debounced (2s) to avoid excessive I/O. On dispose, a final

flush ensures no suggestions are lost on clean shutdown.

The AI tray already reads PendingSuggestions on init, so persisted

suggestions appear automatically when the app restarts.

Desktop version 1.58.5 -> 1.58.6.

patch Desktop Shell

Include entity context in AI intent prompts and emit IntentExecutedMessage

Desktop 1.58.4 → 1.58.5 | 9294deea
Details

IntentPromptBuilder.BuildUserPrompt now includes the source entity type

and title so the AI generates contextual titles (e.g. "Dr Hotch Appointment"

instead of "Rescheduled Meeting"). System prompt updated to instruct the AI

to use source context when available.

IntentEngine.ExecuteAsync now broadcasts IntentExecutedMessage after

successful execution so source plugins can create reverse links.

Desktop version 1.58.4 -> 1.58.5.

patch SDK

Add IntentExecutedMessage for reverse-linking intent results

SDK 1.59.0 → 1.59.1 | 18815c2c
Details

New SDK message type broadcast after a successful intent execution,

allowing source plugins to create reverse links from the originating

entity to the newly created entity. This enables bidirectional linking

between e.g. a task and a calendar event created from that task's note.

SDK version 1.59.0 -> 1.59.1.

patch Desktop Shell

Add action buttons to AI intent suggestions and fix dismiss

Desktop 1.58.3 → 1.58.4 | 7637ec20
Details

Intent suggestions from IntentEngine (e.g. "Create Calendar Event",

"Create Task") were rendered with only a "Dismiss" link and no action

button. The user had no way to accept/execute the suggested intent.

Three fixes:

1. AddIntentAsAssistantMessage now adds a primary action button using

the matched intent's DisplayName (e.g. "Create Calendar Event").

Clicking it calls IntentEngine.ExecuteAsync() which routes to the

owning plugin's IIntentProvider.ExecuteIntentAsync().

2. Fixed RemoveMessageBySuggestionId double-prefix bug — intent messages

have SuggestionId="intent:{uuid}" but the method was searching for

"intent:intent:{uuid}", so dismiss never actually removed the message.

3. Dismiss now calls IntentEngine.Dismiss() to clean up the pending

suggestion from the engine, not just the UI collection.

Also added IRecipient<ContentSuggestionActionRequestedMessage> to

AiSuggestionTrayViewModel to route intent action clicks through

ExecuteIntentActionAsync with proper loading/applied/error state

transitions.

← Prev Page 51 of 139 Next →

Get notified about new releases