Changelog

Releases of the goribu framework and the create-goribu scaffolder.

goribu

0.1.0-alpha.9

  • Added: goribu deploy now checks Cloudflare auth up front. It runs wrangler whoami and, when you're logged out, opens the OAuth browser login if the terminal is interactive — or throws an actionable message (npx wrangler login, or set CLOUDFLARE_API_TOKEN) when running non-interactively in CI. Token-based auth skips the interactive step. Previously a logged-out user hit a raw wrangler d1 list failure deep inside resource resolution.
create-goribu

0.6.9

  • Default scaffolded goribu spec bumped to 0.1.0-alpha.9.
goribu

0.1.0-alpha.8

  • Breaking: <Form> replaced onResponse with status-dispatched onSuccess / onError. onSuccess(data, response) fires on a 2xx JSON response; onError(data, response) on a non-2xx JSON response, or on a transport failure where response is undefined. Dispatch is by HTTP status, not a { ok } body convention. Navigation responses (res.render / res.redirect) fire neither callback — they are JSON-only.
  • Callbacks run outside the in-flight guard and try/catch, so a throwing onSuccess/onError can't wedge the form's submitting state. Types and the scaffolded AGENTS.md updated to match.
create-goribu

0.6.8

  • Default scaffolded goribu spec bumped to 0.1.0-alpha.8; AGENTS.md documents the new <Form> onSuccess / onError callbacks.
goribu

0.1.0-alpha.7

  • Fixed: deploy no longer passes the unsupported --json flag to wrangler d1 create, which made wrangler exit with Unknown argument: json when auto-creating a database. The UUID is now parsed from wrangler's human banner (database_id = "<uuid>"), with a JSON branch kept as a guard for future wrangler versions. wrangler d1 list still uses --json.
  • Added test coverage around the wrangler calls in resource resolution.
create-goribu

0.6.7

  • Default scaffolded goribu spec bumped to 0.1.0-alpha.7.
goribu

0.1.0-alpha.6

  • Fixed: SPA navigation now preserves the URL hash. Client navigations carry the requested #fragment through history and the committed URL, and scroll to the matching element (id, then name, with percent-decoding fallback) after paint instead of dropping the anchor. Terminal and redirect responses keep the requested hash too.
  • Docs: documented the prerender binding limits — d1 / postgres in a prerender route are accepted syntactically but only resolve when the build-time dispatcher has matching bindings; otherwise the URL downgrades to dynamic with a warning.
  • Added public type definitions for res.vary(token) and useLocation() / LocationSnapshot, and corrected the README example to use res.notFound().
create-goribu

0.6.0

  • Content fixes across the scaffolded installation and deployment guidance, plus other small template corrections. Default scaffolded goribu spec bumped to 0.1.0-alpha.6.
create-goribu

0.5.1

  • Fixed: corrected a wrong dependency in the published package so the scaffolded goribu pin resolves to 0.1.0-alpha.5.
goribu

0.1.0-alpha.5

  • Breaking: request body API reworked. req.body (getter) and req.bodyObject() are gone, replaced by content-type-aware methods req.body(), req.json() and req.form() — lazy and cached on first access.
  • Breaking: query API reworked. req.query / req.queryObject() replaced by the friendly parser req.query(), with req.searchParams as the raw URLSearchParams escape hatch.
  • Breaking: removed the res.render(props) sugar entirely — render is now always explicit: res.render(Component, props).
  • req.d1 is now session-aware for Cloudflare D1 read replicas, with primary() / relaxed() freshness modes and a bookmark cookie that pins a session to its latest write.
  • Route meta expanded to canonical, robots, Open Graph, Twitter and arbitrary custom meta/ link tags, with wholesale client-side head sync on SPA navigation.
  • Route and entry chunks are now modulepreloaded via the manifest; dev ships React Refresh as a <ReactRefresh/> component.
  • Router auto-handles HEAD/OPTIONS and emits a correct 405 Allow list; added a 10 MiB Content-Length guard (413) and an additive Vary header so framework and app caching coexist.
create-goribu

0.5.0

  • Single TypeScript template is now the source of truth; the JavaScript variant is generated from it via ts-blank-space + prettier. Choose with --ts / --js.
  • Templates adopt the new goribu request/response API (req.query(), req.body()/ req.json()/req.form(), explicit res.render) and ship <ReactRefresh/>. Default scaffolded goribu spec bumped to 0.1.0-alpha.5.
goribu

0.1.0-alpha.4

  • Fixed: synthesized .goribu/wrangler.dev.jsonc now rewrites relative paths (main, assets.directory, site.bucket) with a ../ prefix so they resolve from the synth location back to the project root. Without this, the cloudflare/vite plugin rejected dev startup with The provided Wrangler config main field … doesn't point to an existing file. Every alpha.3 app was unbootable.
  • Regression test that walks every shipped create-goribu template, runs the dev synth and asserts main / assets.directory resolve to the same absolute path the user's wrangler.jsonc named. Catches future drift between template wrangler configs and the synth contract.
