From 0dc79743e66b1eea5eee79c8b525013eb3ab93f3 Mon Sep 17 00:00:00 2001 From: Anilcan Cakir Date: Thu, 28 May 2026 18:42:05 +0300 Subject: [PATCH 1/2] release: 0.0.5 (artisan ^0.0.6 bump + 0.0.5 promote) Promotes 0.0.5. Bundles three behavior surfaces from PR #10 plus the dependency bump that enables them on pub.dev: 1. artisan constraint ^0.0.5 -> ^0.0.6 (Dart pre-1.0 caret rule resolves to >=0.0.6 <0.0.7). Required for the mcp:install fallback below because the substrate --invocation= flag this release depends on first ships in fluttersdk_artisan 0.0.6. 2. mcp:install fallback when bin/fsa is absent now writes 'dart run fluttersdk_dusk mcp:serve' (the dusk wrapper auto-injects --invocation=fluttersdk_dusk before forwarding mcp:install to the substrate). Previously fell through to the legacy ':dispatcher' shape. No change when fastcli is present. 3. bin/fluttersdk_dusk.dart forces collectMcpTools: true on mcp:serve dispatch so 'dart run fluttersdk_dusk mcp:serve' surfaces all 31 dusk_* MCP tools even without the bin/fsa scaffold. Previously returned 0 plugin tools (only the 10 substrate artisan_* tools). 4. 33 'dart run fluttersdk_artisan ...' references inside the dusk package renamed to 'dart run fluttersdk_dusk ...' (docs, dartdocs, error messages, chained subprocess calls in dusk_install_command.dart, JSON example blocks in setup.md, SKILL.md, and the cli-commands.md table). Substrate 'package:fluttersdk_artisan/' Dart imports unchanged (those are real package paths, not invocations). Verified end-to-end on a fresh 'flutter create' consumer with path-linked dusk + path-linked artisan 0.0.6: bootstrap (install + plugin:install + dusk:install), mcp:install on both fastcli-present and fastcli-absent paths, mcp:serve initialization (41 tools = 31 dusk_* + 10 substrate via tools/list), mcp:serve tools/call for dusk_snap against a running Flutter app on Chrome, dusk:tap / dusk:dblclick (real counter increments visible via subsequent dusk:snap), and the other 12 dusk:* commands exercised in the E2E smoke. Bug 2 from the original report (dusk:install corrupting main.dart) confirmed NOT a bug: '.fromSeed' and '.center' are valid Dart 3.x static-access dot-shorthand from the Flutter 3.44 template; 'flutter analyze' clean on fresh 'flutter create' output; diff after dusk:install shows only the kDebugMode block added. Version sync: - pubspec.yaml version 0.0.4 -> 0.0.5 - pubspec.yaml fluttersdk_artisan ^0.0.5 -> ^0.0.6 - example/pubspec.yaml fluttersdk_dusk path-dep version 0.0.4 -> 0.0.5 - CHANGELOG.md [Unreleased] promoted to [0.0.5] - 2026-05-28 with footer diff link [0.0.5]: ...compare/0.0.4...0.0.5 --- CHANGELOG.md | 14 +++++++++++++- example/pubspec.yaml | 2 +- pubspec.yaml | 4 ++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b1b62d8..a62ba05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,8 +8,15 @@ This project follows [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0. ## [Unreleased] +_No unreleased changes yet._ + +--- + +## [0.0.5] - 2026-05-28 + ### Changed +- **`fluttersdk_artisan` constraint bumped from `^0.0.5` to `^0.0.6`** (Dart pre-1.0 caret rule: `^0.0.6` resolves to `>=0.0.6 <0.0.7`). Consumers now pull in artisan 0.0.6 which ships the substrate `mcp:install --invocation=` flag this release depends on for the fallback behavior below. - **`mcp:install` fallback when `bin/fsa` is absent now writes `dart run fluttersdk_dusk mcp:serve`.** The dusk wrapper auto-injects `--invocation=fluttersdk_dusk` when forwarding `mcp:install` to the substrate, so the substrate's `.mcp.json` writer picks the plugin-aware payload instead of the legacy `dart run :dispatcher mcp:serve` fallback. No change in behavior when fastcli is present; the `./bin/fsa mcp:serve` payload is unchanged. - **Renamed every dart run fluttersdk_artisan reference inside the dusk package to dart run fluttersdk_dusk (33 docs/code occurrences).** The dusk wrapper proxies the full artisan command surface; the package-local invocation is now canonical inside dusk's own docs, error messages, dartdocs, and chained subprocess calls. Substrate package:fluttersdk_artisan/ Dart imports unchanged. @@ -17,6 +24,10 @@ This project follows [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0. - **`bin/fluttersdk_dusk.dart` now forces `collectMcpTools: true` when dispatching `mcp:serve`**, so `dart run fluttersdk_dusk mcp:serve` surfaces all 31 dusk_* MCP tools even without the fastcli scaffold. Previously returned 0 plugin tools (only the 10 substrate tools). +### Verified + +- End-to-end smoke on a fresh `flutter create` consumer + path-linked dusk + path-linked artisan 0.0.6: bootstrap (`install` + `plugin:install` + `dusk:install`), `mcp:install` with both fastcli-present and fastcli-absent paths, `mcp:serve` initialization (41 tools = 31 dusk_* + 10 substrate via `tools/list`), `mcp:serve` `tools/call` for `dusk_snap` against a running Flutter app on Chrome, `dusk:tap` / `dusk:dblclick` (real counter increments visible via subsequent `dusk:snap`), `dusk:get_routes` / `dusk:observe` / `dusk:screenshot` / `dusk:find` / `dusk:hover` / `dusk:wait` / `dusk:console` / `dusk:exceptions` / `dusk:doctor` / `dusk:device --list` — all green. No Bug 2 regression: `.fromSeed` and `.center` Dart 3.x static-access dot-shorthand survive `dusk:install` patching unchanged. + --- ## [0.0.4] - 2026-05-27 @@ -146,7 +157,8 @@ Initial public release of `fluttersdk_dusk`. E2E driver for Flutter apps. Snapsh `DuskSnapshotEnricher` typedef, `DuskPlugin.install` / `DuskPlugin.enrichers` / `DuskPlugin.registerNavigateAdapter`, `RefRegistry` public methods (`register`, `lookup`, `registerQuery`, `lookupQuery`, `disposeAll`, `resetForTesting`), and every MCP tool name / `ext.dusk.*` extension name are part of the public 0.0.1 contract. Future releases keep these stable across the 0.x line; any change requires a coordinated bump with `magic` + `wind`. -[Unreleased]: https://github.com/fluttersdk/dusk/compare/0.0.4...HEAD +[Unreleased]: https://github.com/fluttersdk/dusk/compare/0.0.5...HEAD +[0.0.5]: https://github.com/fluttersdk/dusk/compare/0.0.4...0.0.5 [0.0.4]: https://github.com/fluttersdk/dusk/compare/0.0.3...0.0.4 [0.0.3]: https://github.com/fluttersdk/dusk/compare/0.0.2...0.0.3 [0.0.2]: https://github.com/fluttersdk/dusk/compare/0.0.1...0.0.2 diff --git a/example/pubspec.yaml b/example/pubspec.yaml index be2e0eb..a4ed721 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -37,7 +37,7 @@ dependencies: fluttersdk_dusk: path: .. - version: 0.0.4 + version: 0.0.5 dev_dependencies: flutter_test: diff --git a/pubspec.yaml b/pubspec.yaml index abdc3fd..8ca83ca 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: fluttersdk_dusk description: "Flutter E2E driver for LLM agents and CI. 32 CLI commands and 31 MCP tools drive a running app over VM Service extensions; no flutter_test harness needed." -version: 0.0.4 +version: 0.0.5 homepage: https://fluttersdk.com/dusk repository: https://github.com/fluttersdk/dusk issue_tracker: https://github.com/fluttersdk/dusk/issues @@ -25,7 +25,7 @@ environment: dependencies: flutter: sdk: flutter - fluttersdk_artisan: ^0.0.5 + fluttersdk_artisan: ^0.0.6 image: ^4.0.0 meta: ^1.16.0 fluttersdk_wind_diagnostics_contracts: ^1.0.0 From f0db2f1ce36c345b35a2af5d4a5df60613184054 Mon Sep 17 00:00:00 2001 From: Anilcan Cakir Date: Thu, 28 May 2026 18:46:21 +0300 Subject: [PATCH 2/2] docs(changelog): drop non-standard '### Verified' subsection Keep a Changelog 1.1.0 vocabulary is Added / Changed / Deprecated / Removed / Fixed / Security only. Folded the E2E smoke-test evidence into the existing ### Fixed bullet so the release notes match the documented shape; full E2E surface lives in the PR body. Addresses Copilot review on CHANGELOG.md:28. --- CHANGELOG.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a62ba05..d740748 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,11 +22,7 @@ _No unreleased changes yet._ ### Fixed -- **`bin/fluttersdk_dusk.dart` now forces `collectMcpTools: true` when dispatching `mcp:serve`**, so `dart run fluttersdk_dusk mcp:serve` surfaces all 31 dusk_* MCP tools even without the fastcli scaffold. Previously returned 0 plugin tools (only the 10 substrate tools). - -### Verified - -- End-to-end smoke on a fresh `flutter create` consumer + path-linked dusk + path-linked artisan 0.0.6: bootstrap (`install` + `plugin:install` + `dusk:install`), `mcp:install` with both fastcli-present and fastcli-absent paths, `mcp:serve` initialization (41 tools = 31 dusk_* + 10 substrate via `tools/list`), `mcp:serve` `tools/call` for `dusk_snap` against a running Flutter app on Chrome, `dusk:tap` / `dusk:dblclick` (real counter increments visible via subsequent `dusk:snap`), `dusk:get_routes` / `dusk:observe` / `dusk:screenshot` / `dusk:find` / `dusk:hover` / `dusk:wait` / `dusk:console` / `dusk:exceptions` / `dusk:doctor` / `dusk:device --list` — all green. No Bug 2 regression: `.fromSeed` and `.center` Dart 3.x static-access dot-shorthand survive `dusk:install` patching unchanged. +- **`bin/fluttersdk_dusk.dart` now forces `collectMcpTools: true` when dispatching `mcp:serve`**, so `dart run fluttersdk_dusk mcp:serve` surfaces all 31 dusk_* MCP tools even without the fastcli scaffold. Previously returned 0 plugin tools (only the 10 substrate tools). Verified end-to-end on a fresh `flutter create` consumer with path-linked dusk + artisan 0.0.6 against a running Flutter app on Chrome (real counter increments visible via `dusk:tap` + subsequent `dusk:snap`). ---