fix: recover extension install collisions and release 0.3.9 - #17
Merged
Conversation
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.
Summary
.trash, fall back to a verified copy when Windows locks prevent rename, and restore the old tree if replacement failsRoot cause
An incompatible
zcode-tps0.1.0 directory remained on disk after ZCode moved to 3.5.2. Startup correctly rejected it, but omitted it from the installed-record map. Catalog install therefore passed the in-memory duplicate check and collided with the hidden destination. Windows surfaced the collision asEPERM; the directory was also held open by the running Electron process, so a plain rename could not recover.User impact
Catalog installs now self-heal stale hidden destinations without deleting the previous extension tree. Locked destinations use the same copy fallback already proven by extension updates, while retaining a rollback copy.
Validation
bun scripts/package-release.ts --verify-only --tag v0.3.9bun run typecheckbun test(53 passed)bun run checknpm pack ./sdk --dry-runbun scripts/package-release.ts --tag v0.3.9.trash