@playspace/react changelog

Semantic versioning, independent of the API version. 1.x targets /v1.


1.2.0 — 2026-08-14

Added

  • <ContentStudio /> — every generation surface behind one tabbed interface.
  • useUsage(), so a host can warn on quota in its own chrome.
  • colorScheme on theme, defaulting to system.

Fixed

  • A theme change re-created the iframe src, remounting the frame and destroying in-progress work. Theme is now delivered over the message channel and only baseUrl, token, surface and the surface's own identity prop rebuild the source.
  • role_not_permitted fired twice in React development mode because the double-invoke was not deduplicated. Every error code now carries a dedupe key; network_error deliberately does not, since a second transport failure is new information.

1.1.0 — 2026-08-06

Added

  • <Dollhouse />, <Whiteboard />, <GameLibrary /> and <Game />.
  • <WorksheetCanvas /> and <FormFill />.
  • usePlaySpace().open() and .close() for clinician-driven navigation from your own chrome.

Changed

  • Breaking. Declaration files import JSX from react rather than relying on the global namespace, which React 19 removed. No runtime change, but a consumer on React 19 previously failed to type-check.
  • The minimum sandtray viewport now renders an "enlarge the window" notice instead of a clipped, unplayable tray.

1.0.0 — 2026-08-12

First stable release.

Breaking, from 0.9

  • <PlaySpaceProvider> takes fetchToken rather than token. A static token prop still works but does not renew, and is documented for short-lived contexts only.

    // before
    <PlaySpaceProvider token={token} />
    // after
    <PlaySpaceProvider fetchToken={() => fetch('/api/playspace/token').then(r => r.text())} />
    

    This is the single most valuable change in the package. A fifteen-minute token on a page a clinician leaves open will strand them mid-task, and silent renewal is what makes a lifetime that short tolerable.

  • onEvent receives a discriminated { type, payload } rather than positional arguments.

Added

  • The fixed error taxonomy on onError.
  • <StorybookLibrary />, <PlayStudio />, <ModelStudio />.
  • Server-component safety: the package no longer touches window at module scope, so importing it from a server component does not throw.

0.9.0 — 2026-07-30

Beta. <PlaySpaceProvider>, <Sandtray />, <StorybookCreator />, <StorybookReader />, usePlaySpace().


0.1.0 — 2026-06-18

First preview. Storybook create and reader only, over @playspace/embed.