Part of #945
Phase 1: Core Owlbear extension scaffold and marketplace submission
Updated 2026-03-24: The codebase has @randsum/dice-ui (in packages/dice-ui), not @randsum/component-library. Use @randsum/dice-ui components or purpose-built components.
Scope
A working Owlbear Rodeo extension that renders a dice roller panel inside an iframe. Users can type notation, roll, and see results with modifier breakdown. Submit to the Owlbear marketplace as soon as functional.
Acceptance Criteria
Implementation Notes
- The iframe is a standard React webpage — standard Vite + React bundling
- Local dev requires HTTPS: use
vite --https with a self-signed cert or ngrok/Cloudflare Tunnel
- Submit to marketplace as soon as Phase 1 is functional — don't wait for roll history
- CSP: add
Content-Security-Policy: frame-ancestors https://*.owlbear.rodeo to hosting config
Out of Scope
Part of #945
Phase 1: Core Owlbear extension scaffold and marketplace submission
Scope
A working Owlbear Rodeo extension that renders a dice roller panel inside an iframe. Users can type notation, roll, and see results with modifier breakdown. Submit to the Owlbear marketplace as soon as functional.
Acceptance Criteria
apps/owlbearworkspace package scaffolded with Vite +@vitejs/plugin-react— private, deploys as a static siteOBR.onReady()initializes the extension; iframe loads from the hosted HTTPS originisDiceNotationroll()and displays results with modifier breakdownframe-ancestorsCSP header allowing Owlbear to embed the iframe@owlbear-rodeo/sdkpinned to a major version inpackage.jsonImplementation Notes
vite --httpswith a self-signed cert or ngrok/Cloudflare TunnelContent-Security-Policy: frame-ancestors https://*.owlbear.rodeoto hosting configOut of Scope