Prefab apps can now expose tools to their MCP host, letting agents inspect state and interact with the same UI as the user. AppTool shares the action system used by buttons, including state updates, backend calls, and explicit results. Callable-backed tools keep Python execution on the server. Host support for app-provided tools is still limited.
This release also includes:
- Charts: WaterfallChart, pie-slice grouping by cutoff or selection, axis labels, reactive LineChart series, and reactive chart heights. Animation defaults to off for reactive data to avoid rendering loops.
- Actions and state: compose actions with
|, consistent state synchronization before input and tab change handlers, and preserved cleanup after nested callback failures. - Accessibility: reactive accessible names across components and preserved radio IDs and label associations.
- Themes: Windows 2000 and MySpace, with isolated playground themes for previews and overlays.
- Runtime and packaging: dependency refreshes, sandbox lifecycle and output handling fixes, streaming data globals, and packaged agent skills.
What's Changed
- Bump starlette from 1.0.0 to 1.0.1 by @dependabot[bot] in #464
- feat: support action chaining with pipe operator by @nightcityblade in #485
- docs: fix the template expression counter example by @Himanshuagrawal4 in #501
- fix(renderer): inject data globals into streaming execution by @nava08 in #480
- fix: center zero-value ring labels by @nightcityblade in #499
- Bump @hono/node-server from 1.19.13 to 1.19.17 in /renderer by @dependabot[bot] in #496
- Bump body-parser from 2.2.2 to 2.3.0 in /renderer by @dependabot[bot] in #481
- Close Deno sandbox subprocess handles by @jlowin in #508
- Fix generated checks for fork PRs by @jlowin in #511
- Upgrade ty and remove obsolete suppressions by @jlowin in #509
- Refresh vulnerable dependencies by @jlowin in #510
- Disable animation for reactive charts by default by @jlowin in #512
- Add a custom DataTable search placeholder by @jlowin in #513
- clear mermaid chart when empty by @uinstinct in #520
- Refresh dependencies and fix renderer and sandbox regressions by @jlowin in #538
- Keep the useStateStore store stable across renders by @adam-zovos in #536
- Allow LineChart series to be a reactive template by @AngelaZhang915 in #470
- Add axis labels by @AngelaZhang915 in #477
- fix(skills): package skills in build by @squat in #433
- Use the corrected KaTeX release version by @jlowin in #544
- Scroll popover by @AngelaZhang915 in #475
- Add WaterfallChart component by @harrydobbs in #517
- Add MCP Apps app-provided tools by @jlowin in #505
- Update pinned hooks and workflow tooling by @jlowin in #547
- Group pie slices by cutoff or selection by @jlowin in #548
- Add reactive accessible names to components by @jlowin in #545
- Preserve radio IDs and label associations by @jlowin in #546
- Sync named input state before change handlers by @jlowin in #550
- Run Tabs change handlers after state synchronization by @jlowin in #551
- Make FastMCP app tool examples compatible by @jlowin in #552
- Preserve UI cleanup after nested callback failures by @jlowin in #553
- Clean up cancelled sandbox startup by @jlowin in #554
- Isolate playground themes in shadow previews by @jlowin in #549
- Add Windows 2000 and MySpace themes by @jlowin in #516
- Support reactive chart heights by @jlowin in #555
New Contributors
- @nightcityblade made their first contribution in #485
- @Himanshuagrawal4 made their first contribution in #501
- @nava08 made their first contribution in #480
- @uinstinct made their first contribution in #520
- @adam-zovos made their first contribution in #536
- @AngelaZhang915 made their first contribution in #470
- @squat made their first contribution in #433
- @harrydobbs made their first contribution in #517
Full Changelog: v0.20.2...v0.21.0