# v1.3.0

> The `@bongo/tailwind` plugin, `$build.classes`, and fixes for client redirects and scroll, builds that read the environment, and image heights.

## Features

- **`@bongo/tailwind`** builds Tailwind CSS v4 stylesheets from the classes that your pages render, not from a scan of your source files. A class that a template prints in one branch only is in the CSS only when a page renders that branch, and the words of your text never become utilities. The scripts next to a stylesheet and each `@source` also give classes. A CSS module with `@reference` and `@apply` works with `$assets.classes()`. See [@bongo/tailwind](/tailwind/). ([#96](https://github.com/lukeed/bongo/pull/96))
- **`$build.classes`** collects the class names of each page as bongo renders it. A loader of `assets/` reads them with `utils.classes()`. An incremental build gives the same names as a fresh build. See [Class names](/config/#class-names) and [Loader utilities](/loaders/#loader-utilities). ([#96](https://github.com/lukeed/bongo/pull/96))

## Fixes

- A client navigation to a link that the server redirects, such as `/about` to `/about/`, ends at the URL of the last response, with the hash of the link. Before, the address bar, the history entry, and the relative URLs of the page kept the URL of the link. A browser without `precommitHandler` loads the final URL as a full page. See [Redirects](/client-runtime/#redirects). ([#92](https://github.com/lukeed/bongo/pull/92))
- `bongo:navigate` fires for each navigation before the URL changes. Before, it fired after the URL changed. See [Events](/client-runtime/#events). ([#92](https://github.com/lukeed/bongo/pull/92))
- A fetch that fails before the URL changes no longer leaves the new URL on the old page. ([#92](https://github.com/lukeed/bongo/pull/92))
- Back and forward keep the scroll position that the client restores. Before, the browser could scroll the page to the top after the restore. See [Scroll restoration](/client-runtime/#scroll-restoration). ([#97](https://github.com/lukeed/bongo/pull/97))
- A change in a value of `$site`, `$build`, `$images`, or `$data` renders every page again, such as a `$site.url` that the config reads from an environment variable. Before, a staging build after a production build shipped the production pages, unless it ran with `--fresh`. See [Incremental builds](/cli/#incremental-builds). ([#95](https://github.com/lukeed/bongo/pull/95))
- The height of a resized image rounds to the nearest pixel. Before, a 1254×837 source at 960 came out 960×640, not 960×641. Each resized image encodes once more after you upgrade. See [Processing](/images/#processing). ([#93](https://github.com/lukeed/bongo/pull/93))

## Docs

- The labels of the sidebar, the table of contents, and the footer are no longer headings, so the heading outline of each page is correct. ([ddc5f95](https://github.com/lukeed/bongo/commit/ddc5f95))
