Chirp 0.9.0

Hypermedia application compiler foundations, experimental HTTP QUERY and WebMCP forms, htmx 4 preview contracts, and Kida 0.11 compatibility.

Focus: make full Chirp applications more inspectable and provable while opening carefully bounded preview lanes for HTTP QUERY, htmx 4, and WebMCP.

This minor release adds stable compiled-transition evidence, boosted-navigation testing, structured inspection design, and a tested full-application journey. It also ships experimental HTTP QUERY and WebMCP form support behind explicit opt-in contracts. Htmx 2.0.10 remains the default; htmx 4.0.0-beta5 is an exact, reversible preview rather than a default migration.


Highlights

Hypermedia application compiler foundations

Chirp now assigns stable, public-safe identities to compiled render transitions and carries them through runtime traces, DevTools exports, and testing coverage.TestClient.boosted()and route-smoke helpers distinguish full, boosted, and narrow-target requests, catching full documents before they reach fragment outlets.

Dynamic registries can replace unreachable reference stubs with app.declare_template(...). Declarations retain call-site origin and validate their templates and named blocks without suppressing unrelated dead-template diagnostics.

Experimental HTTP QUERY

Explicit RFC 10008QUERYroutes can declare accepted request media types and reuse Chirp's existingPage, Fragment, OOB, Stream, and Suspense rendering surface. Request failures, discovery headers, redirects, conditional responses, body-aware cache keys, opt-in response caching, DevTools traces, and browser/server/intermediary behavior now have executable proof.

QUERY remains experimental and explicit-route-only. GET remains the portable default, and unsupported intermediaries must fail visibly rather than silently rewriting a request to POST.

Htmx 4 preview, htmx 2.0.10 default

Managed htmx 2 installations now use the verified 2.0.10 browser bundle. An exact htmx 4.0.0-beta5 preview provisions core,htmx-2-compat, and hx-sse in a nonce-safe order with version-aware startup diagnostics.

The preview includes request metadata normalization, fetch-era lifecycle and DevTools handling, explicit response/default contracts, native SSE and signal delivery, and fail-loud handling for response headers removed by htmx 4. Htmx 2 behavior remains supported during the preview.

Experimental WebMCP forms

WebMCPFormprojects an explicitly opted-in frozen form contract into safely escaped declarative browser-tool attributes while preserving the same normal HTTP and htmx form, server validation, authorization, and CSRF boundary. app.check()reports malformed or unsafe projections, and the browser lane proves progressive enhancement and confirmation behavior.

Full-application and downstream proof

The maintained Todo, Kanban Shell, Dashboard Live, Lucky Cat, and Freeze Site examples now form one tested journey from SQLite and dual-mode forms through boosted navigation, OOB, Suspense, SSE, contract diagnostics, deployment, and optional static projection. A pinned Furatena canary exercises the built Chirp wheel as advisory downstream release evidence.


Migration notes

  • Kida: the runtime floor is nowkida-templates>=0.11.0. Kida 0.11 does not require a runtime API or template-syntax migration from 0.10.
  • Dynamic templates: replace unreachableif False: Page(...)or Fragment(...) discovery stubs with app.declare_template(...).
  • Existing QUERY routes: baremethods=["QUERY"]registrations must add a non-emptyquery_media_types=(...)declaration before application freeze.
  • HEAD: GET routes now answer HEAD when no explicit HEAD route exists and suppress the body while retaining GET-equivalent metadata. Register an explicit HEAD route if the application must reject that method.
  • Htmx: the managed htmx 2 baseline moves to 2.0.10. Htmx 4 remains an exact preview and is not selected automatically.
  • Htmx 4 timing headers: preview responses reject HX-Trigger-After-Swap and HX-Trigger-After-Settle; use rendered target data and per-target lifecycle events instead.

Dependencies

  • kida-templates>=0.11.0
  • bengal-pounce>=0.8.2
  • milo-cli>=0.4.1is resolved by the maintained docs toolchain through Bengal, allowing the Kida 0.11 development and documentation environment.

Upgrading

pip install --upgrade "bengal-chirp==0.9.0"

Htmx 4, HTTP QUERY, and WebMCP remain provisional surfaces. Review their linked guides and compatibility gates before enabling them in production.