Skip to content

Allow dev extensions with a pinned project (adjust pin version check)#874

Open
JonahBraun wants to merge 4 commits into
mainfrom
fix/pin-gate-uses-conductor-mismatches
Open

Allow dev extensions with a pinned project (adjust pin version check)#874
JonahBraun wants to merge 4 commits into
mainfrom
fix/pin-gate-uses-conductor-mismatches

Conversation

@JonahBraun
Copy link
Copy Markdown
Contributor

@JonahBraun JonahBraun commented Apr 15, 2026

When a dev extension shadows the installed VSIX, failsPinMatchGate was comparing the running extension version (e.g. 0.24.0 from the dev extension's package.json) against the pin (e.g. 0.24.0-pr856-e368f60e). These never match, so activation halted permanently — but the Conductor saw no mismatch (the VSIX in the profile was correct) and never triggered a reload. Result: stuck on "Starting Project Synchronization (Version Pin Enforcement)" forever.

The gate should answer "would the right version be running if there were no dev extension?" — which is exactly what getPinMismatches answers, since it uses getInstalled() and dev extensions are invisible to that API.

Changes

  • failsPinMatchGate now calls codex.conductor.getPinMismatches instead of getEffectivePinnedExtensions + getCurrentExtensionVersion
  • Halts only if the Conductor reports codex-editor itself as mismatched (i.e. the wrong VSIX is installed in the active profile)
  • Dev extensions shadowing the correct VSIX no longer trigger a false halt

Testing

  • Used a dev extension w/ a version mismatch to a pinned project, observed stall at Starting Project Synchronization (Version Pin Enforcement) even though the correct extension was installed in the project
  • Used a dev extension w/ this fix. Continues fine.

The gate was comparing the running extension version against the pin,
which false-fires when a dev extension shadows the installed VSIX — the
dev version (e.g. 0.24.0) differs from the pin (e.g. 0.24.0-pr856-…),
so activation halted permanently with no reload ever coming.

Switch to getPinMismatches, which asks the Conductor whether the pinned
version is installed in the active profile (via getInstalled()). Dev
extensions are invisible to getInstalled(), so the gate correctly answers
"would the right version be running if there were no dev extension?".
@JonahBraun JonahBraun changed the title fix(pinning): use conductor's getPinMismatches in pin-match gate Allow dev extensions with a pinned project (adjust pin version check) Apr 15, 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.

3 participants