Commit Graph
128 Commits
Author SHA1 Message Date
tbenandClaude Opus 5.5 33145bea9e 1.4.1: nested pages dirs, CommonJS require of react in client bundles
- Page URL paths are now relative to src/pages. The old greedy
  `.*/pages/` cut mapped src/pages/admin/pages/index.tsx to /index, so
  every page under a nested `pages` directory collided with the home page
  and was never bundled. SSR also tells API routes by URL path now.
- CommonJS `require("react…")` in client bundles (for example
  use-sync-external-store/shim, pulled in by MUI) threw "Dynamic require
  of "react" is not supported" in the browser. Those requires now go
  through a small bundled ESM module that imports the external.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-09 08:37:44 +01:00
tbenandClaude Opus 5.5 96e392f556 1.4.0: not_found, server-only response options, compression
- Server functions can return not_found: true to render the 404 page
  with status 404.
- Page components and window.__PAGE_PROPS__ (and HMR updates) only get
  props, query, url and error. response_options, redirect, cache settings
  and res_transform stay on the server, so cookies and private headers no
  longer end up in the HTML. BunextPageProps is narrowed to match
  (breaking for code that read server-only fields from component props).
- response_options headers go through a Headers object, so repeated
  headers such as several Set-Cookie survive.
- Redirects: status_code wins over permanent; response_options headers
  and res_transform apply to redirects too.
- Gzip for compressible text responses; compress: false to turn it off.
- Files the router matches but never bundles (.server.ts, __root,
  excluded paths and directories) return 404 instead of looping through
  dev rebuild retries.
- Missing public files return 404 rather than 403, so dotted page paths
  like /users/john.doe fall through to pages again.
- importFresh detects rewrites within the filesystem's mtime granularity.
- README: self-hosted React (not esm.sh), snake_case option names, static
  file serving, cache headers, the new options.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-09 04:14:56 +01:00
tbenandClaude Opus 5.5 4d4a79a6dd Push HMR updates before the SSR rebuild in dev
Client-only edits are sent to the browser right after the hydration build,
without re-running server functions; SSR rebuilds afterwards and props are
re-fetched only when a .server.ts output changed or after fullRebuild. Page
requests wait for an in-flight SSR rebuild. The SSR build no longer runs
Tailwind, the PostCSS processor is reused across rebuilds, and the watcher
debounce drops from 200ms to 50ms.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-05 07:32:33 +01:00
tben ed788dff97 Add SSR bundle minify config 2026-10-17 15:03:30 +01:00
tben 8a981c854a Builds errors bugfix 2026-10-16 16:54:55 +01:00
tben 5dc783fe97 Fix memory leak in dev server 2026-10-16 14:25:18 +01:00
tbenandClaude Opus 5.5 3d0771f2d0 Stop per-request module re-imports leaking memory in production
Page rendering imported the SSR bundle and .server.ts modules with a
unique ?t= query on every request, in production too. Each one became a
new, never-evicted module record (and re-ran module top-level code), so
RSS grew with request count. Cache-bust only in dev via importFresh.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 19:37:15 +01:00
tbenandClaude Opus 5.5 23a309005a Add disable_seo config to keep preview deployments out of search engines
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-15 05:29:08 +01:00
tbenandClaude Opus 5.5 3a75880ae4 Date sitemap lastmod from the build pipeline; warn on skipped pages
- bunext build records when each page's client bundle hash last changed
  in .bunext/page-lastmod.json (sitemap.lastmod_file to relocate). The
  hash covers the page's whole import graph, so component edits re-date
  every page that uses them. The sitemap uses these dates as lastmod
- Add sitemap.default_lastmod
- BREAKING: use_file_lastmod now defaults to false (file mtimes are reset
  by checkouts); it is a fallback after the build record
- Warn when a page or __root.tsx is skipped because its default export
  is not at the start of a line (e.g. export { Page as default })
