Changelog
Releases of the goribu framework and the create-goribu scaffolder.
0.1.0-alpha.9
- Added:
goribu deploynow checks Cloudflare auth up front. It runswrangler whoamiand, when you're logged out, opens the OAuth browser login if the terminal is interactive — or throws an actionable message (npx wrangler login, or setCLOUDFLARE_API_TOKEN) when running non-interactively in CI. Token-based auth skips the interactive step. Previously a logged-out user hit a rawwrangler d1 listfailure deep inside resource resolution.
0.6.9
- Default scaffolded
goribuspec bumped to0.1.0-alpha.9.
0.1.0-alpha.8
- Breaking:
<Form>replacedonResponsewith status-dispatchedonSuccess/onError.onSuccess(data, response)fires on a 2xx JSON response;onError(data, response)on a non-2xx JSON response, or on a transport failure whereresponseisundefined. 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/onErrorcan't wedge the form's submitting state. Types and the scaffoldedAGENTS.mdupdated to match.
0.6.8
- Default scaffolded
goribuspec bumped to0.1.0-alpha.8;AGENTS.mddocuments the new<Form>onSuccess/onErrorcallbacks.
0.1.0-alpha.7
- Fixed: deploy no longer passes the unsupported
--jsonflag towrangler d1 create, which made wrangler exit withUnknown argument: jsonwhen 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 liststill uses--json. - Added test coverage around the
wranglercalls in resource resolution.
0.6.7
- Default scaffolded
goribuspec bumped to0.1.0-alpha.7.
0.1.0-alpha.6
- Fixed: SPA navigation now preserves the URL hash. Client navigations carry the requested
#fragmentthrough history and the committed URL, and scroll to the matching element (id, thenname, 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/postgresin aprerenderroute 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)anduseLocation()/LocationSnapshot, and corrected the README example to useres.notFound().
0.6.0
- Content fixes across the scaffolded installation and deployment guidance, plus other small template corrections. Default scaffolded
goribuspec bumped to0.1.0-alpha.6.
0.5.1
- Fixed: corrected a wrong dependency in the published package so the scaffolded
goribupin resolves to0.1.0-alpha.5.
0.1.0-alpha.5
- Breaking: request body API reworked.
req.body(getter) andreq.bodyObject()are gone, replaced by content-type-aware methodsreq.body(),req.json()andreq.form()— lazy and cached on first access. - Breaking: query API reworked.
req.query/req.queryObject()replaced by the friendly parserreq.query(), withreq.searchParamsas the rawURLSearchParamsescape hatch. - Breaking: removed the
res.render(props)sugar entirely — render is now always explicit:res.render(Component, props). req.d1is now session-aware for Cloudflare D1 read replicas, withprimary()/relaxed()freshness modes and a bookmark cookie that pins a session to its latest write.- Route
metaexpanded to canonical, robots, Open Graph, Twitter and arbitrary custommeta/linktags, 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/OPTIONSand emits a correct405 Allowlist; added a 10 MiBContent-Lengthguard (413) and an additiveVaryheader so framework and app caching coexist.
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
goriburequest/response API (req.query(),req.body()/req.json()/req.form(), explicitres.render) and ship<ReactRefresh/>. Default scaffoldedgoribuspec bumped to0.1.0-alpha.5.
0.1.0-alpha.4
- Fixed: synthesized
.goribu/wrangler.dev.jsoncnow 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 withThe 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-goributemplate, runs the dev synth and assertsmain/assets.directoryresolve to the same absolute path the user'swrangler.jsoncnamed. Catches future drift between template wrangler configs and the synth contract.
0.3.3
- Default scaffolded
goribuspec bumped to0.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.
0.1.0-alpha.3
- Fixed:
wrangler.jsoncparser now tolerates trailing commas before}/], matching the de-facto.jsoncspec 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 definedwhen running dev/build. TheisBuildflag wasn't threaded through to the top-levelregenerateManifestshelper.
0.3.2
- Default scaffolded
goribuspec bumped to0.1.0-alpha.3(alpha.2 had a broken Vite plugin and JSONC parser; alpha.3 fixes both).
0.1.0-alpha.2
- Breaking: database configuration moved from
bindings.{d1,postgres}to a top-leveldatabasekey ingoribu.config.js. The old shape now throws at config load with a migration message. Usedatabase: { type: 'd1', name: '...' }ordatabase: { type: 'postgres', url: ..., hyperdriveId: ... }. - Breaking: users no longer add
d1_databasesorhyperdrivetowrangler.jsoncfor the configured DB. Declaring it in both places is now a build error. - Breaking: the
vite.config.{js,ts}template now passescloudflare({ configPath: '.goribu/wrangler.dev.jsonc' }). Apps scaffolded before this change need that argument added manually. - Breaking: deploy no longer mutates
dist/<worker>/wrangler.jsonin place. A fresh.goribu/wrangler.deploy.jsoncis 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-schemeand.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:infocommand — prints what the config resolves to in dev and prod, including what's missing. .env.productionis loaded intoprocess.envbeforegoribu.config.jsevaluates, so configs can referenceprocess.env.HYPERDRIVE_IDetc. at deploy time. Dev loads.env,.env.developmentand the.localvariants on the same model.POSTGRES_URLis 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=...ongoribu deployis a one-off override.- Vite plugin synthesizes the D1 / Hyperdrive binding into
.goribu/wrangler.dev.jsonc(merged from the user'swrangler.jsonc) and setsCLOUDFLARE_HYPERDRIVE_LOCAL_CONNECTION_STRING_POSTGRESfromdatabase.urlfor Postgres dev.
0.3.1
- Default scaffolded
goribuspec bumped to0.1.0-alpha.2.
0.3.0
- Drop automatic dependency install after scaffold. The CLI now prints
cd,<pm> installand<pm> run devas next steps and leaves install to the user. Removed the--skip-installflag. - Simpler template prompt: switched to
readlinewith a clearer "Which template?" listing and an explicit default-on-Enter behavior.
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.
0.2.0
- Add TypeScript template, selectable via
--template typescript(aliasts) or the new interactive prompt.vite.config.tsships as TS;goribu.config.jsstays JS until the loader supports.ts. - Rename default template directory from
templates/default/totemplates/javascript/.--template defaultremains a valid alias.
0.1.1
- Default scaffolded
goribuspec bumped to0.1.0-alpha.1. - Scaffold UX polish: template ships a default tab title and favicon (via head dedup),
deployauto-builds, dependencies auto-install and the template gains a~Vite alias plusjsconfig.json. - Fixed a leftover from the bindings rename where the overlay read the old key and shipped a placeholder
database_idto production on fresh builds. - Template tracks the
req.db→req.d1rename and the split D1 migrations CLI.
0.1.0-alpha.0
- Initial publish.
0.1.0
- Initial publish.