Skip to content

release: 6.0.0 - #266

Merged
sebyx07 merged 1 commit into
mainfrom
release/6.0.0
Aug 20, 2026
Merged

release: 6.0.0#266
sebyx07 merged 1 commit into
mainfrom
release/6.0.0

Conversation

@sebyx07

@sebyx07 sebyx07 commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

30 packages in lockstep at 6.0.0. bun run scripts/release.ts --check 6.0.030 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's 5.x → 6.0.0 section walks them in order; the count is derived from CHANGELOG.md, never curated — 33 + 10 + 25 + 2 + 7 = 77 across five majors.

The headline: 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.

mount({}) → ReferenceError: React is not defined

The build reported success: true, no log, no warning, 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.

Proven in Chromium against the real served chunk:

change the timezone <select>
  before:  … August 20, 2026 at 9:00 PM     (UTC)
  after:   … August 20, 2026 at 11:00 PM    (Europe/Berlin)

An intermediate fix using solid-js/h was 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

Defect Reach
registerMailCatalog() had zero production callers every mail.* string was ⟦key⟧ in every running app
render: 'spa' served <body><div id="x-root"></div></body> the framework's whole history
Uint8ClampedArray clamping in PNG unfiltering alpha forced to 255 — every transparent PWA icon
core, schema and entity asked Intl "is this a timezone?" ICU 78 made that a different question; t.timezone accepted +01:00 off a request body

Deletions

packages/core/src/image/1,679 lines of hand-rolled JPEG/PNG codec, Huffman tables, DCT, a Lanczos resampler — replaced by Bun.Image with no new dependency. renderSpa and createRouter deleted for the reason 4.0.0 and 5.0.0 deleted things: they promised what the code did not do. createRouter was 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:

  • an island fixture that executes mount against a real built chunk — naive {n()}, an attribute binding, and a composed island importing a plain .tsx
  • a loop over RENDER_MODES asserting every mode renders its route component, so a fifth mode without a renderer is a build error rather than a blank page
  • i18n as the 19th gate step — a catalog that never reaches the runtime registry now fails verify
  • gate-steps.ts — the step count was documented as 17 while the code said 18, then 19. Three values in one day
  • a pin test asserting four timezone predicates agree, including t.timezone itself, because a correct copy wired to nothing still ships the bug

CI 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.bun stays >=1.3.0 deliberately — 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-tags does not push a lightweight tag — that is how v4.0.0 was first created and why its Release could not be made.

🤖 Generated with Claude Code

https://claude.ai/code/session_01KgsU1WBJMAjnLaazvfuJmD


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

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
@coderabbitai

coderabbitai Bot commented Aug 20, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your current included review allowance is based on your included PR review attempts over the past 7 days.

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:

  • Run 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 @coderabbitai review --use-credits.

You can also wait for the limit to reset, then comment @coderabbitai review or push new commits to the PR.

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 configuration

Configuration used: Path: .coderabbit.yml

Review profile: ASSERTIVE

Plan: Pro

Run ID: adb50cf9-6f29-47bf-9794-52a68a4bc827

📥 Commits

Reviewing files that changed from the base of the PR and between f6c1f2e and e2c2b07.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock, !**/bun.lock
📒 Files selected for processing (46)
  • CHANGELOG.md
  • docker/helm/Chart.yaml
  • dummy/social-media-clone/package.json
  • dummy/social-media-clone/packages/i18n/package.json
  • examples/dummy/apps/admin/package.json
  • examples/dummy/apps/web/package.json
  • examples/dummy/package.json
  • examples/dummy/packages/core/package.json
  • examples/dummy/packages/db/package.json
  • examples/dummy/packages/domain/package.json
  • examples/dummy/packages/i18n/package.json
  • examples/dummy/packages/mcp/package.json
  • examples/dummy/packages/ui/package.json
  • framework.manifest.json
  • packages/action/package.json
  • packages/admin/package.json
  • packages/ai/package.json
  • packages/auth/package.json
  • packages/cache/package.json
  • packages/cli/package.json
  • packages/core/package.json
  • packages/create-ultimate/package.json
  • packages/db/package.json
  • packages/entity/package.json
  • packages/flags/package.json
  • packages/http/package.json
  • packages/i18n/package.json
  • packages/jobs/package.json
  • packages/mail/package.json
  • packages/manifest/package.json
  • packages/mcp/package.json
  • packages/money/package.json
  • packages/policy/package.json
  • packages/pwa/package.json
  • packages/query/package.json
  • packages/realtime/package.json
  • packages/render/package.json
  • packages/schema/package.json
  • packages/scraping/package.json
  • packages/seo/package.json
  • packages/storage/package.json
  • packages/testing/package.json
  • packages/time/package.json
  • packages/ui/package.json
  • wiki/Upgrading.md
  • wiki/_Footer.md

Comment @coderabbitai help to get the list of available commands.

@sebyx07
sebyx07 merged commit 8fe7c56 into main Aug 20, 2026
37 checks passed
@sebyx07
sebyx07 deleted the release/6.0.0 branch August 20, 2026 23:05
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.

1 participant