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: 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..c26da5c 100644 --- a/.release-please-config.json +++ b/.release-please-config.json @@ -10,18 +10,22 @@ "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", "component": "vgv_ai_cli", "changelog-path": "CHANGELOG.md", "include-component-in-tag": false, - "extra-files": ["pubspec.yaml", "lib/src/version.dart"] + "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": [ diff --git a/AGENTS.md b/AGENTS.md index 6420f98..62739ed 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 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/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 diff --git a/packages/vgv_ai_cli/pubspec.yaml b/packages/vgv_ai_cli/pubspec.yaml index cf4226e..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 # x-release-please-version + plugin_source: ^0.1.0 pub_semver: ^2.2.1 pub_updater: ^0.6.0 toml: ^0.18.0