Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 40 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,48 @@ here. The release version is defined in the workspace root `package.json`.

## [Unreleased]

## [0.4.0] - 2026-09-10

### Changed

- Media Graph now generates, transforms, uploads and saves through route
handlers instead of server actions, so several nodes can generate at the
same time. Server actions are queued one at a time by the browser, which
made every generation wait for the previous one. The `appContactRouteHandler`
helper is the route counterpart of `appContactActionHandler`.

### Fixed

- Bill DeepSeek V4.1 Flash through Vercel AI Gateway at the gateway's peak
rate and full 1,048,576-token context, matching the gateway catalogue rather
than DeepSeek's off-peak list price.
- Resolve cookie sessions in App Router route handlers. `getSession` handed
next-auth the Web `Request`, which carries neither the `cookies` map nor
the plain `headers` object next-auth reads, so every cookie-authenticated
route handler answered 401. Those requests now resolve through
`next/headers`, the same way server actions already did.
- Keep the dev server's Server Components HMR cache off. On a refresh after
a code change Next replayed every fetch of the render, keyed by URL and
body, and `cache: 'no-store'` does not opt a call out. The PlanetScale
driver's `BEGIN` request has the same body every time, so the driver was
handed the session of an already committed transaction and the following
statement failed with `transaction ... ended (transaction committed)`.
Development only; production never had the cache.
- Stop a failed session expiry bump from signing the user out of a request.
With database sessions NextAuth refreshes the expiry once its update window
has passed and treated any failure of that update as a lost session, so App
Router pages bounced to sign-in and on to the overview. The adapter now
reports the failure and keeps the session, which was already read with a
valid expiry.
- Stop the sidebar logo from reporting a hydration mismatch in dark mode.
The icon picked its dark variant from the theme on the first client render
while the server had rendered the light one, so React flagged the filter
style. The theme is now applied only after hydration.
- Stop the App Router build of `next/link` warning about the `locale` prop.
The shared `Link` wrapper forwarded the default locale on every link; it
now forwards a locale only when a caller sets one.
- Price multi-backend Vercel AI Gateway models at the most expensive backend
the gateway can route to. The gateway bills each request at the rate of the
backend it picks, so DeepSeek V4 Flash, DeepSeek V4 Pro, DeepSeek V4.1
Flash, Gemma 4 31B, GLM-5.2, GLM-5.3 Flash, MiMo V2.5, MiMo V2.5 Pro and
MiniMax M3 no longer bill below what the gateway can charge.

## [0.3.3] - 2026-09-10

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<a href="https://chatbotkit.com/overview"><strong>Try it</strong></a> ·
<a href="./docs/README.md"><strong>Documentation</strong></a> ·
<a href="./docs/architecture.md"><strong>Architecture</strong></a> ·
<a href="./CONTRIBUTING.md"><strong>Contributing</strong></a> ·
<a href="./CONTRIBUTING.md"><strong>Contributing</strong></a>
</p>

</div>
Expand Down Expand Up @@ -75,7 +75,7 @@ docker compose -f oci://ghcr.io/chatbotkit/platform-community:latest logs platfo
See [Deployment](./docs/deployment.md) for details.

On an Apple silicon Mac you can skip Docker altogether:
[ChatBotKit Studio](https://github.com/chatbotkit/studio) is a native macOS
[CBK Studio](https://github.com/chatbotkit/studio) is a native macOS
app that runs this same platform in an app-private VM, with model providers,
logs and updates managed from the app.

Expand Down
2 changes: 1 addition & 1 deletion docker/distro/community/compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
# (and with it the app shells, spaces and portals), RELAY_PORT the realtime
# relay and STORAGE_PORT the object store, and every address a browser or a
# host process dials is declared once in the `x-cbk` manifest below. A
# launcher such as ChatBotKit Studio reads the resolved manifest back with
# launcher such as CBK Studio reads the resolved manifest back with
# `docker compose config --format json` rather than assuming port 3000.
#
# One folder per package flavor lives under docker/distro/. Each publishes as
Expand Down
2 changes: 1 addition & 1 deletion docker/distro/studio/compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
# (and with it the app shells, spaces and portals), RELAY_PORT the realtime
# relay and STORAGE_PORT the object store, and every address a browser or a
# host process dials is declared once in the `x-cbk` manifest below. A
# launcher such as ChatBotKit Studio reads the resolved manifest back with
# launcher such as CBK Studio reads the resolved manifest back with
# `docker compose config --format json` rather than assuming a port.
#
# Studio publishes on 31000, 31001 and 31900 rather than Community's 3000
Expand Down
4 changes: 2 additions & 2 deletions docs/deployment.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ PLATFORM_HOST=studio.localhost \
}
```

A launcher such as ChatBotKit Studio therefore never assumes a port: it
A launcher such as CBK Studio therefore never assumes a port: it
keeps the flavor's defaults or sets `PLATFORM_PORT`, `RELAY_PORT` and
`STORAGE_PORT` to free ones (and `PLATFORM_HOST` or any endpoint's variable to
rename a host), reads the resolved manifest back and forwards, opens and trusts exactly the addresses
Expand Down Expand Up @@ -233,7 +233,7 @@ its workspaces kept under `/data/sandbox` in the same volume.

Studio starts as a copy of Community, with the same Docker build targets,
module defaults and services. It is the flavor embedded by
[ChatBotKit Studio](https://github.com/chatbotkit/studio), the native macOS
[CBK Studio](https://github.com/chatbotkit/studio), the native macOS
app that runs the platform in an app-private VM without a Docker install, and
can also be run directly with Compose. Its separate Compose file lives at
[docker/distro/studio/compose.yml](../docker/distro/studio/compose.yml), and the
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "platform",
"version": "0.3.3",
"version": "0.4.0",
"private": true,
"license": "Apache-2.0",
"packageManager": "[email protected]",
Expand Down
Loading