Repository navigation
chore: adopt Very Good CLI release and repo conventions - #100
Conversation
marcossevilla
left a comment
There was a problem hiding this comment.
Thanks for doing this. The issue template rename is a nice catch, and pushing with the PAT so CI runs on the release PR is the right call.
I'm requesting changes for two release-please correctness problems (manifest bootstrap and exclude-paths) and a simplification that would delete most of release_please.yaml. Details are inline.
Two things I can't comment on inline because they're outside the diff:
- Pin bumps never trigger a release.
bot_bump_plugin_pins.yamlcommitschore: bump pinned plugins, andchoredoesn't count toward a release. Pin bumps are how users get new skills and agents, so considerfix(deps): bump pinned plugins. This only reaches the CLI once the linked-versions comment on the config is addressed. - Repo settings. Merge commits and rebase merges are both enabled. release-please parses most reliably with squash-only, so there's one Conventional Commit per PR, which matters more with a 5-PR stack. Please also confirm
RELEASE_PLEASE_TOKENexists before merge, or the first push tomainfails.
FYI: the README still says dart pub global activate vgv_ai_cli, and update and the update check rely on pub.dev. I assume a later PR in the stack covers that.
|
Updated — all inline points are answered. Two still on you: squash-only merges, and |
|
Follow-up: the config moved twice after my replies above, so threads about the manifest, linked-versions and
|
887de4f to
de40926
Compare
de40926 to
d8bb73d
Compare
release-please now owns versions and changelogs for both packages, and the release workflow regenerates the build_version output on the release branch so verify-version does not fail on the release PR. Also adds CODEOWNERS and a lychee link check, fixes the LICENSE copyright holder in both packages, gives each a repository and issue tracker, and renames ".github/ISSUE_TEMPLATE/ config.yml" — the leading space meant GitHub never read it, so blank_issues_enabled had no effect.
- `bootstrap-sha` pins where changelog collection starts. The repo has no tags, so without it the first release PR would replay every commit the hand-written 0.1.0 entries already describe. - `linked-versions` groups the two packages, so a fix in plugin_source bumps the CLI the user actually runs instead of only itself. - The root `exclude-paths` filtered nothing: release-please only attributes commits that touch a package path, and every entry was outside both. - `permissions: contents: read`, since the PAT does all the writing. - The link check reads markdown only. Scanning Dart needed ten ignore patterns for test fixtures; two remain, and a new fixture URL can no longer break the weekly run. - Dropped `topics` and `example/README.md`, which only affect pub.dev.
The two package entries meant a fix in plugin_source bumped only plugin_source, so the weekly pin bump — how users get new skills and agents — never reached the CLI. A single release unit at "." releases on any change in the repository, and tags it `vX.Y.Z` instead of one tag per component. The root pubspec.yaml now carries that version, and release-please writes it into the CLI's pubspec.yaml and lib/src/version.dart through the x-release-please-version markers on their version lines. That is how Very Good CLI does it, and it replaces build_version: gone with it are three dev dependencies, ensure_build_test.dart, the version-verify tag, the verify-version job, and the four workflow steps that regenerated the file on the release branch.
The two packages ship as one CLI at one version, so both go to pub.dev and both follow the release: release-please writes the version into the root pubspec, the CLI's pubspec and version.dart, plugin_source's pubspec, and the `plugin_source` constraint the CLI depends on, through the x-release-please-version markers on those lines. pub_publish.yaml publishes on the `v*` tag, plugin_source first — the CLI resolves it from pub.dev, so publishing the CLI against a version that is not there yet fails.
Releasing from "." meant the workspace root had to carry a version, and the root is not a package. Each package now releases itself, and the linked-versions plugin holds them at the same version, so a fix in plugin_source still releases the CLI — which is how a pin bump reaches users. include-component-in-tag is false for the CLI and true for plugin_source, so the product tag stays `vX.Y.Z` and pub_publish.yaml keeps firing on it. The dart strategy writes each package's own version, so the only lines left with an x-release-please-version marker are the two the generic updater has to reach: lib/src/version.dart and the plugin_source constraint in the CLI's pubspec. mergeUpdates composes that with the strategy's own pubspec update.
d8bb73d to
7e6f003
Compare
Description
Stack 3 of 5 for #68. Base:
fix/update-check-and-manifest-guidance(#99).release-please takes over versions and changelogs for both packages. Because it writes the bump straight into
pubspec.yaml, the workflow regenerates thebuild_versionoutput on the release branch, otherwiseverify-versionfails on the release PR. It needs theRELEASE_PLEASE_TOKENsecret.Also adds CODEOWNERS and a lychee link check, fixes the LICENSE copyright holder in both packages, gives each a repository and issue tracker, and renames
.github/ISSUE_TEMPLATE/ config.yml— the leading space in the filename meant GitHub never read it, soblank_issues_enabled: falsehad no effect.Type of Change
🤖 Generated with Claude Code