# 0.8.2

URL: /pounce/releases/0.8.2/
Section: releases
Description: Patch release for correct HEAD responses, drain-aware health checks, built-in endpoint parity, reliable threaded reloads, and high-value CLI flags

---

> For a complete page index, fetch /pounce/llms.txt.

## Highlights

- **Correct HEAD responses and access logs** — HTTP/1.1, HTTP/2, HTTP/3, and sync bridges now preserve response headers while dropping app body bytes for HEAD requests. Access-log timestamps are real UTC values, and expected long-lived SSE/chunked responses are no longer marked slow solely because of their duration.
- **Drain-aware readiness** — the built-in health endpoint returns HTTP 503 with `{"status":"draining"}` while a worker drains, so load balancers can stop routing new traffic during deploys.
- **Built-in endpoint parity** — health, introspection, and configured compression-dictionary endpoints now share dispatch behavior across HTTP/1.1, HTTP/2, and HTTP/3; HTTP/3 health responses also report the real worker ID.
- **Reliable threaded reloads** — thread workers receive duplicated listener handles, preventing the next generation from seeing `EBADF` when old workers close independently bound `SO_REUSEPORT` listeners.
- **More useful CLI controls** — `serve` and `check` now expose `--debug`, `--trusted-hosts`, and `--metrics`, while branded help and the README point to the TOML configuration template for less common settings.

## Added

- `serve` and `check` accept `--debug`, `--trusted-hosts`, and `--metrics`. Use `pounce config schema --output-format toml-template` to discover configuration available through TOML. ([#158](https://github.com/lbliii/pounce/issues/158))

## Fixed

- HEAD responses now send zero body octets across HTTP/1.1, HTTP/2, HTTP/3, and sync bridges without losing the app-provided representation headers. Logging now converts monotonic lifecycle timestamps to wall-clock UTC, and long-lived SSE/chunked responses are excluded from the duration-only slow-request heuristic. ([#217](https://github.com/lbliii/pounce/issues/217), [#218](https://github.com/lbliii/pounce/issues/218), [#219](https://github.com/lbliii/pounce/issues/219))
- The built-in health endpoint returns HTTP 503 with `{"status":"draining"}` during worker drain across async HTTP/1.1, sync, HTTP/2, and HTTP/3 paths. ([#107](https://github.com/lbliii/pounce/issues/107))
- Health, introspection, and configured compression-dictionary endpoints now use shared dispatch behavior across HTTP/1.1, HTTP/2, and HTTP/3, including real worker IDs in HTTP/3 health responses. ([#161](https://github.com/lbliii/pounce/issues/161))
- Thread-worker graceful reload duplicates listener handles before handing them to workers, preventing `EBADF` in the new generation when old workers close independently bound `SO_REUSEPORT` sockets. ([#222](https://github.com/lbliii/pounce/pull/222))

## Performance

No new benchmark artifact accompanies 0.8.2. These changes fix correctness and operator-control paths rather than introduce performance work; normal application requests do not resolve the live state used by built-in endpoints. This release makes no numeric performance claim.

## Install

```bash
uv add "bengal-pounce==0.8.2"
```
