Highlights
- Elm Architecture lifecycle — Server lifecycle rebuilt on a Store + Reducer + Render Middleware pattern. All 16 procedural output functions replaced with typed action dispatch, giving pounce an inspectable state model and a single view layer.
- milo-cli adoption — argparse replaced with milo's CLI class. Subcommands, MCP server,
llms.txt, and type-driven parsing out of the box. All lifecycle output rendered through branded kida templates.
pounce bench — Built-in benchmarking command with wrk integration and formatted result tables.
- Modern Python 3.14t patterns —
Final constants, StrEnum enums, kw_only dataclasses, TCPWorker Protocol, and stricter linting across the board.
Added
pounce bench — standardized benchmarking CLI command (#26)
- Public lifecycle events API (
ConnectionOpened, ResponseCompleted, etc.) (#26)
- 27 Hypothesis property-based fuzz tests across all parsers (#26)
DisplayConfig with configurable signage modes and startup resolution (#25)
pounce info — system diagnostic panel (Python, GIL, deps, frameworks) (#21)
pounce check — pre-flight validator (app import, port, TLS, config) (#21)
- Branded tracebacks via kida templates (#21)
- milo-cli integration with branded lifecycle output (#20)
Changed
- Elm Architecture lifecycle with Store + Reducer + Render Middleware (#22)
Final annotations, StrEnum, kw_only=True on dataclasses, TCPWorker Protocol (#23)
- Expanded ruff rules (
S, A, T20, DTZ, FBT) and stricter ty config (#23)
- Single-pass
_classify_request() replaces 4-5 separate header scans (#24)
- Static file stat syscalls reduced from ~7 to ~3 (#24)
- CI:
cancel-in-progress and --maxfail for faster feedback (#18)
Fixed
- Content-Length preserved when not compressing (#24)
- HTTP/1.0 keep-alive honours
Connection header correctly (#24)
- Deployment docs: broken symlinks replaced with proper site pages (#19)
Docs
- Full audit of site docs, internal docs, and roadmap — removed false claims, fixed types/defaults (#17)
- Performance narrative docs with competitive comparison tables (#26)
docs/nogil-patterns.md — 10 reusable free-threading patterns (#26)
Install
uv add "bengal-pounce==0.5.0"