Skip to content

feat(adapter-vite): 0.42.0-alpha.1 — request-time rendering foundation (ADR-0120) - #534

Merged
SisyphusZheng merged 11 commits into
mainfrom
dev
Jul 27, 2026
Merged

feat(adapter-vite): 0.42.0-alpha.1 — request-time rendering foundation (ADR-0120)#534
SisyphusZheng merged 11 commits into
mainfrom
dev

Conversation

@SisyphusZheng

Copy link
Copy Markdown
Member

TP-2 of the 0.42.0 plan. renderIntent.mode gains semantics:

  • 'dynamic' routes skip prerendering (hono/ssg hook, dynamic expansion, i18n prerender); served per request by generated dist/server/index.js (nitro-mount over the same SSR bundle); dist/server/server-manifest.json records the partition; BuildPlan evidence carries requestTimeRoutes.
  • Hard rule: pages with actions cannot be prerendered (build fails otherwise).
  • Request-time HTML gets the island client entry injected by the server entry (hydration parity); pure-static builds emit no new artifacts — byte-identical public output proven against the 0.41.2 build (zero HTML/JS/CSS differences).
  • e2e fixture packages/adapter-vite/fixtures/request-time/: loader data varies per request, islands hydrate identically — Chromium/Firefox/WebKit 12/12.
  • Tooling hardened en route: stable→new-alpha-line retired-version guards, stale-prefix test shape, line-prose gate idempotency, visual baselines regenerated.

Release-prepare tier green locally. Publish via publish-existing after merge.

DevBot added 11 commits July 27, 2026 11:05
…ns semantics (0.42.0-alpha.1, ADR-0120)

renderIntent.mode was inert metadata; now:
- 'dynamic' routes skip prerendering (hono/ssg beforeRequestHook), dynamic
  expansion and i18n locale prerendering;
- pages with actions cannot be prerendered: a route module exporting an
  action without mode 'dynamic' fails the build;
- dist/server/server-manifest.json + dist/server/index.js (nitro-mount
  handler over the same SSR bundle) are emitted only when request-time
  routes exist, so pure-static output trees are unchanged;
- routeInfo carries hasAction from the generated entry.

Tests: request-time skip + artifacts, action hard rule, pure-static
no-artifact proof (17/17 in ssg-render.test.ts).
….42.0-alpha.1)

collectBuildArtifacts derives manifest.requestTimeRoutes from the emitted
dist/server/server-manifest.json; pure-static builds keep the previous
evidence shape (field absent).
…nconditionally

- The generated request-time server entry injects the island client entry
  into HTML responses (dist/server/client-script.js recorded after Phase
  2): the static pipeline's post-build injection never touches
  request-time pages, so islands there never hydrated. Proven end-to-end
  by the request-time fixture with its workaround removed — Chromium,
  Firefox and WebKit 12/12.
- The SSG entry emits const __headExtras unconditionally; projects
  without head extras previously 500'd every static page (latent codegen
  bug found by the fixture).
- Fixture final state: no inject.scripts/headExtras workarounds; config
  path depth fix in its playwright config.
… transition

- check-www-current-truth retired-prerelease rule now flags any full-form
  prerelease version that is not current (covers the retired 0.41.0-alpha
  line after the 0.41.2 → 0.42.0-alpha.1 bump) plus short alpha.N forms
  other than the current alpha number; the previous logic only retired
  same-base earlier alphas or same-base stable-line alphas.
- check-version-anchors stale-prefix test: the prefix relation only holds
  for same-base prerelease bumps; a new-line prerelease after a stable
  has no stale prefix.
- roadmap.tsx current-line entry written for 0.42.0-alpha.1 (request-time
  rendering foundation), satisfying the line-prose gate.
An idempotent release resume re-ran the roadmap anchor replacement with
from === to and re-recorded the already-written new theme as superseded,
so the line-prose gate rejected correct prose and the 0.42.0-alpha.1
prepare looped. Extracted as supersededThemeForBump with tests.
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions

Copy link
Copy Markdown
Contributor

APIError: Insufficient Balance

opencode session  |  github run

@SisyphusZheng
SisyphusZheng merged commit d0e3898 into main Jul 27, 2026
10 checks passed
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