Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
6 changes: 3 additions & 3 deletions doc/commands/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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`).

Expand Down Expand Up @@ -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.
```
Expand Down
4 changes: 2 additions & 2 deletions doc/getting-started/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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.

<a name="verify-installation"></a>
## Verify Installation
Expand Down
2 changes: 1 addition & 1 deletion doc/plugins/authoring.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
2 changes: 1 addition & 1 deletion example/packages/awesome_plugin/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ environment:
dependencies:
fluttersdk_artisan:
path: ../../..
version: 0.0.18
version: 0.0.19

dev_dependencies:
lints: ^6.0.0
Expand Down
4 changes: 2 additions & 2 deletions example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ packages:
path: ".."
relative: true
source: path
version: "0.0.18"
version: "0.0.19"
frontend_server_client:
dependency: transitive
description:
Expand Down Expand Up @@ -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"
2 changes: 1 addition & 1 deletion example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ dependencies:

fluttersdk_artisan:
path: ..
version: 0.0.18
version: 0.0.19

awesome_plugin:
path: ./packages/awesome_plugin
Expand Down
2 changes: 1 addition & 1 deletion lib/src/mcp/mcp_server.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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',
),
);

Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion server.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion skills/fluttersdk-artisan/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 <cmd>` 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 v0.0.18 | Skill updated: 2026-10-05 | Source: https://github.com/fluttersdk/artisan -->
<!-- fluttersdk_artisan v0.0.19 | Skill updated: 2026-10-09 | Source: https://github.com/fluttersdk/artisan -->

# fluttersdk_artisan

Expand Down
Loading