Skip to content

chore: notify when a newer yul release is available - #16

Merged
algomaster99 merged 5 commits into
mainfrom
feat/notify-newer-yul-release
Aug 16, 2026
Merged

chore: notify when a newer yul release is available#16
algomaster99 merged 5 commits into
mainfrom
feat/notify-newer-yul-release

Conversation

@algomaster99

@algomaster99 algomaster99 commented Aug 16, 2026

Copy link
Copy Markdown
Member

Summary

  • The chains-hooks marketplace source for yul is unpinned, but Claude Code doesn't re-resolve a plugin's source on every session start — it reuses whatever it last cloned into ~/.claude/plugins/cache/<marketplace>/yul/. Claude Code can auto-update a plugin in the background a few minutes after session start, but that's off by default for third-party marketplaces (only Anthropic's official ones default to on), so users can end up running a stale yul version indefinitely with no signal a newer release exists.
  • ensure-yul.sh now checks GitHub's latest release tag against the plugin version resolved this session, and if newer, prints a top-level systemMessage — the same channel Claude Code's own CLI uses for its update notices, shown directly to the user's terminal, independent of whether Claude chooses to mention it. (hookSpecificOutput.additionalContext, used elsewhere for scan findings, only reaches Claude — not the user directly — so it's the wrong field for a plain "you're behind" notice.)
  • The notice points at the two things that actually work: claude plugin update yul@chains-project (+ /reload-plugins or a restart) for an immediate pickup, and adding "autoUpdate": true to the chains-project entry under extraKnownMarketplaces in ~/.claude/settings.json for a durable fix. An earlier draft told users to run /plugin marketplace update chains-project, which only refreshes the marketplace catalog and does nothing to the installed plugin — corrected after testing showed it doesn't work.
  • The check fails open (no curl/network/parse failure blocks startup), mirroring the rest of the script.

Before (stale version, no signal):

$ ls ~/.cache/yul/
v0.0.4/

no indication a newer release shipped.

After (stale version, one release behind):

{"systemMessage":"yul: a newer release (v0.0.5) is available; this session is running the cached v0.0.4. To pick it up now: `claude plugin update yul@chains-project`, then /reload-plugins (or restart). To stop seeing this: add \"autoUpdate\": true to the chains-project entry under extraKnownMarketplaces in ~/.claude/settings.json, so Claude Code updates it in the background automatically (this is off by default for third-party marketplaces)."}

Test plan

  • go build ./... and go test ./... -v pass
  • Manually ran scripts/ensure-yul.sh against the current plugin.json (already latest) — silent, exit 0
  • Manually ran it against a copied plugin.json pinned to an older version — printed valid systemMessage JSON (verified with python3 -m json.tool)
  • Loaded the patched plugin end-to-end via claude --plugin-dir in a scratch project with an artificially old plugin.json version — confirmed the systemMessage banner actually renders in a real session

algomaster99 and others added 5 commits August 16, 2026 15:31
The chains-hooks marketplace source for yul is unpinned, but Claude
Code doesn't re-resolve a plugin's source on every session start — it
reuses whatever it last cloned. So users can silently sit on a stale
cached plugin version indefinitely with no signal that a newer release
shipped.

ensure-yul.sh now checks GitHub's latest release tag against the
plugin version resolved this session and, if newer, prints
SessionStart hook JSON telling Claude to let the user know and
suggest /plugin marketplace update (or reinstalling the plugin). Fails
open like the rest of the script if the check can't run.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
additionalContext depends on Claude choosing to relay it in
conversation. systemMessage is a top-level hook JSON field shown
directly to the user's terminal, the same channel Claude Code uses
for its own CLI update notices — no model mediation needed for a
plain "you're behind" notice.
/plugin marketplace update only refreshes the marketplace catalog, it
doesn't touch the installed plugin, so the previous notice's advice
did nothing. The real lever is claude plugin update (immediate) and
autoUpdate on the marketplace entry (durable) — background plugin
auto-update exists but defaults to off for third-party marketplaces
like chains-hooks, which is why yul goes stale silently in the first
place.
extraKnownMarketplaces can be registered in user, project, or local
scope, and the marketplace could be found in any of them depending on
how a given user set it up.
@algomaster99 algomaster99 changed the title feat: notify when a newer yul release is available chore: notify when a newer yul release is available Aug 16, 2026
@algomaster99
algomaster99 marked this pull request as ready for review August 16, 2026 18:09
@algomaster99
algomaster99 merged commit 9830f31 into main Aug 16, 2026
2 checks passed
@algomaster99
algomaster99 deleted the feat/notify-newer-yul-release branch August 16, 2026 18:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant