Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 30 of 127 Next →
February 26, 2026
patch FilesRssSnippetsWebClips

Expand AI intents for Snippets, RSS, WebClips, and Files plugins

Details

Snippets: +3 intents (search_snippets, delete_snippet, create_collection)

— 4 total

  • search_snippets: search by title/content with language/collection filter
  • delete_snippet: trash snippet by ID or title search
  • create_collection: create snippet collection with description/color

RSS: +3 intents (remove_feed, mark_all_read, search_articles) — 4 total

  • remove_feed: unsubscribe + delete articles by ID or name search
  • mark_all_read: mark all articles read (optionally per-feed)
  • search_articles: search by title/summary with feed/starred filter

WebClips: +2 intents (search_clips, update_clip_status) — 3 total

  • search_clips: search by title/URL/content with status filter
  • update_clip_status: set status (unread/reading/read/archived)

Files: +2 intents (search_files, delete_file) — 3 total

  • search_files: search by file name with folder filter
  • delete_file: soft-delete (trash) by ID or name search

Uses `with` expressions for init-only record properties (RssArticle.Read,

WebClip.StatusRaw). Reuses existing service search methods where available.

patch EmailHabitsJournal

Expand AI intents for Email, Journal, and Habits plugins

Details

Email: +4 intents (search_email, mark_read, move_message, reply) — 5 total

  • search_email: search by subject/sender with folder filter
  • mark_read: mark messages read/unread by ID or subject search
  • move_message: move to folder (trash/archive/junk/custom)
  • reply: create reply draft (saves as draft, does not send)

Journal: +2 intents (search_entries, delete_entry) — 3 total

  • search_entries: search by content with date/mood filters
  • delete_entry: delete by ID or date search

Habits: +3 intents (update_habit, get_streak, get_today_status) — 6 total

  • update_habit: modify name, frequency, target, category, active status
  • get_streak: returns current/best streak and completion rate
  • get_today_status: checklist of today's logged/pending habits

All plugins use ResolveEntityAsync pattern with ID-first/search-fallback.

Email uses `with` expressions for init-only record properties.

patch CalendarContactsNotes

Expand AI intents for Calendar, Notes, and Contacts plugins

Details

Calendar: +3 intents (update_event, delete_event, list_events) — 4 total

  • update_event: modify title, time, location, description, status, all-day
  • delete_event: delete by ID or title search
  • list_events: query events by date range (default next 7 days)

Notes: +3 intents (search_notes, create_sticky, delete_note) — 4 total

  • search_notes: search pages by query, returns wiki-link summary
  • create_sticky: create quick sticky note with color
  • delete_note: trash page by ID or title search

Contacts: +4 intents (update_contact, search_contacts, create_company,

log_interaction) — 5 total

  • update_contact: modify any contact field by ID/name search
  • search_contacts: search contacts, returns wiki-link summary
  • create_company: create company record with industry/website
  • log_interaction: log call/email/meeting/note with a contact

All three plugins follow the Tasks gold-standard pattern with

ResolveEntityAsync helpers for ID-first/title-fallback resolution.

patch CalendarContactsEmailFilesFinanceHabitsJournalNotesRssSnippetsTasksWebClips

Round 4: complete AI intent inventory with full slot signatures

Details

The 10th-man audit: previous rounds listed intent names but not the full

slot signatures needed for the AI to construct proper natural-language-to-action

calls. The RAG-indexed descriptions now contain the complete actionable API

for every plugin, enabling voice/speech-to-intent routing.

Key findings and fixes:

  • Tasks: was missing 3 of 4 intents — added tasks.create_project,

tasks.update_task (with all 12 updatable fields), tasks.add_link (with

6 relationship types). This is the biggest gap: users saying "mark my

task as done" or "link this task to that note" would have failed.

  • Finance: had intent names but no slot details for 10 intents — users

asking "what's my checking balance?" or "how much did I spend on

groceries?" need the AI to know which params to fill

  • Notes: was missing content and tags slots (only listed title)
  • Journal: had wrong required slot (title doesn't exist, content is required)
  • Files: was completely missing files.create_bookmark intent
  • WebClips: was completely missing webclips.save_clip intent
  • All plugins: standardized format with * for required slots, included

defaults and behavioral notes (e.g., email.draft_email saves as draft,

does not send; calendar defaults to +1hr; habits uses fuzzy name matching)

patch ContactsEmailFilesHabitsRss

Round 3: add command palette entries to all plugins that expose them

Details

5 plugins register commands in the global command palette (Cmd+K) but none

of their DetailedDescriptions mentioned this. If a user asks Duncan "refresh

my feeds" or "check my mail", the AI needs to know these commands exist.

  • RSS: Refresh All Feeds, Show Unread/Starred, Mark All Read, OPML import/export
  • Email: Check Mail, Compose, Add Account, Mark All Read, Empty Trash
  • Contacts: New Contact/Company/Group, filter by status, Import, Scan Duplicates
  • Habits: New Habit, New Goal, Log Habit, View Analytics
  • Files: Upload File, New Folder, Toggle View, Switch Storage Mode
← Prev Page 30 of 127 Next →

Get notified about new releases