Skip to content

feat(status): report detached plugins with a re-pin hint - #14

Merged
log0u7 merged 2 commits into
mainfrom
feat/status-detached-hint
Sep 21, 2026
Merged

log0u7 merged 2 commits into
mainfrom
feat/status-detached-hint

Conversation

@log0u7

@log0u7 log0u7 commented Sep 21, 2026

Copy link
Copy Markdown
Owner

Summary

A plugin whose HEAD is detached with no vimrc pin declared (e.g. a manual tag checkout during a maintenance session - like the fzf one diagnosed on 2026-09-16) rendered as "Up-to-date" in :PluginManager status while update silently skips it. Status now reports Detached (warn glyph) with an offline, actionable hint: the nearest reachable tag as the re-pin candidate, or "declare a pin or reattach a branch" when the module has no tags.

Type of change

  • feat (new feature)
  • fix (bug fix)
  • docs
  • test
  • refactor
  • chore / ci

Related issue

n/a (follow-up of the detached-HEAD diagnosis on the maintainer's setup; no issue tracking it)

How was this tested?

Vim 9.1 (Debian). TDD: the two new status.vader cases (nearest-tag hint / tagless fallback) were written RED against main, then made GREEN by the status change. Update messages untouched (pinned verbatim by tests/update.vader). git describe --tags --abbrev=0 is offline and only runs for detached modules (+1 subprocess outside the perf.vader budget scope).

  • make test-ci passes (216/216)
  • make test-async passes (16/16)
  • make test-install-smoke passes (install/declare changes)
  • Verified manually on Vim 8.2+ / Linux
  • New logic covered by a Vader test, written test-first when possible
    (bug fixes: failing regression test before the fix)

Checklist

  • Commits follow Conventional Commits (type(scope): subject)
  • README.md / doc/plugin_manager.txt / CHANGELOG.md updated if behavior changed
  • No new network call at startup (opt-in only, behind a g:plugin_manager_* flag defaulting to off)
  • Linux only, Vim 8.2 floor respected (no Vim 9+ features, guard v:version < 802 untouched)

A module whose HEAD is detached with no vimrc pin declared (e.g. a
manual tag checkout during a maintenance session) used to render as
'Up-to-date' in status while update silently skips it - the user had
no signal to act on. status now reports 'Detached' (warn glyph) with
an offline hint: the nearest reachable tag (git describe --tags
--abbrev=0, +1 subprocess for detached modules only) as the re-pin
candidate, or the plain 'declare a pin or reattach a branch' fallback.

Update messages untouched (pinned verbatim by tests/update.vader).
tests/status.vader covers both hint variants (tag found / no tag).
@log0u7
log0u7 merged commit b0525a9 into main Sep 21, 2026
32 checks passed
@log0u7
log0u7 deleted the feat/status-detached-hint branch September 21, 2026 19:31
log0u7 added a commit that referenced this pull request Sep 21, 2026
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