Repository navigation
feat(core): refresh unpinned plugins on startup - #45118
Merged
Merged
Conversation
This was referenced Aug 26, 2026
kitlangton
force-pushed
the
plugin-updates
branch
from
August 26, 2026 02:02
c60912a to
88ad378
Compare
kitlangton
force-pushed
the
plugin-updates
branch
from
August 26, 2026 02:09
88ad378 to
3db5f00
Compare
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.
Why
Unpinned npm and Git plugins can advance while OpenCode continues loading an indefinitely cached installation. Refreshing on every config or location reload would introduce repeated network work and could change a plugin during a running server process.
What Changes
If a refresh fails and a cached installation exists, OpenCode logs a warning and loads that cached plugin instead of failing startup.
Runtime Boundary
The process-global npm service records each mutable package specification after its first refresh attempt. Plugin supervisor loads opt into this behavior, so the first load of each project-local plugin acts as startup for that plugin without requiring a server-wide config scan.
Scope
This is the startup-refresh MVP only. It adds no manual update API, protocol/schema/server/client/OpenAPI surface, or plugin-management UI.
Verification
The real local Git fixture verifies mutable branch refresh across service instances, no mid-runtime refresh, exact-commit pinning, and cached fallback when the remote becomes unavailable. All listed tests, package checks, the documentation build, and the 38-package pre-push typecheck pass.