Make the authoring API typed, Pythonic, and ready for 1.0, while
breaking changes are still cheap. See rfcs/0004-pythonic-authoring-model.md.
- Typed element trees: `pn.Node` children, `.with_key()` for user
components, shared `AccessibilityProps` / `ViewProps`, and dev-mode
prop checks against component annotations.
- Typed navigation: screens are components whose parameters are their
route params; navigators are module-level values
(`pn.StackNavigator(...)`); `nav.push(ItemScreen(id=42))` is checked
by the type checker; static nesting, `use_screen_options`, and deep
links from screen `path`s converted by annotations.
- One `Theme` (colors, typography, spacing, radii) for the app and its
navigators, `ThemeProvider`, `use_theme(Subclass)`, `use_styles`, and
`StyleSheet` namespaces. The `spacing` style key is removed everywhere.
- `pn.Store` and `use_store` selectors; bound-method dependency equality,
`use_persisted_state`, and transition-queue fixes.
- Reconciler identity bailout and a per-provider context consumer
registry.
- `pn lint` for the rules of hooks; Fast Refresh remounts only when a
class definition changes.
- A per-user dev-server token with same-origin websockets; release
bundles omit development modules.
- Strict typing: `strict_optional`, no blanket suppressions, strict mypy
for the Inbox and e2e apps, and typing conformance tests.
- Examples, templates, tests, and documentation move to the new API.
BREAKING CHANGE: navigation factories, route-name navigation,
LinkingConfig, NavigationTheme, the flat Theme fields, StyleSheet.create,
the `spacing` style key, Component.keyed, and `key=` on user components
are removed without compatibility shims. See the RFC's Removals section.
Make the authoring API typed, Pythonic, and ready for 1.0, while breaking changes are still cheap. See rfcs/0004-pythonic-authoring-model.md.
BREAKING CHANGE: navigation factories, route-name navigation, LinkingConfig, NavigationTheme, the flat Theme fields, StyleSheet.create, the spacing style key, Component.keyed, and key= on user components are removed without compatibility shims. See the RFC's Removals section.