Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 29 of 53 Next →
February 19, 2026
minor Desktop Shell

Add AI Intent Engine service and UI surfaces (v1.41.0)

Desktop 1.40.3 → 1.41.0 | 7b5f42ac
Details

Implements the shell-side IntentEngine that receives IntentSignalMessage

broadcasts, uses IAiService to classify content against available intent

descriptors, and surfaces IntentSuggestion objects to the user.

Engine (Services/AI):

  • IntentEngine: channel-based signal consumer with per-plugin debounce,

content deduplication, 50-suggestion FIFO cap, structured AI prompt

  • IntentPromptBuilder: dynamic prompt generation from intent descriptors

UI surfaces:

  • IntentSuggestionTrayViewModel + AXAML: floating tray with suggestion

cards, badge count, accept/edit/dismiss actions

  • IntentSuggestionCardViewModel: per-card display with slot editing
  • IntentSlotEditorViewModel + AXAML: modal overlay for slot review/edit
  • MainWindow: tray panel + sparkle button in status bar + overlay
  • SettingsViewModel.AI: intent engine + auto-analyze toggles

Wiring:

  • ServiceRegistration: IntentEngine singleton
  • PluginHostFactory/PluginHost: IntentEngine property
  • PluginRegistry: IIntentProvider auto-registration
  • AppSettings: AiIntentEnabled, AiIntentAutoAnalyze
minor SDK

Add AI Intent Engine capability types (v1.42.0)

SDK 1.41.0 → 1.42.0 | 49817ced
Details

Introduces the IIntentProvider capability interface and supporting types

for the cross-plugin AI Intent Engine. Plugins declare actionable intents

with typed slots, and the shell-side engine classifies content signals

to surface suggestions.

New SDK types:

  • IIntentProvider: capability interface for intent declaration + execution
  • IntentDescriptor, IntentSlot, IntentSlotType: intent schema DTOs
  • IntentRequest, IntentResult: execution contract
  • IntentSignalMessage, IntentSignalType: messenger-bus signal DTO
  • IIntentEngine: shell-provided engine interface exposed to plugins
  • IntentSuggestion: matched suggestion record
  • IPluginHost.IntentEngine property for plugin access
minor Core

Global rate-limit pause for cloud sync (v1.13.0)

Core 1.12.2 → 1.13.0 | 58dd2cd7
Details

When any cloud API request receives a 429 (Too Many Requests), the client

now pauses ALL sync operations for the Retry-After duration instead of

silently retrying individual calls.

Changes:

  • Added RateLimited { retry_after_secs } variant to CloudError with

retry_after() helper for extracting the pause duration

  • Added shared rate_limited_until gate to CloudApiClient with

enforce_rate_limit() pre-flight check and check_rate_limit_response()

post-flight handler on auth_get/auth_post/auth_delete

  • Sync engine run() loop now skips flush, poll, and credential refresh

ticks while rate-limited; ForceFlush and Stop final flush also respect

the gate

  • Replaced 3-attempt retry loop in flush_outbox() with single

advance_cursor call — on RateLimited error, re-queues current entity

events plus all remaining unprocessed entities and returns immediately

  • authenticate() and refresh_access_token() bypass the gate since they

use raw HTTP client calls and aren't subject to cloud rate limits

  • Parses Retry-After header (integer seconds from express-rate-limit),

falls back to 60s if missing, only extends deadline never shortens

minor CalendarContactsEmailFilesNotesRssSnippetsTasksWebClips

Add IIntentProvider implementations and version bumps

Rss 1.8.1 → 1.9.0 | Email 1.22.2 → 1.24.0 | Files 1.9.1 → 1.10.0 | Contacts 1.8.2 → 1.9.0 | Snippets 1.6.0 → 1.7.0 | WebClips 1.2.0 → 1.3.0 | e2b9b81d
Details

All 10 plugins now implement IIntentProvider, declaring actionable

intents with typed slots for the AI Intent Engine:

  • Calendar: create_event (title, start_time, end_time, location, description)
  • Tasks: create_task (title, description, due_date, priority)
  • Notes: create_note (title)
  • Contacts: create_contact (name, email, phone, company)
  • Email: draft_email (to, subject, body) + signal emission for received
  • Journal: create_entry (content, mood, tags)
  • Files: create_bookmark (name, path)
  • Snippets: save_snippet (title, content, language)
  • RSS: add_feed (url, title, category)
  • WebClips: save_clip (url, title, notes)

Version bumps for IIntentProvider + signal emission additions.

minor Notes

Add intent signal emission on page save/update (v1.46.1)

Notes 1.45.3 → 1.46.1 | a307273b
Details

When a page is saved via SaveCurrentPageAsync, the Notes plugin now

broadcasts an IntentSignalMessage via WeakReferenceMessenger. The signal

extracts plain text from all page blocks using the existing

ExtractBlockText helper and sends it with TextContent signal type. This

enables the shell-side IntentEngine to analyze saved page content for

actionable intents (e.g., auto-creating tasks, calendar events, or

contacts from note content). The emission is wrapped in a try/catch to

ensure it never blocks or interrupts the save flow. Both the csproj

version and PluginMetadata version are bumped to 1.46.1.

← Prev Page 29 of 53 Next →

Get notified about new releases