---
url: /blog/2026/v0.6.7.md
description: >-
  v0.6.7 fixes double slashes in paths of routes that start with an optional
  param, and fetch clients throwing on empty 204 and 205 replies.
---

Another fix release, and one of the fixes cleans up after `v0.6.6`.
Nothing to update, unless you run `dist/run.js` in a container without `--host`.

## Double slashes in route paths

A route that starts with an optional param, say `pages/{filter}/index.tsx`,
compiles to a pattern that carries its own leading slash: `{/:filter}`.
Joined with the base, that becomes `/{/:filter}`, and filling it in gives `//active`.

`v0.6.5` built the same string, but `path()` ran the result through `join`,
which collapsed the slashes on the way out.
The `v0.6.6` fix for index links stopped doing that, and the double slash leaked through:

```
base "/"       ->  //active
base "/front"  ->  /front//active
base "/api"    ->  /api//active
```

The first one is the worst of the three.
A browser does not read `//active` as a path at all,
it reads it as a link to a host named `active`.

Links and fetch clients both build their paths this way, so both were affected.
The path builder normalizes its own output now: `/active`, `/front/active`, `/api/active`.

## Empty replies no longer throw

A `204`, `205` or `304` reply has no body.

The fetch client tried to parse it anyway, the parse failed, and since `v0.3.0`
a failed parse on a successful reply is thrown.
So a `DELETE` that answered `204 No Content` threw `Unexpected end of JSON input`.

Now a null body is simply not parsed.

This is not meant to be defensive about every empty body, though.
A `200` with nothing in it still supposed to fail, but at different layer.
That one is for [response validation](/validation/response) to catch,
not for the fetch client to paper over.

## dist/run.js listens on 127.0.0.1 by default

A follow-up to the `v0.6.6` fix.

Without `--host`, `v0.6.6` let the server pick, and it listened on every interface.
`v0.6.7` listens on `127.0.0.1` instead, the framework's default host.

Behind a reverse proxy on the same machine, that is what you want.
In a container, pass the host explicitly:

```sh
node dist/run.js -h 0.0.0.0 -p 4556
```
