From bbc4361a1bd85ffd6aadc26eb93a42a8866adebf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?An=C4=B1lcan=20=C3=87ak=C4=B1r?= Date: Fri, 9 Oct 2026 04:44:10 +0300 Subject: [PATCH] release: 0.0.19 --- CHANGELOG.md | 9 +++++++++ CLAUDE.md | 2 +- doc/commands/install.md | 6 +++--- doc/getting-started/installation.md | 4 ++-- doc/plugins/authoring.md | 2 +- example/packages/awesome_plugin/pubspec.yaml | 2 +- example/pubspec.lock | 4 ++-- example/pubspec.yaml | 2 +- lib/src/mcp/mcp_server.dart | 2 +- pubspec.yaml | 2 +- server.json | 2 +- skills/fluttersdk-artisan/SKILL.md | 2 +- 12 files changed, 24 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8612161..6d13df0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,14 @@ This project follows [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0. ## [Unreleased] +## [0.0.19] - 2026-10-09 + +### Changed + +- **The `xml` constraint admits the 7.x line (`>=6.5.0 <8.0.0`, was `^6.5.0`).** The floor stays at 6.5.0, so this package's Dart SDK floor (3.4) does not move and a consumer that pins `xml` 6 keeps resolving. No public API changed: `PlistWriter` builds elements with `XmlElement.tag` and `XmlEditor` matches `android:` attributes on the namespace URI by hand, so neither calls the `XmlName` constructor or the `namespace:` argument of `getAttribute` that xml 7 deprecates, and installs behave the same on both majors (1418 tests pass against xml 6.5.0 and 7.1.0). What a consumer inherits is the resolution: on Dart 3.13 or newer a fresh `pub get` picks xml 7.1.0, which requires `petitparser` ^7.1.0; Dart 3.11 and 3.12 get xml 7.0.1, and older SDKs stay on 6.x. (#64, `pubspec.yaml`, `lib/src/helpers/plist_writer.dart`, `lib/src/helpers/xml_editor.dart`, `test/`) + +- **The example app moves `cupertino_icons` to `^2.0.0`.** It touches only the unpublished `example/` app, not the package. (#65, `example/pubspec.yaml`, `example/pubspec.lock`) + ## [0.0.18] - 2026-10-05 ### Added @@ -392,6 +400,7 @@ Both write through `.tmp` + atomic rename; never hand-edit. --- +[0.0.19]: https://github.com/fluttersdk/artisan/compare/0.0.18...0.0.19 [0.0.18]: https://github.com/fluttersdk/artisan/compare/0.0.17...0.0.18 [0.0.17]: https://github.com/fluttersdk/artisan/compare/0.0.16...0.0.17 [0.0.16]: https://github.com/fluttersdk/artisan/compare/0.0.15...0.0.16 diff --git a/CLAUDE.md b/CLAUDE.md index f0a90d4..44301e7 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -86,7 +86,7 @@ User-facing assets: ## Release -- Version: `0.0.18`. Bump per SemVer in `pubspec.yaml` and promote the `[Unreleased]` block of `CHANGELOG.md` to a dated section (with its footer compare link) before publishing. +- Version: `0.0.19`. Bump per SemVer in `pubspec.yaml` and promote the `[Unreleased]` block of `CHANGELOG.md` to a dated section (with its footer compare link) before publishing. - SIX files carry the version, all hand-edited: `pubspec.yaml`, `lib/src/mcp/mcp_server.dart` (the MCP handshake string), `example/pubspec.yaml`, `example/packages/awesome_plugin/pubspec.yaml`, `server.json` (the MCP registry manifest), and the stamp comment in `skills/fluttersdk-artisan/SKILL.md`. Grep the old number before opening the release PR; every cut so far has missed one. - Four of the six are guarded. The MCP string shipped a release behind on the 0.0.9 cut, and `test/mcp/mcp_server_version_test.dart` now fails the build when it drifts from the pubspec. The two `example/**/pubspec.yaml` pins are enforced by `flutter pub get` itself: they both carry a `path:` dep on this package plus an explicit `version:`, so bumping one and not the other fails resolution with `version solving failed` in the CI install step. `server.json` is covered by `test/server_json_version_test.dart`, and it is the site where drift is least forgiving: the MCP registry refuses to rewrite a version it has already published, so a stale number fails the cut outright instead of shipping quietly. The `SKILL.md` stamp is the only one nothing checks. - Docs that quote the caret constraint (`doc/getting-started/installation.md`, `doc/commands/install.md`, `doc/plugins/authoring.md`) track the released version; a stale `^0.0.1` there tells a reader the package never moved. diff --git a/doc/commands/install.md b/doc/commands/install.md index a2a3635..b3368a8 100644 --- a/doc/commands/install.md +++ b/doc/commands/install.md @@ -31,7 +31,7 @@ Equivalent manual edit, then `dart pub get`: ```yaml dependencies: - fluttersdk_artisan: ^0.0.18 + fluttersdk_artisan: ^0.0.19 ``` `install` itself re-injects the dep at scaffold time (path-dep when `.dart_tool/package_config.json` resolves `fluttersdk_artisan` to a relative `rootUri`, otherwise `fluttersdk_artisan: any`), so the pub-add step is idempotent with the scaffold's own pubspec writes. @@ -132,7 +132,7 @@ dependencies: fluttersdk_artisan: any ``` -Run `dart pub get` (or `flutter pub get`) after `install` completes to resolve to a concrete version. Tighten the constraint by hand (e.g. `^0.0.18`) once the consumer has chosen a baseline. +Run `dart pub get` (or `flutter pub get`) after `install` completes to resolve to a concrete version. Tighten the constraint by hand (e.g. `^0.0.19`) once the consumer has chosen a baseline. The injection is idempotent: if `pubspec.yaml` already contains a `fluttersdk_artisan:` key under `dependencies:`, neither form is written again (regardless of `--force`). @@ -180,7 +180,7 @@ Output: write bin/dispatcher.dart write lib/app/_plugins.g.dart write lib/app/commands/_index.g.dart - inject pubspec.yaml (fluttersdk_artisan: ^0.0.18) + inject pubspec.yaml (fluttersdk_artisan: ^0.0.19) write bin/fsa (Building artisan CLI, one-time ~8s...) Done. Run './bin/fsa status' to verify. ``` diff --git a/doc/getting-started/installation.md b/doc/getting-started/installation.md index 10d81a2..cefeefd 100644 --- a/doc/getting-started/installation.md +++ b/doc/getting-started/installation.md @@ -32,7 +32,7 @@ Alternatively, add it manually to your `pubspec.yaml`: ```yaml dependencies: - fluttersdk_artisan: ^0.0.18 + fluttersdk_artisan: ^0.0.19 ``` Then fetch dependencies: @@ -71,7 +71,7 @@ dart run fluttersdk_artisan install --force The injection is automatic and follows two modes: - **Monorepo / path-dep workflow**: when your project already resolves `fluttersdk_artisan` via a local path (detected from `.dart_tool/package_config.json`), the scaffold injects a `path:` reference pointing to the same checkout. This avoids a pub.dev fetch against a version that may not yet be published. -- **pub.dev workflow**: when no local resolution is found, the scaffold injects the `any` constraint and lets pub resolve the version transitively. Replace `any` with a pinned range (e.g. `^0.0.18`) before committing. +- **pub.dev workflow**: when no local resolution is found, the scaffold injects the `any` constraint and lets pub resolve the version transitively. Replace `any` with a pinned range (e.g. `^0.0.19`) before committing. ## Verify Installation diff --git a/doc/plugins/authoring.md b/doc/plugins/authoring.md index 078b5f6..c12d749 100644 --- a/doc/plugins/authoring.md +++ b/doc/plugins/authoring.md @@ -172,7 +172,7 @@ match the package's `providerName` (or a recognizable abbreviation thereof). ```yaml dependencies: - fluttersdk_artisan: ^0.0.18 + fluttersdk_artisan: ^0.0.19 ``` 3. Validate the archive before tagging: diff --git a/example/packages/awesome_plugin/pubspec.yaml b/example/packages/awesome_plugin/pubspec.yaml index 44e5ba5..13336c4 100644 --- a/example/packages/awesome_plugin/pubspec.yaml +++ b/example/packages/awesome_plugin/pubspec.yaml @@ -9,7 +9,7 @@ environment: dependencies: fluttersdk_artisan: path: ../../.. - version: 0.0.18 + version: 0.0.19 dev_dependencies: lints: ^6.0.0 diff --git a/example/pubspec.lock b/example/pubspec.lock index 70cc527..427ee1b 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -153,7 +153,7 @@ packages: path: ".." relative: true source: path - version: "0.0.18" + version: "0.0.19" frontend_server_client: dependency: transitive description: @@ -536,5 +536,5 @@ packages: source: hosted version: "2.2.4" sdks: - dart: ">=3.11.4 <4.0.0" + dart: ">=3.12.0 <4.0.0" flutter: ">=3.18.0-18.0.pre.54" diff --git a/example/pubspec.yaml b/example/pubspec.yaml index fc96b33..121ad09 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -37,7 +37,7 @@ dependencies: fluttersdk_artisan: path: .. - version: 0.0.18 + version: 0.0.19 awesome_plugin: path: ./packages/awesome_plugin diff --git a/lib/src/mcp/mcp_server.dart b/lib/src/mcp/mcp_server.dart index 8646b48..d262a7a 100644 --- a/lib/src/mcp/mcp_server.dart +++ b/lib/src/mcp/mcp_server.dart @@ -74,7 +74,7 @@ final class McpServer extends MCPServer with ToolsSupport { // cut, and test/mcp/mcp_server_version_test.dart fails the // build when it is not. The 0.0.9 cut missed it and shipped a // handshake one release behind. - version: '0.0.18', + version: '0.0.19', ), ); diff --git a/pubspec.yaml b/pubspec.yaml index 870cc24..cb7b0ae 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: fluttersdk_artisan description: "Composable Dart CLI framework and stdio MCP server for Flutter. Scaffolding, code generation, transactional plugin installs, hot reload, REPL, and AI agent tooling." -version: 0.0.18 +version: 0.0.19 homepage: https://fluttersdk.com/artisan repository: https://github.com/fluttersdk/artisan issue_tracker: https://github.com/fluttersdk/artisan/issues diff --git a/server.json b/server.json index 6d28858..ef8829e 100644 --- a/server.json +++ b/server.json @@ -3,7 +3,7 @@ "name": "io.github.fluttersdk/artisan", "title": "FlutterSDK Artisan", "description": "CLI framework and stdio MCP server for Flutter: scaffolding, hot reload, REPL, codegen.", - "version": "0.0.18", + "version": "0.0.19", "repository": { "url": "https://github.com/fluttersdk/artisan", "source": "github" diff --git a/skills/fluttersdk-artisan/SKILL.md b/skills/fluttersdk-artisan/SKILL.md index a5d449f..fd8c441 100644 --- a/skills/fluttersdk-artisan/SKILL.md +++ b/skills/fluttersdk-artisan/SKILL.md @@ -5,7 +5,7 @@ version: 0.0.7 when_to_use: "Any task where the agent boots, restarts, inspects, or evaluates a running Flutter app via artisan: calling `artisan_*` MCP tools (start, status, doctor, tinker, hot-restart) in sequence, invoking `./bin/fsa ` from Bash, recovering from missing state.json or stale PID, picking substrate vs dispatcher MCP wiring, choosing between `artisan_tinker` (VM Service evaluate) and `dusk_evaluate` (E2E driver) for an inspect-or-mutate flow." --- - + # fluttersdk_artisan