Skip to content

feat: implement multiple entries support for multi-page SSG#54

Merged
uhyo merged 2 commits intomasterfrom
claude/implement-multiple-entries-CnemT
Feb 16, 2026
Merged

feat: implement multiple entries support for multi-page SSG#54
uhyo merged 2 commits intomasterfrom
claude/implement-multiple-entries-CnemT

Conversation

@uhyo
Copy link
Owner

@uhyo uhyo commented Feb 15, 2026

Add the entries option to FunstackStaticOptions, allowing a single
project to produce multiple HTML pages at build time. Internally, both
single-entry (root+app) and multi-entry (entries) configurations
are unified into the same codepath via a synthesized
virtual:funstack/entries module.

Key changes:

  • New EntryDefinition type exported from @funstack/static/entries
    with flexible root (sync/async module) and app (module or
    ReactNode) fields, plus AsyncIterable support for streaming entry
    generation.
  • RSC entry rewritten to iterate over entries for both build and dev
    serving, with URL-path-to-filename matching for the dev server.
  • Build pipeline processes all entries sequentially, validates paths,
    detects duplicates, and shares the defer registry across entries.
  • Preview server updated to serve the correct HTML file by trying
    filename candidates on disk.
  • Unit tests for path validation and URL-to-filename mapping.
  • E2E fixture and tests for multi-entry builds.

https://claude.ai/code/session_01JFnP2BbX1Bpw6ZLougzt9R

Add the `entries` option to `FunstackStaticOptions`, allowing a single
project to produce multiple HTML pages at build time. Internally, both
single-entry (`root`+`app`) and multi-entry (`entries`) configurations
are unified into the same codepath via a synthesized
`virtual:funstack/entries` module.

Key changes:
- New `EntryDefinition` type exported from `@funstack/static/entries`
  with flexible `root` (sync/async module) and `app` (module or
  ReactNode) fields, plus `AsyncIterable` support for streaming entry
  generation.
- RSC entry rewritten to iterate over entries for both build and dev
  serving, with URL-path-to-filename matching for the dev server.
- Build pipeline processes all entries sequentially, validates paths,
  detects duplicates, and shares the defer registry across entries.
- Preview server updated to serve the correct HTML file by trying
  filename candidates on disk.
- Unit tests for path validation and URL-to-filename mapping.
- E2E fixture and tests for multi-entry builds.

https://claude.ai/code/session_01JFnP2BbX1Bpw6ZLougzt9R
The build output tests were checking for page content in raw HTML, but
with ssr: false (default) the app content renders client-side only.
Changed assertions to verify HTML structure (markers, RSC payload links)
instead, matching the pattern used by single-entry build tests.

https://claude.ai/code/session_01JFnP2BbX1Bpw6ZLougzt9R
@uhyo uhyo merged commit 839a153 into master Feb 16, 2026
1 check passed
@uhyo uhyo deleted the claude/implement-multiple-entries-CnemT branch February 16, 2026 12:38
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.

2 participants