From 7f26dc729764993d5c7496313fbe63ab56ac087e Mon Sep 17 00:00:00 2001 From: Marcos Sevilla Date: Thu, 29 Oct 2026 13:39:49 +0100 Subject: [PATCH 1/5] fix: depend on plugin_source with a range release-please cannot break release-please's dart updater rewrites pubspec.yaml through a YAML round-trip, which strips the x-release-please-version marker on the plugin_source constraint. The release PR then bumped plugin_source to 0.2.0 while the CLI still required ^0.1.0, and workspace resolution failed in every job that runs dart pub get. Follow mason_cli's approach instead: a hosted range that survives the linked 0.x bumps, with the workspace supplying the local package. The generic updater now only touches lib/src/version.dart. Also ignore the CHANGELOG compare links in lychee, since the tags they point at only exist once the release PR merges. --- .lycheeignore | 3 +++ .release-please-config.json | 2 +- AGENTS.md | 4 +++- packages/vgv_ai_cli/pubspec.yaml | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.lycheeignore b/.lycheeignore index 36eb3f2..7eb00a8 100644 --- a/.lycheeignore +++ b/.lycheeignore @@ -6,3 +6,6 @@ # Private sibling repositories the workflow token cannot read ^https://github\.com/VeryGoodOpenSource/vgv-wingspan + +# release-please CHANGELOG compare links, whose tags exist only once the release PR merges +^https://github\.com/VeryGoodOpenSource/vgv_ai_cli/compare/ diff --git a/.release-please-config.json b/.release-please-config.json index 427a553..a18ea53 100644 --- a/.release-please-config.json +++ b/.release-please-config.json @@ -16,7 +16,7 @@ "component": "vgv_ai_cli", "changelog-path": "CHANGELOG.md", "include-component-in-tag": false, - "extra-files": ["pubspec.yaml", "lib/src/version.dart"] + "extra-files": ["lib/src/version.dart"] }, "packages/plugin_source": { "release-type": "dart", diff --git a/AGENTS.md b/AGENTS.md index 6420f98..5cf939e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -116,7 +116,9 @@ A result with one status enum, such as `EntryHealth` or `ReversedEntry`, is buil `lib/src/version.dart` carries the version release-please writes. **Never edit it by hand**, and never bump a version by hand either. -Both packages release together. release-please bumps each package's own `pubspec.yaml`, and the `linked-versions` plugin holds them at the same version, so a fix in `plugin_source` releases the CLI too — which is how a pin bump reaches users. Two lines need the generic updater and carry an `x-release-please-version` marker: this file, and the `plugin_source:` constraint in the CLI's `pubspec.yaml`. Nothing else should ever get that marker. +Both packages release together. release-please bumps each package's own `pubspec.yaml`, and the `linked-versions` plugin holds them at the same version, so a fix in `plugin_source` releases the CLI too — which is how a pin bump reaches users. Only this file needs the generic updater and carries an `x-release-please-version` marker. Nothing else should ever get that marker, least of all `pubspec.yaml`: release-please's `dart` updater rewrites the whole YAML and strips comments, so a marker there is silently lost. + +The CLI depends on `plugin_source` with the hosted range `'>=0.1.0 <1.0.0'`, the way `mason_cli` depends on `mason`. The workspace resolves it from `packages/plugin_source` locally, and the range stays satisfied as the linked versions bump, so nobody has to touch it per release. Raise the lower bound by hand only when the CLI starts using `plugin_source` API a published version lacks. The CLI is tagged `vX.Y.Z` and `plugin_source` as `plugin_source-vX.Y.Z`; `pub_publish.yaml` fires on the former. diff --git a/packages/vgv_ai_cli/pubspec.yaml b/packages/vgv_ai_cli/pubspec.yaml index cf4226e..bc0751a 100644 --- a/packages/vgv_ai_cli/pubspec.yaml +++ b/packages/vgv_ai_cli/pubspec.yaml @@ -18,7 +18,7 @@ dependencies: mason: ^0.1.0 mason_logger: ^0.3.6 path: ^1.9.1 - plugin_source: ^0.1.0 # x-release-please-version + plugin_source: '>=0.1.0 <1.0.0' pub_semver: ^2.2.1 pub_updater: ^0.6.0 toml: ^0.18.0 From a246927a3413e60be48f516f9341d0e3bad1e167 Mon Sep 17 00:00:00 2001 From: Marcos Sevilla Date: Thu, 29 Oct 2026 13:42:49 +0100 Subject: [PATCH 2/5] chore: release both packages as 0.1.0 The manifest already records 0.1.0, but nothing has been tagged or published yet, so release-please treated 0.1.0 as shipped and bumped the first release to 0.2.0. release-as pins the first release of both linked components to 0.1.0. --- .release-please-config.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.release-please-config.json b/.release-please-config.json index a18ea53..9c19dd6 100644 --- a/.release-please-config.json +++ b/.release-please-config.json @@ -16,12 +16,14 @@ "component": "vgv_ai_cli", "changelog-path": "CHANGELOG.md", "include-component-in-tag": false, + "release-as": "0.1.0", "extra-files": ["lib/src/version.dart"] }, "packages/plugin_source": { "release-type": "dart", "component": "plugin_source", - "changelog-path": "CHANGELOG.md" + "changelog-path": "CHANGELOG.md", + "release-as": "0.1.0" } }, "plugins": [ From 1d923277245f63c4dd298b9d2cd19696e9d6a6ee Mon Sep 17 00:00:00 2001 From: Marcos Sevilla Date: Thu, 29 Oct 2026 13:44:11 +0100 Subject: [PATCH 3/5] docs: drop the hand-written 0.1.0 CHANGELOG entries release-please writes the 0.1.0 entry from the commit history, and would otherwise prepend it above these, leaving two 0.1.0 sections. --- packages/plugin_source/CHANGELOG.md | 13 +----------- packages/vgv_ai_cli/CHANGELOG.md | 33 +---------------------------- 2 files changed, 2 insertions(+), 44 deletions(-) diff --git a/packages/plugin_source/CHANGELOG.md b/packages/plugin_source/CHANGELOG.md index e51e3f1..825c32f 100644 --- a/packages/plugin_source/CHANGELOG.md +++ b/packages/plugin_source/CHANGELOG.md @@ -1,12 +1 @@ -# 0.1.0 - -- feat: initial release. -- feat: resolve the pinned VGV plugins, `vgv-wingspan` and - `vgv-ai-flutter-plugin`, to a directory on disk, from the Claude Code plugin - cache or by cloning their pinned tag. -- feat: parse a Claude Code plugin's skills, agents, MCP servers and hooks - into a harness-neutral asset model. -- feat: validate each plugin file against an `ack` schema, throwing a - `PluginParseException` that names the file and the field. -- feat: `tool/bump_plugin_pins.dart` moves each pin to its plugin's latest - GitHub release. +# Changelog diff --git a/packages/vgv_ai_cli/CHANGELOG.md b/packages/vgv_ai_cli/CHANGELOG.md index 96780a3..825c32f 100644 --- a/packages/vgv_ai_cli/CHANGELOG.md +++ b/packages/vgv_ai_cli/CHANGELOG.md @@ -1,32 +1 @@ -# 0.1.0 - -- feat: initial release of `vgv_ai`, which configures the VGV plugins, - `vgv-wingspan` and `vgv-ai-flutter-plugin`, for these coding agent - harnesses: - - Claude Code, which installs the plugins natively from the marketplace. - - Gemini CLI - - Codex - - OpenCode - - Pi - - GitHub Copilot CLI - - Antigravity CLI -- feat: `install` configures every detected harness with the plugins' skills, - agents, commands, MCP servers and hooks, as far as each harness supports - them. Skills are shared under `~/.agents/skills`. Settings are merged, so - keys you own are kept, and what was written is recorded in - `~/.vgv_ai/manifest.json`. - - `--check` prints what would change without writing anything. - - `--force` overwrites your values where they conflict with VGV's. - - `--only ` configures the named harnesses, detected or not, and - `--no-` skips one. -- feat: `doctor` reports, per harness, what VGV installed that is missing, - changed since, or not what this version installs, along with the installed - and pinned plugin versions. Every problem comes with the `install` command - that fixes it. It never changes harness config or the manifest, and takes - `--only` and `--no-`. -- feat: `uninstall` removes only what the manifest records, keeping your own - files, keys and sections. - - `--check` prints what would be removed without removing anything. - - `--force` also removes what you changed since install. - - `--only ` and `--no-` narrow the run. -- feat: `update` updates the CLI to the latest version. +# Changelog From b40cf07afed3efc98763c2b219b9deb7f92a8151 Mon Sep 17 00:00:00 2001 From: Marcos Sevilla Date: Thu, 29 Oct 2026 13:48:10 +0100 Subject: [PATCH 4/5] chore: note when to remove release-as (#107) --- .github/workflows/release_please.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/release_please.yaml b/.github/workflows/release_please.yaml index dfca753..c8e12c6 100644 --- a/.github/workflows/release_please.yaml +++ b/.github/workflows/release_please.yaml @@ -18,6 +18,8 @@ jobs: runs-on: ubuntu-latest steps: + # .release-please-config.json pins both packages with "release-as": "0.1.0" + # for the first release. Remove it once 0.1.0 is published (#107). - name: šŸš€ Release Please uses: googleapis/release-please-action@v5 with: From cdabde2ee63cd15ca319523adae6df92426bc2f3 Mon Sep 17 00:00:00 2001 From: Marcos Sevilla Date: Thu, 29 Oct 2026 13:52:15 +0100 Subject: [PATCH 5/5] chore: bump the patch for features before 1.0 With linked versions, every feat: bumped plugin_source's minor in 0.x and fell outside the CLI's ^0.1.0 constraint. Bumping the patch for features and fixes until 1.0, as mason does, keeps ^0.1.0 satisfied, so the CLI can go back to it. A breaking change bumps the minor and needs the constraint raised by hand on its release PR. --- .release-please-config.json | 2 ++ AGENTS.md | 2 +- packages/vgv_ai_cli/pubspec.yaml | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.release-please-config.json b/.release-please-config.json index 9c19dd6..c26da5c 100644 --- a/.release-please-config.json +++ b/.release-please-config.json @@ -10,6 +10,8 @@ "pull-request-header": ":rotating_light: There are changes ready for release :rocket:\n\nℹ Merge this PR once the team confirms the release is ready.\n", "group-pull-request-title-pattern": "chore: release ${branch}", "include-component-in-tag": true, + "bump-minor-pre-major": true, + "bump-patch-for-minor-pre-major": true, "packages": { "packages/vgv_ai_cli": { "release-type": "dart", diff --git a/AGENTS.md b/AGENTS.md index 5cf939e..62739ed 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -118,7 +118,7 @@ A result with one status enum, such as `EntryHealth` or `ReversedEntry`, is buil Both packages release together. release-please bumps each package's own `pubspec.yaml`, and the `linked-versions` plugin holds them at the same version, so a fix in `plugin_source` releases the CLI too — which is how a pin bump reaches users. Only this file needs the generic updater and carries an `x-release-please-version` marker. Nothing else should ever get that marker, least of all `pubspec.yaml`: release-please's `dart` updater rewrites the whole YAML and strips comments, so a marker there is silently lost. -The CLI depends on `plugin_source` with the hosted range `'>=0.1.0 <1.0.0'`, the way `mason_cli` depends on `mason`. The workspace resolves it from `packages/plugin_source` locally, and the range stays satisfied as the linked versions bump, so nobody has to touch it per release. Raise the lower bound by hand only when the CLI starts using `plugin_source` API a published version lacks. +The CLI depends on `plugin_source` with the hosted constraint `^0.1.0`, the way `mason_cli` depends on `mason`, and the workspace resolves it from `packages/plugin_source` locally. Before 1.0, `bump-patch-for-minor-pre-major` makes `feat:` and `fix:` both bump the patch, so the constraint holds release after release. A breaking change bumps the minor instead (`bump-minor-pre-major`), and its release PR fails `dart pub get` until the constraint is raised to match on the release branch — deliberately, since a breaking release deserves the look. The CLI is tagged `vX.Y.Z` and `plugin_source` as `plugin_source-vX.Y.Z`; `pub_publish.yaml` fires on the former. diff --git a/packages/vgv_ai_cli/pubspec.yaml b/packages/vgv_ai_cli/pubspec.yaml index bc0751a..adf931c 100644 --- a/packages/vgv_ai_cli/pubspec.yaml +++ b/packages/vgv_ai_cli/pubspec.yaml @@ -18,7 +18,7 @@ dependencies: mason: ^0.1.0 mason_logger: ^0.3.6 path: ^1.9.1 - plugin_source: '>=0.1.0 <1.0.0' + plugin_source: ^0.1.0 pub_semver: ^2.2.1 pub_updater: ^0.6.0 toml: ^0.18.0