Changelog

What changed, and what broke

Every public package shares one version, so one release is one set of notes. The breaking changes are called out, because the framework is young enough that there is no deprecation window.

v0.2.0

latestcompare

The release where the framework stopped lying about its own shape. Nitro and h3 serve every request, the generated Hono client is marked as unmounted, and the dev server is the package that owns the CLI. Every endpoint 404ing silently is fixed.

Breaking

  • @bionicjs/core no longer depends on @bionicjs/dev. The bionicjs CLI and runDevServer moved to @bionicjs/dev, which depends on core. Import runDevServer from @bionicjs/dev.
  • A scaffolded app no longer contains vite.config.ts, nitro.config.ts or index.html, and its package.json exposes one script (dev) and one devDependency (@bionicjs/dev). vite, nitropack, @vitejs/plugin-react and @tailwindcss/vite are no longer listed as app dependencies.
  • The scaffolded package.json no longer carries h3 2.0.1-rc.31. It is pinned to ^1.15.11, the range nitropack resolves, so there is exactly one h3 in the tree.

Fixed

  • @bionicjs/dev Nitro was created with its default srcDir, which scans ./api at the project root. Every route in server/api/ 404ed, and neither package reported it. srcDir is now the server directory, and public/ is passed as an explicit publicAssets entry.
  • @bionicjs/dev loadConfig used jiti's synchronous loader, which transpiles the config's import graph to CJS. Any ESM-only dependency reachable from bionicjs.config.ts died on import.meta. The asynchronous loader is used instead.
  • @bionicjs/dev jiti's interopDefault wrapper was read as a config object, so every plugin was skipped and .bionicjs/server.ts came out empty. A config that throws now fails loudly instead of producing an empty server module.
  • @bionicjs/dev The generated .bionicjs/hono.ts and server.ts were written with literal backslash-n sequences instead of newlines, and the RPC generator imported modules with a .ts extension.
  • create-bionicjs-app workspace:* survived into the generated package.json, including @bionicjs/dev in devDependencies, which is invalid outside the monorepo. No scaffolded app could run an install. The protocol is now resolved across every dependency field.
  • create-bionicjs-app Scaffolded apps shipped no .gitignore. npm strips dotfiles from published tarballs, so the template's .gitignore never arrived; the template file is now gitignore and is renamed on copy.
  • @bionicjs/core The Vite e2e test resolved its paths through process.cwd(), so it only worked from the repo root.

Added

  • create-bionicjs-app installs dependencies, pins the package manager through the corepack packageManager field, and initialises a git repository with one commit. --skip-install and --disable-git opt out.
  • @bionicjs/dev registers the Tailwind Vite plugin, since the base template's globals.css imports it and there is no user-owned Vite config to register it in.
  • @bionicjs/dev exports resolveNitroConfig, the side-effect-free resolution of the app layout and Nitro options, and runDevServer now accepts ports and returns a handle with close().
  • tests a Nitro + Vite integration test over a fixture app, and unit tests for package manager detection, the corepack field, and git initialisation.

Docs

  • New reference pages: Nitro & h3 for the live request path, and Hono for the generated client and the open design decision.
  • A blog at /blog, with five posts on the internals, including a postmortem on the two copies of h3.
  • Three new Learn chapters: how meta-frameworks work, Nitro and h3, and Hono and the RPC contract.
  • The structure page is rebuilt around three zones, and the READMEs and ARCHITECTURE.md now say that Nitro and h3 serve requests and that the generated Hono router is not mounted.

Internal

  • pnpm check:cycles, which fails on a circular workspace graph now that ignoreWorkspaceCycles is gone.
  • pnpm check:docs, which checks curated tables of contents against real headings and blog files against the blog registry.

v0.1.0

The first publish. The workspace is renamed from tspy to bionicjs, and the core, the generator, the dev server, and all sixteen provider packages ship together.

Breaking

  • Package names, npm scope, and the CLI command all change. Nothing was published under the old names, so no deprecation window was needed.
  • @bionicjs/core was published as @tspy/core.

Added

  • 19 packages at 0.1.0: @bionicjs/core, @bionicjs/dev, create-bionicjs-app, and the auth, database, AI, and jobs integrations.
  • Filesystem routing from app/, an h3 API surface at server/api/, and a Python runtime for ai/ and jobs/ reached over the RPC boundary.

Packages at v0.2.0

19 packages

Every package is published at 0.2.0. The workspace root is private and is never published.

Core

3 packages
@bionicjs/core0.2.0

Framework core: config, routing, runtime exports

@bionicjs/dev0.2.0

Vite + Nitro development server, codegen, and the bionicjs CLI

create-bionicjs-app0.2.0

Project generator and template composer

Auth

5 packages
@bionicjs/better-auth0.2.0

Auth provider

@bionicjs/clerk0.2.0

Auth provider

@bionicjs/firebase0.2.0

Auth provider

@bionicjs/supabase0.2.0

Auth provider

@bionicjs/workos0.2.0

Auth provider

Database

4 packages
@bionicjs/prisma0.2.0

Database client

@bionicjs/drizzle0.2.0

Database client

@bionicjs/kysely0.2.0

Database client

@bionicjs/sql0.2.0

Raw SQL client

AI

4 packages
@bionicjs/anthropic0.2.0

LLM provider

@bionicjs/openai0.2.0

LLM provider

@bionicjs/google0.2.0

LLM provider

@bionicjs/ollama0.2.0

LLM provider, local

Jobs

3 packages
@bionicjs/celery0.2.0

Job system

@bionicjs/rq0.2.0

Job system

@bionicjs/dramatiq0.2.0

Job system