create-goribu

0.3.3

  • Default scaffolded goribu spec bumped to 0.1.0-alpha.4. alpha.3 produced an unbootable dev server (synth wrote unresolvable paths into .goribu/wrangler.dev.jsonc); alpha.4 fixes the synth. Templates themselves are unchanged.
goribu

0.1.0-alpha.3

  • Fixed: wrangler.jsonc parser now tolerates trailing commas before } / ], matching the de-facto .jsonc spec used by VS Code and wrangler's own tooling. Previously alpha.2 rejected stock wrangler configs at dev/build/deploy.
  • Fixed: Vite plugin ReferenceError: isBuild is not defined when running dev/build. The isBuild flag wasn't threaded through to the top-level regenerateManifests helper.
create-goribu

0.3.2

  • Default scaffolded goribu spec bumped to 0.1.0-alpha.3 (alpha.2 had a broken Vite plugin and JSONC parser; alpha.3 fixes both).
goribu

0.1.0-alpha.2

  • Breaking: database configuration moved from bindings.{d1,postgres} to a top-level database key in goribu.config.js. The old shape now throws at config load with a migration message. Use database: { type: 'd1', name: '...' } or database: { type: 'postgres', url: ..., hyperdriveId: ... }.
  • Breaking: users no longer add d1_databases or hyperdrive to wrangler.jsonc for the configured DB. Declaring it in both places is now a build error.
  • Breaking: the vite.config.{js,ts} template now passes cloudflare({ configPath: '.goribu/wrangler.dev.jsonc' }). Apps scaffolded before this change need that argument added manually.
  • Breaking: deploy no longer mutates dist/<worker>/wrangler.json in place. A fresh .goribu/wrangler.deploy.jsonc is written and passed via --config.
  • Built-in 404/500 fallback pages: the "Create routes/_404.jsx to customize it" framework hint is now only shown in dev. In production the fallbacks render a clean generic message and adapt to dark mode via prefers-color-scheme and .dark/[data-theme="dark"] ancestors.
  • D1 databases are now auto-created at deploy time if they don't exist on the Cloudflare account. Renames prompt for confirmation (skippable with --yes / -y).
  • New goribu db:info command — prints what the config resolves to in dev and prod, including what's missing.
  • .env.production is loaded into process.env before goribu.config.js evaluates, so configs can reference process.env.HYPERDRIVE_ID etc. at deploy time. Dev loads .env, .env.development and the .local variants on the same model.
  • POSTGRES_URL is the single env var name for both dev and prod Postgres connections — set it in .env (local DB) and .env.production (prod DB used by the deploy-time migration runner). --postgres-url=... on goribu deploy is a one-off override.
  • Vite plugin synthesizes the D1 / Hyperdrive binding into .goribu/wrangler.dev.jsonc (merged from the user's wrangler.jsonc) and sets CLOUDFLARE_HYPERDRIVE_LOCAL_CONNECTION_STRING_POSTGRES from database.url for Postgres dev.
create-goribu

0.3.1

  • Default scaffolded goribu spec bumped to 0.1.0-alpha.2.
create-goribu

0.3.0

  • Drop automatic dependency install after scaffold. The CLI now prints cd, <pm> install and <pm> run dev as next steps and leaves install to the user. Removed the --skip-install flag.
  • Simpler template prompt: switched to readline with a clearer "Which template?" listing and an explicit default-on-Enter behavior.
goribu

0.1.0-alpha.1

  • Add SSR-safe <NavLink> with active-state awareness, shared matcher, types and a dev-mode prerender fast-path guard.
  • Support dynamic-param routes in prerender via export.
  • TypeScript examples and improved error messages.
  • Reworked env secrets loading flow.
  • Prefetch: skip Worker fetch for prerendered targets and warm only the route chunk.
create-goribu

0.2.0

  • Add TypeScript template, selectable via --template typescript (alias ts) or the new interactive prompt. vite.config.ts ships as TS; goribu.config.js stays JS until the loader supports .ts.
  • Rename default template directory from templates/default/ to templates/javascript/. --template default remains a valid alias.
create-goribu

0.1.1

  • Default scaffolded goribu spec bumped to 0.1.0-alpha.1.
  • Scaffold UX polish: template ships a default tab title and favicon (via head dedup), deploy auto-builds, dependencies auto-install and the template gains a ~ Vite alias plus jsconfig.json.
  • Fixed a leftover from the bindings rename where the overlay read the old key and shipped a placeholder database_id to production on fresh builds.
  • Template tracks the req.dbreq.d1 rename and the split D1 migrations CLI.
goribu

0.1.0-alpha.0

  • Initial publish.
create-goribu

0.1.0

  • Initial publish.