Released: February 18, 2026
Islands (V1) for framework-agnostic high-state UI widgets, chirp-ui integration, auth hardening for production, and Alpine.js support.
Highlights
- Islands (V1) — Framework-agnostic contract for isolated high-state widgets
- chirp-ui integration —
use_chirp_ui(app)and template auto-detection - Auth hardening — AuthRateLimitMiddleware, LoginLockout, SecurityAudit
- Alpine.js support — Macros and server integration
Added
Islands (V1)
- Mount metadata:
data-island,data-island-props,data-island-src,data-island-version,data-island-primitive app.check()validates island mounts and primitive contracts- No-build primitive style: plain ES modules from
/static/islands/*.jswithout a bundler - Runtime diagnostics and safety checks
chirp-ui Integration
chirp.ext.chirp_ui.use_chirp_ui(app)— Registers chirp-ui static files (CSS, themes)- Template loader auto-detects chirp-ui when installed
- Optional
uiextra:pip install bengal-chirp[ui] chirp_ui.register_filters(app)— Registersbem,field_errorsfor components
Auth Hardening
- AuthRateLimitMiddleware — Rate limit login/reset endpoints
- LoginLockout — Lockout and backoff for repeated failures
- SecurityAudit — Audit events for failures, lockouts, and blocked attempts
Alpine.js Support
chirp/alpine.htmlmacros forx-data,x-init, reactive bindings- Server-side Alpine integration and
app.check()validation for Alpine islands
Other Additions
- LLM playground example — Streaming LLM chat with htmx
- Documentation — Guides for islands, auth hardening, Alpine + htmx, no-build high-state, and chirp-ui
Changed
- Dependencies —
kida-templates>=0.2.2(was 0.2.1) - CI — Ruff linting, prek pre-commit, GitHub Actions workflow
- RAG demo — Updated with chirp-ui integration
Installation
pip install bengal-chirp==0.1.2
# or
uv add bengal-chirp==0.1.2
With chirp-ui:
pip install bengal-chirp[ui]