Bengal 0.3.2

CLI startup fix, wheel smoke guard, plugin readiness introspection, preview reload fixes, and rendering/performance polish

Key fix: Bengal 0.3.1 could install successfully but crash before any CLI command ran when fresh installs resolvedmilo-cli0.2.2. Bengal 0.3.2 removes the conflicting flag registration, bumps the dependency floor, and adds installed-wheel smoke coverage so the release path catches this class of dependency drift before PyPI publish.


Highlights

CLI Startup Restored

Fresh installs now resolve and run the CLI correctly:

bengal --version
bengal --help
bengal cache hash --help

The regression came from a redundant explicit no_include_version parameter in cache hash. Newer Milo automatically generates --no-<flag>options for boolean defaults, so the explicit parameter collided with Milo's generated flag at parser construction time.

0.3.2 fixes the command definition and adds three release guards:

  • A fast parser-construction unit test that builds the full Milo parser.
  • An integration test that installs the built wheel into a fresh virtual environment against latest PyPI-resolved dependencies.
  • A pre-publish GitHub Actions smoke test that runs the installed wheel before uploading to PyPI.

Plugin Readiness Introspection

New plugin commands help authors and extension developers see what Bengal can discover and what is ready to use:

bengal plugin list
bengal plugin info <name>
bengal plugin validate

The output distinguishes wired plugin capabilities from pending registry surfaces, which makes plugin debugging less dependent on reading internals.

Preview And Warm-Build Fixes

Local preview no longer reloads unrelated open pages when one rendered page changes, and it suppresses reload notifications when rendered HTML bytes are unchanged. The dev server also handleslocalhostmore reliably when an existing Bengal server is listening on IPv6.

Warm-build paths received targeted performance and correctness work: lazy Kida template context is preserved, template dependency discovery is cached, fingerprint fast paths are reused for data/templates, section version membership is memoized, and missing site-wide postprocess artifacts can regenerate without rebuilding pages.


Added

  • bengal plugin list, bengal plugin info, and bengal plugin validatefor plugin readiness inspection.
  • Agent-oriented docs and scaffolding improvements, including clearer extension-point guidance andbengal new content-type <name>.
  • Error UX infrastructure for template errors, including stable error codes, dev-server overlay support, JSON error output, and grouped build summaries.

Changed

  • Bumpmilo-cli to 0.2.2 and align Bengal's boolean flag definitions with Milo's generated --no-behavior.
  • Upgrade Kida template support and adjust default-theme templates for strict undefined handling.
  • Continue moving Page, Section, and Site compatibility behavior behind rendering/orchestration helpers while keeping template-facing APIs stable.
  • Add scoped steward guidance for high-risk packages and test layers.

Fixed

  • Fix the installed-wheel CLI crash from Bengal 0.3.1.
  • Fix default-theme render failures under Kida strict undefined mode.
  • Fix template-change handling in the dev server after the legacy template detector removal.
  • Fix preview reload routing, byte-stable reload suppression, view-transition loading, and IPv6-aware dev-server port probing.
  • Improve Markdown mirror generation and agent-discoverable output directives.
  • Add missing error codes to theme-library configuration failures, preserve warm no-op incremental cache-hit stats before early return, remove scheduler-sensitive assertions from local test gates, and update Makefile build/serve helpers for the current--source siteCLI shape.

Removed

  • Remove the Textual dashboard runtime and dashboard-specific CLI/test surface so the CLI stays focused on fast pure-Python site generation.

Upgrading

uv pip install --upgrade bengal
# or
pip install --upgrade bengal

If you installed Bengal 0.3.1 and the CLI crashes before showing help or version output, upgrade directly to 0.3.2.