v4.8.0 — the plugin has a version, and a comment stays on its own element - #1
Merged
Conversation
…ment Until now plugin.json declared no version, which is how a host is told that every commit is a release. That suited a tool being rewritten weekly and suits a published plugin badly: there is no number to put in a bug report, nothing for a marketplace listing to show, and no way to ship a fix without shipping whatever else landed that afternoon. Both host manifests now declare 4.8.0, and a host updates when that number changes. A copy installed before this release has no version on record, so update-check falls back to comparing commits for it, exactly as before, until it updates once. The manifests were also thinner than what they describe. They now carry a display name, homepage, repository, license and keywords chosen for what someone would type to find this, and the Codex manifest carries the same set. All three descriptions are drawn from the README rather than each inventing their own wording. A comment could land on a lookalike. selectorFor cut the path off after eight steps, and a short suffix can first-match a different element elsewhere in the document — querySelector returns that one. It now records the shortest suffix matching a single element, and a path ambiguous even at full length is rooted at body so the child chain is exact. Reanchoring had the same shape of problem from the other side: a selector that still parsed was preferred over the element carrying the comment's own words, so a stale path beat real evidence. An element scoring on text or identity is now taken first. CI runs the three suites on Node 18 and 22, checks the stamped shell for drift, validates both manifests with the tool the community-marketplace review pipeline runs, and fails when the two host manifests disagree about the version. A release workflow rejects a tag that disagrees with the manifest, which is the failure an explicit version makes possible. The rest is what a stranger reads before installing: issue and pull request templates, a changelog back to 1.0.0, a release procedure in CONTRIBUTING.md, and the distribution rules in CLAUDE.md so the three manifests stay one identity. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
4.8.0 — 2026-08-04
commit to
maincounted as a release. Your host now compares version numbersand updates when this number changes. A copy installed before this release has
no version on record and keeps comparing commits until it updates once.
selector recorded for a comment was cut off after eight steps, and a short
path can first-match a different element elsewhere on the page, which is the
one
querySelectorreturns. The recorded selector is now the shortest onethat matches a single element, and a path still ambiguous at full length is
rooted at
bodyso the chain is exact.selector still parses but its match shares nothing with what was captured, an
element scoring on text or identity is now taken ahead of it.
display name, homepage, repository, license, and keywords covering what
someone would search for. Descriptions across all three manifests are drawn
from the README.
validates both manifests with the same tool the community-marketplace review
pipeline runs. A release workflow rejects a tag that disagrees with the
manifest version.
CONTRIBUTING.md.Release PR. Merging this is step 7 of the release procedure in
CLAUDE.md; the tag and GitHub release follow onmain.🤖 Generated with Claude Code