Skip to content

shadlet 0.4.0

Choose a tag to compare

@github-actions github-actions released this 04 Nov 10:45
· 16 commits to main since this release

shadlet 0.4.0 is a major runtime and release-readiness update. it expands the Python-first APIs, improves server-driven tables and accessibility, and adds extension tooling, deployment examples, and broader verification.

added

  • ui.DataTable now supports controlled row selection, loading and error states, retry callbacks, per-column filters, column visibility, responsive scrolling, accessible sort announcements, and cancellation of superseded asynchronous server queries.
  • shadlet extension create scaffolds a separately packaged Python and React extension. shadlet extension check validates its manifest and bundled assets.
  • deployment examples include a multi-stage, non-root Docker image, a Render Blueprint, and a health check endpoint at GET /healthz.
  • opt-in runtime benchmarks cover 10k-row table workloads, 1k-node rendering and protocol serialization, and concurrent updates across 50 sessions.
  • representative axe-core accessibility checks and Chromium Playwright flows cover forms, feedback, tables, packaged extensions, URL state, and server-side table search.
  • app.run() recognizes the platform PORT environment variable, with documented precedence and validation.

changed

  • React protocol validation now uses Zod 4; the renderer development server is updated to Vite 7.3.7.
  • extension discovery now registers transactionally and remains idempotent after success.
  • pydantic form validation preserves multiple messages associated with the same field.
  • built-in project templates now target Shadlet 0.4.0.

fixed

  • server-side table search reliably dispatches changed queries to Python.
  • closed sessions reject newly started background tasks without leaving them marked as running.
  • form labels and controls now have improved accessible-name and id associations, including slider inputs and date-picker triggers.

verification

  • Python: Ruff lint and formatting, mypy, and Pyright passed; all 145 pytest tests passed.
  • renderer: ESLint, Prettier, and TypeScript checks passed; all 27 Vitest tests and all 3 Playwright tests passed; the production build succeeded.
  • documentation: strict MkDocs build passed.
  • packaging: wheel and source distribution built; renderer assets and built-in templates were verified in the wheel; an isolated wheel installation smoke test passed.
  • dependencies: production npm audit --omit=dev reported zero vulnerabilities.
  • GitHub CI, including the Docker deployment-example build, passed for the release commit. the tag-triggered release workflow successfully published both distributions to this GitHub release and PyPI.

see the changelog, documentation, and PyPI package.