v3.0.2 patch release prep: correct globals docblock href round-trip contract - #9
Merged
Merged
Conversation
…s round-trip verbatim on href The globals subpath docblock (and the plugin-types README) taught the %3A → %253A percent-encoding double-encode as a pinned href round-trip divergence of the host URL shim. That was disproven during fn-182.5's review: the shim's URL(string:) → absoluteString href path preserves pre-encoded query values VERBATIM (Desktop pins this via JSCURLCoherenceTests.testPreEncodedQueryRoundTripComputedRow); the double-encode reproduces only via Foundation's URLComponents.queryItems construction path, which the shim never uses. The corrected epic contract forbids teaching it as shim behavior. - href accessor docblock: verbatim round-trip statement replaces the double-encode claim - constructor divergence list: double-encode bullet removed; explicit "NOT a divergence" note explains the queryItems-only artifact - README divergence bullet aligned Also pre-stages the lockstep 3.0.2 bump (npm version 3.0.2 --workspaces --include-workspace-root --no-git-tag-version --allow-same-version), matching the 3.0.1 release-prep pattern; release.sh tolerates the pre-staged bump. Publish remains user-authorized (./release.sh 3.0.2 post-merge).
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.
What
Fixes a codex epic-completion-review P1 for fn-182:
packages/plugin-types/src/globals.ts(and the plugin-types README) taught the%3A → %253Apercent-encoding double-encode as a pinned href round-trip divergence of the host URL shim.That claim was disproven during fn-182.5's review: the shim parses with
URL(string:)and serializes withabsoluteString, and on that path pre-encoded query values round-trip verbatim — Desktop pins this viaJSCURLCoherenceTests.testPreEncodedQueryRoundTripComputedRow(computed equality against Foundation on both first parse and href round-trip). The double-encode reproduces only via Foundation'sURLComponents.queryItemsconstruction path (the lapcatsoftware report), which the shim never uses. The corrected epic contract explicitly forbids teaching it as shim behavior.Changes
globals.tshref accessor docblock: double-encode claim replaced with the verbatim round-trip statementglobals.tsconstructor-level pinned-divergence list: double-encode bullet removed; a "NOT a divergence" note after the list explains that the%3A → %253Aartifact isURLComponents.queryItems-only and does not apply to this APIpackages/plugin-types/README.mddivergence bullet aligned to the same contractnpm version 3.0.2 --workspaces --include-workspace-root --no-git-tag-version --allow-same-version);release.shdetects the pre-staged bump and skips the empty bump commitValidation
npm run build— clean across all three workspacesnpm test— exit 0; the 4-fixture globals gate passes (jsc-with-globals,jsc-types-array,jsc-without-globals,webview-dom)docs-site npm run check-drift— green (drift-gate inputs arepermissions.ts/core.ts/schemas; globals subpath is excluded from the TypeDoc program per 0487daf)Publish
NOT published by this PR. Publish remains user-authorized:
./release.sh 3.0.2post-merge (builds, tests, tagsv3.0.2, publishes all workspaces). The dev-plugin mirror refresh happens after 3.0.2 publishes.