flutter_assistant_intents 1.3.1
flutter_assistant_intents: ^1.3.1 copied to clipboard
Expose task-app actions to voice assistants — iOS App Intents (Siri, Spotlight, Shortcuts) and Android app shortcuts — with typed Dart handlers.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.3.1 - 2026-07-14 #
Added #
- Generator cleanup: previously generated files are tracked in a manifest
(
.dart_tool/flutter_assistant_intents/outputs.json); when output paths change, stale files are deleted and theirproject.pbxprojentries removed — but ONLY files still carrying the// GENERATED by …marker. Hand-written files at old paths are never touched.
1.3.0 - 2026-07-14 #
Fixed #
- Siri routed "Add a task in Siri's
built-in Reminders domain claims utterances that open with "add/create a
task", so the trailing app name never reached
AddTaskIntent. The add-task shortcut now also advertises app-name-first phrases ("Add a
[1.3.0] - 2026-07-14 #
Added #
- YAML-driven code generation (
dart run flutter_assistant_intents:generate): declare actions once inassistant_intents.yamland the tool generates the Runner's Swift App Intents (typed parameters, Siri phrases, task preset aspackagere-export orwrappers), registers the file inproject.pbxproj(idempotent), and emits Dart glue (action-id constants +generatedAndroidShortcuts).--initscaffolds a starter config; validation enforces Apple's phrase-token and 10-shortcut rules. - New dependency:
yaml(used by the generator CLI).
1.2.0 - 2026-07-13 #
Added #
- Swift Package Manager support on iOS (dual with CocoaPods): sources
moved to
ios/flutter_assistant_intents/Sources/…with aPackage.swift; the podspec points at the same sources, so both integrations work.
1.1.0 - 2026-07-13 #
Added #
- iOS cold-start support: the plugin can boot a headless
FlutterEnginewhen Siri runs an intent while the app process is not alive. Enable withFlutterAssistantIntentsPlugin.setPluginRegistrantCallback(optionally with a dedicated Dartentrypoint); ahandlers.synchandshake removes the engine-boot race.
1.0.0 - 2026-07-13 #
First stable release — API considered stable from here on (SemVer).
Changed #
- Promoted 0.1.0 to stable with no API changes: task preset
(
onAddTask/onCompleteTask/onQueryTasks) + generic action layer (onAction, custom iOS intents viaAssistantIntentBridge.performAction, Dart-defined custom Android shortcuts).
0.1.0 - 2026-07-13 #
Added #
- Typed Dart handler API:
AssistantIntents.instance.registerHandlers(...)with optionalonAddTask,onCompleteTask,onQueryTaskscallbacks (task preset) and a genericonActioncallback for app-defined actions. - Typed models:
AddTaskRequest,CompleteTaskRequest,QueryTasksRequest,AssistantActionRequest,AssistantTask,AssistantTaskResult,TaskQueryFilter,AndroidShortcutsConfig,AndroidCustomShortcut. - iOS (16+): App Intents implementation —
AddTaskIntent(title, due date, notes),CompleteTaskIntent,QueryTasksIntent, anAppShortcutsProviderwith app-name-based invocation phrases (short titles + SF Symbols), andFlutterAssistantIntentsPackage(AppIntentsPackage) for host re-export. - iOS: public
AssistantIntentBridge.performAction(id:parameters:)so host apps can declare custom intents with their own Siri phrases whose logic lives in Dart; hard 10 s timeout on every Dart round-trip so a silent handler can never hang Siri. - Android: dynamic app shortcuts ("Add task", "Today") published additively
via
ShortcutManagerCompat.pushDynamicShortcut(host shortcuts are never replaced), with icons and ranks; fully Dart-defined custom shortcuts routed toonAction. updateShortcuts()— no-op-safe refresh of platform shortcut donations with configurable Android labels, task-preset opt-out and custom shortcuts.- Runnable
example/app (Android + iOS hosts) demonstrating the task preset, the generic action layer and the required iOSAppIntentsPackagere-export. - Dart-layer tests with a mocked method channel.