Skip to content

shadlet 0.8.0

Latest

Choose a tag to compare

@github-actions github-actions released this 07 Nov 11:35

shadlet 0.8.0 adds first-class custom font loading, typography configuration, and a flagship document-workspace example. it keeps protocol v2 and preserves the existing Python-first developer experience.

added

  • app.fonts.register(...) registers WOFF2, WOFF, TTF, and OTF fonts with validated descriptors, generated @font-face CSS, MIME types, fallback stacks, unicode ranges, feature settings, variation settings, aliases, and critical-font preloading.
  • app.theme.configure(...) selects body, heading, UI, and monospace font families and emits semantic CSS variables for --font-sans, --font-heading, --font-ui, and --font-mono.
  • Added examples/document-workspace/ with SQLite persistence, 68 seeded sections, KPI cards, analytics charts with date ranges, tabs, server-side table search/sort/pagination/selection, Quick Create and Edit dialogs, bulk deletion, and responsive navigation.
  • Added Python font regression tests for registration, duplicates, missing files, invalid weights, variable ranges, italic descriptors, generated CSS, theme variables, and session initialisation.

changed

  • Renderer init messages now carry generated font CSS, preload links, and typography metadata.
  • Default theme stacks preserve the bundled Geist and Geist Mono fallbacks unless overridden.
  • Documentation now includes a custom fonts guide and updated limitations for 0.8.0.
  • Versions are aligned at 0.8.0 across Python, the renderer, protocol fixtures, lockfiles, templates, and documentation. The wire protocol remains version 2.

compatibility and scope

  • Existing 0.7.0 applications remain source-compatible; no Node.js is required for end users.
  • Sessions, background tasks, uploads, and extensions retain their documented process-local and trust boundaries.
  • See the component catalogue, compatibility matrix, and limitations for verified support boundaries.

verification

  • Python: Ruff lint and formatting, Mypy, and all 222 pytest tests passed.
  • Renderer: ESLint, Prettier, TypeScript, all 41 Vitest tests, production build, and bundle budget passed.
  • Documentation: strict MkDocs build passed.
  • Release: wheel and source distribution include the renderer bundle and templates; a clean installation does not require Node.js.

See the changelog, documentation, and PyPI package.