- Replace leaking module mocks in tests (log, grab-root-file-path) with
  spies and fixtures

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 18:25:38 +01:00
tben 3025b1681d Fix module watcher errors 2026-10-14 12:30:41 +01:00
tben eefb2ea5d2 Fix security vulnerabilities 2026-10-13 15:52:34 +01:00
tben 4238d9a4ea Fix watcher rebuild on page add and delete 2026-10-13 15:18:41 +01:00
tben 7bab610b38 Fix failing tests, update page component handler to exclude 404 pages on retries 2026-10-03 03:32:01 +01:00
tben 3a4ece5255 Updates 2026-10-02 14:50:13 +01:00
tben 8fa5b64b48 Fix build lags 2026-10-02 14:48:38 +01:00
tben 7e353dbeb3 Error handling bugfix: pass #2 2026-10-02 07:20:55 +01:00
tben d8ea4f8e02 Error handling bugfix: pass #1 2026-10-02 07:04:22 +01:00
tben 2335c60cc3 Refactor artifacts to use relative directory for build step and retrieval 2026-09-23 05:08:54 +01:00
tben 2803dfa0be Updates 2026-09-22 16:52:54 +01:00
tben d4cc401209 Updates 2026-09-22 16:43:14 +01:00
tben 15eb1f7982 Updates 2026-09-22 16:07:09 +01:00
tben 1c52617728 Updates 2026-09-22 16:01:25 +01:00
tben 1bf1b651db Update dev server 2026-08-14 13:12:35 +01:00
tben 247a64c873 Update dev server 2026-08-14 12:59:20 +01:00
tben f590deb11b Update dev server 2026-08-14 09:58:12 +01:00
tben 3426c7b53b Update dev server 2026-08-14 09:57:22 +01:00
tben afd1af1827 Update dev server 2026-08-14 09:55:57 +01:00
tben 22d3dedab2 Update page server types 2026-08-14 06:49:12 +01:00
tben 8d12329f01 Add perpetual watcher reload in dev 2026-08-13 05:39:14 +01:00
tben 78e86b3999 Rename global variables 2026-08-03 12:01:40 +01:00
tben 87948340b0 Add public envs 2026-08-03 08:42:33 +01:00
tben 86ea86e7bd Updates 2026-08-01 05:25:47 +01:00
tben 596b9de047 Add request cookie to HMR reload pipeline 2026-07-31 07:21:52 +01:00
tben 9da1e16318 Bugfix: Fix dev function 2026-07-30 14:50:54 +01:00
tben 823c5bb1ca Remove bun imports from esbuild bundler 2026-07-30 11:52:08 +01:00
tben 88ead3b3d6 Remove all Loader.registry.delete lines 2026-07-29 14:05:12 +01:00
tben 45509deff8 Dev Server Refresh Bugfix. Loop happens after a file route is refactored to a folder route with index.ts 2026-07-29 13:55:23 +01:00
tben a19863b3e9 Updates 2026-07-20 20:54:59 +01:00
tben a9cd51d71c Bugfix: update stale HMR after fixed errors 2026-07-20 20:54:39 +01:00
tben e3a0f5fbeb Error handling bugfix in dev server 2026-07-20 20:41:30 +01:00
tben 1d0ac4aa80 Update start logic 2026-07-01 19:23:05 +01:00
tben 817beacc7a Update build step 2026-07-01 19:18:11 +01:00
tben cd9ac833dc Switch back to fs watcher 2026-04-21 16:25:57 +01:00
tben e2b8b95a4b Switch watcher to chokidar 2026-04-20 16:12:24 +01:00
tben 40a987b983 Update banner log 2026-04-19 18:57:55 +01:00
tben b702e26bf6 Security fixes pass #2 2026-04-19 16:00:59 +01:00
tben cb5126c947 Refactor error handling 2026-04-19 11:12:11 +01:00
tben 95fcee36b2 Fix server component stale caching. Add server components to SSR bundler 2026-04-19 09:04:55 +01:00
tben b2e92e5792 Updates 2026-04-18 11:17:13 +01:00
tben 9a427412f3 Refactor start and dev commands. Start in child processes. Handle errors better 2026-04-17 08:47:36 +01:00