v0.36.0
·
100 commits
to refs/heads/main
since this release
Summary
v0.36.0 introduces several breaking changes in preparation for the v1 release
How to migrate?
- Install the latest version of the skill
- Run the prompt:
Migrate my app based on https://github.com/alpic-ai/skybridge/releases/tag/v0.36.0
registerWidget removed — merged into registerTool (PR #701)
The separate registerWidget call is gone. Widget/view config moves into registerTool as an optional view field:
// before
server.registerTool("my-tool", schema, handler)
server.registerWidget({ component: "my-view", ... })// after
server.registerTool({ name: "my-tool", ...schema, view: { component: "my-view" } }, handler)mountWidget removed from public API (PR #701)
The Vite plugin now auto-mounts views found in the views directory. Any manual mountWidget call should be removed.
// before
import { mountWidget } from "skybridge/web";
export default function SearchFlights() { ... }
mountWidget(<SearchFlights />)// after
export default function SearchFlights() { ... }skybridge/web import path renamed to skybridge/vite (PR #720)
The Vite plugin subpath export changed:
// before
import { skybridge } from "skybridge/web"// after
import { skybridge } from "skybridge/vite"server/ + web/ project layout dropped (PR #701)
The old two-directory layout (src/server/, src/web/) is no longer supported. Skybridge now uses a flat src/ tree with src/views/ for view files. The views directory is configurable in the provided skybridge plugin.
// before
├── server/
│ └── src/
│ └── index.ts
└── web/
└── src/
└── widgets/
└── my-widget.tsx
// After
└── src/
├── server.ts
└── views/
└── my-view.tsx
All widget terminology renamed to view (PR #720)
useWidgetState renamed to useViewState
// before
import { useWidgetState } from "skybridge/web"// after
import { useViewState } from "skybridge/vite"widgetsDevServer renamed to viewsDevServer
// before
import { devtoolsStaticServer, widgetsDevServer } from "skybridge/server";
app.use(await widgetsDevServer());// after
import { devtoolsStaticServer, viewsDevServer } from "skybridge/server";
app.use(await viewsDevServer());Changes
- fix(asset-base-url): skip rewriting strings in
import ... fromclauses @valentinbeggi (#715) - Rename widget to view @harijoe (#720)
- fix: log error when view is missing default export @paulleseute (#721)
- Fix strict component name type safety @harijoe (#723)
- fix: release port on SIGTERM/SIGINT in McpServer.run() @paulleseute (#712)
- fix: version view resource URIs with bundle content hash @paulleseute (#718)
- fix: support concurrent /mcp requests @paulleseute (#711)
- feat: unify registerTool API, tool-widget e2e typing, flat structure (SKY-332) @harijoe (#701)
- feat: make template use workspace skybridge @paulleseute (#706)
- fix(devtools): persist inspector preferences across refreshes @valentinbeggi (#703)
- feat: add tunnel to docs @paulleseute (#698)
- chore: remove mintlify preview workflow @valentinbeggi (#695)
- fix(auth-clerk): exclude openid scope from PRM to fix Clerk DCR auth @qchuchu (#693)