• v1.5.2 b868a2fa85

    v1.5.2 Stable

    nntrivi2001 released this 2026-09-10 09:48:25 +00:00 | 239 commits to main since this release

    Fixed

    Update detection was blind on a plugin-cache install that isn't a git clone.

    A marketplace entry with "source": "url" — this project's own — makes Claude Code unpack an archive instead of cloning, so ~/.claude/plugins/cache/sg/agenthub/<sha> has no .git. getUpdatesStatus probed for .git first and returned "Install directory is not a git clone; check for updates manually", skipping the whole release layer added in 1.5.0:

    • update_available stayed false however many releases were published,
    • plugin_marketplace / plugin_name were never set, so POST /api/updates/apply's plugin branch could never fire — it answered 409, wrongly claiming nothing newer was published.

    Because the symptom reads as "up to date", the bug was invisible for as long as the install happened to be current.

    The fix: the plugin branch now runs before the .git probe and answers without git at all. The repository URL comes from the marketplace manifest on disk (known_marketplaces.json → .claude-plugin/marketplace.json → source.url; a github owner/repo shorthand yields null rather than a guessed host), and package.json is the only local comparison signal. A failed release lookup is reported as release_check and never as "nothing newer".

    UI/CLI: the "not a git clone" note is gated on install_kind !== "plugin", so Update now is offered wherever the dashboard can actually check and apply.

    An already-open Claude Code session still needs /reload-plugins for new skills/commands — that is REPL-scoped and no server can trigger it.

    Verification

    • New regression suite server/__tests__/update-check-plugin-nogit.test.js (20 tests) pins the git-free path.
    • npm run test:server 1703 passing · npm run test:client 487 passing · npm run build clean.
    Downloads