Repository navigation
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-faceCSS, 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.