release: 6.0.0 - #266
Conversation
30 packages in lockstep. Seven breaking entries, each naming the manual edit it needs; `wiki/Upgrading.md`'s `5.x → 6.0.0` section walks them in order. The headline is that SolidJS reactivity works at all. `Bun.build` was called with no `plugins`, so island JSX became `React.createElement` against a `React` that is never imported: every island containing JSX threw `ReferenceError` on first interaction while the build reported success and `x verify` stayed green. It survived five majors because nothing in the repo compiled a `.tsx` that reached a browser — the test fixture, the reference app's only island and the `x g island` template were all plain-DOM `mount` functions. Four defects that shipped under a green gate are fixed with it: every `mail.*` string rendered `⟦key⟧` in every running app because `registerMailCatalog()` had no production caller; `render: 'spa'` served a blank page for the framework's whole history; `Uint8ClampedArray` clamping flattened alpha in every transparent PWA icon; and `core`, `schema` and `entity` each asked `Intl` whether a string was a timezone, which ICU 78 made a different question. `packages/core/src/image/` is deleted — 1,679 lines of hand-rolled JPEG and PNG codec, replaced by `Bun.Image`, with no new dependency. `renderSpa` and `createRouter` are deleted for the same reason 4.0.0 and 5.0.0 deleted things: they promised what the code did not do. What keeps it fixed is mechanism, not intent. An island fixture that executes `mount` against a real chunk; a loop over `RENDER_MODES` asserting every mode renders its route component; `i18n` as the 19th gate step, so a catalog that never reaches the runtime registry is a build error; `gate-steps.ts`, because the step count was documented as 17 while the code said 18 and then 19; and a pin test asserting four timezone predicates agree, including the one an app actually calls. CI now runs the Bun this repo runs. The two had diverged, and a green local gate stopped being evidence of a green CI. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KgsU1WBJMAjnLaazvfuJmD
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 35 minutes Limit details: You’ve used the included review currently available. Your 77 included PR review attempts over the past 7 days set your current allowance at 1 review per hour. You’re in a promotional period — use the checkbox below to run this review for free:
On-demand reviews are free for the next 31 days. After that, they cost $0.25 per reviewed file. How can I continue?Run this review now using the option above, or comment You can also wait for the limit to reset, then comment An organization admin can change what happens after included review limits in Billing. How do review limits work?CodeRabbit enforces per-developer PR review limits within each organization. For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yml Review profile: ASSERTIVE Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (46)
Comment |
30 packages in lockstep at 6.0.0.
bun run scripts/release.ts --check 6.0.0→ 30 packages are stamped at 6.0.0. Gate green: 14 of 19 passed, 5 skipped, 0 failed.Why this is a major
Seven breaking entries, each naming the manual edit it needs.
wiki/Upgrading.md's5.x → 6.0.0section walks them in order; the count is derived fromCHANGELOG.md, never curated —33 + 10 + 25 + 2 + 7 = 77across five majors.The headline: SolidJS reactivity works at all
Bun.buildwas called with noplugins, so island JSX becameReact.createElementagainst aReactthat is never imported.The build reported
success: true, no log, no warning, andx verifystayed green. It survived five majors because nothing in the repo compiled a.tsxthat reached a browser — the test fixture, the reference app's only island and thex g islandtemplate were all plain-DOMmountfunctions.Proven in Chromium against the real served chunk:
An intermediate fix using
solid-js/hwas rejected and not shipped: it is a runtime factory needing thunks, and JSX passes eager arguments, so<button>{n()}</button>would have painted correctly and never updated. Strictly worse than the crash, because it is undiagnosable.Four defects that shipped under a green gate
registerMailCatalog()had zero production callersmail.*string was⟦key⟧in every running apprender: 'spa'served<body><div id="x-root"></div></body>Uint8ClampedArrayclamping in PNG unfilteringcore,schemaandentityaskedIntl"is this a timezone?"t.timezoneaccepted+01:00off a request bodyDeletions
packages/core/src/image/— 1,679 lines of hand-rolled JPEG/PNG codec, Huffman tables, DCT, a Lanczos resampler — replaced byBun.Imagewith no new dependency.renderSpaandcreateRouterdeleted for the reason 4.0.0 and 5.0.0 deleted things: they promised what the code did not do.createRouterwas 236 LOC and 490 LOC of tests with zero callers, under a header calling itself "load-bearing for every app page".What keeps it fixed
Mechanism, not intent:
mountagainst a real built chunk — naive{n()}, an attribute binding, and a composed island importing a plain.tsxRENDER_MODESasserting every mode renders its route component, so a fifth mode without a renderer is a build error rather than a blank pagei18nas the 19th gate step — a catalog that never reaches the runtime registry now failsverifygate-steps.ts— the step count was documented as 17 while the code said 18, then 19. Three values in one dayt.timezoneitself, because a correct copy wired to nothing still ships the bugCI runs the Bun this repo runs
The dev box ran 1.4.0 while CI was pinned
1.3.x, and that let a green local gate sit on a change CI rejected.engines.bunstays>=1.3.0deliberately — it is a consumer install floor, not a toolchain pin, and 1.3.14 demonstrably installs and runs this framework.After merge
Annotated tag
v6.0.0→ GitHub Release → the workflow publishes 30 tarballs over OIDC with provenance.git tag -a, because--follow-tagsdoes not push a lightweight tag — that is howv4.0.0was first created and why its Release could not be made.🤖 Generated with Claude Code
https://claude.ai/code/session_01KgsU1WBJMAjnLaazvfuJmD
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.