Release 4.0 - #61
Merged
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.
Release 4.0.0
Promotes the unreleased
4.0.0-rc.1to the stable4.0.0. No executable code changes — this is release preparation only: changelog, version, and README.Why the changelog needed restructuring
4.0.0-rc.1was never tagged or published (npm view sibujsstill tops out at3.4.1), yetCHANGELOG.mdcarried a dated## [4.0.0-rc.1] — 2026-08-25section and a separate 806-line[Unreleased]section holding PRs #51–#60. Both would ship in the same release, so a reader of the published changelog would have seen "Unreleased" describing work that was, in fact, released.The two sections are now one
## [4.0.0] — 2026-08-28. Three further problems were fixed in the process:[Unreleased]had accumulated### Fixed×3,### Security×2 and### Changed×2, because each PR appended its own block. Now one heading per category, with the#### <area>sub-heading style the rc.1 section already used, extended to 17 areas.[Unreleased]added a raised browser floor, a narrowedloadWasmModule()overload and a removed type field.### Breakingnow lists all four, and### Migration to 4.0is a numbered list covering each.NavigationFailureReason,AsyncDerivedContext,ConflictStrategyandSyncConflictare named in the entries that already described their behaviour.The merge was performed mechanically and verified: every content line from both sections appears in the result exactly once, with nothing dropped and nothing invented apart from the rewritten preamble and migration text.
Changes
CHANGELOG.md[Unreleased]+[4.0.0-rc.1]folded into one## [4.0.0] — 2026-08-28; accurate### Breakingand### Migration to 4.0package.json4.0.0-rc.1→4.0.0package-lock.json4.0.0README.md## Requirementssection; malformed badge links fixedThe README stated neither of the release's two consumer-facing floors. It now declares Node ≥ 22.3.0 and Chrome/Edge ≥ 93, Firefox ≥ 92, Safari ≥ 15.4, matching
engines.nodeandbrowserslistexactly. This matters because the README ships inside the tarball (files: ["dist", "README.md", "LICENSE"]), so it is the document consumers actually receive. The two badge lines were written[[text]](url)— the leftover of removing the image half of[](url)— and rendered as literal brackets.Review of v3.4.1 → 4.0.0
The full range (18 PRs, #43–#60) was audited for changelog coverage:
v3.4.1— 55 added, 0 removed. Of the 19 that are publicly reachable, 12 were already documented; 5 more are named by this PR.Verification
All 15 certification gates pass on this tree:
npm packproducessibujs-4.0.0.tgz.Known findings, not addressed here
Two internals are reachable from the public package, both new since
v3.4.1:__getNavigationEpochsibujs/pluginsreportDrainRunawayThis is the same class of defect fixed for
getRequestStorein #60. Because4.0.0is the first version to ship them to consumers, publishing converts them into semver commitments — removing them later would require a major. They are deliberately left out of the changelog so as not to document them as API. Fixing them before the tag costs nothing; afterwards it costs a major version.Reviewer notes
package-lock.jsoncarries transitive dev-dependency bumps (brace-expansion,nanoid) beyond the version sync. These were written byscripts/certify/node-matrix.mjs, which runsnpm installwithcwd: REPOrather thannpm ci..gitignoredocuments (LOCK-001) that the lockfile is committed precisely to stop CI silently re-resolving transitive dev dependencies, so this is the drift that policy exists to prevent. Everything above was verified with these versions installed. Decide whether they belong in the release commit.test-results/is not in.gitignore. It is Playwright's defaultoutputDirand is rewritten on every browser run; on a failure it also collects traces anderror-context.md. It was staged at one point during this work.Not done
No tag, no publish, no
distcommitted.