Repository navigation
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nd budgets, quoted skill metadata Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d edge, general 3D guidance Ports brsbl/bb-plugins 621f3faeb, a9106eaa1 and 70477277f. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ports the describe() fix from brsbl/bb-plugins thr_qq2zmm2g8p. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… stale state The frame response now sets default-src 'none', inline scripts and styles only, connect-src/form-action/base-uri 'none', and images from data:, blob:, and upload.wikimedia.org. State relayed to the frame carries its version; a frame save based on an older version is dropped and the frame gets the newer state. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…answer Answers and their state are now keyed by (id, thread_id). Appended migrations rebuild both tables, so data written by earlier builds carries over. Forking a thread copies its answers and current inputs into the fork (on thread.created, or on first access for forks created before install), so the copy changes independently and survives deleting the original. A side chat (a hidden fork whose lifecycle belongs to its source) resolves to its thread's answer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
brsbl
added a commit
that referenced
this pull request
Oct 10, 2026
Forks now get independent copies of answers (from the parent PR). Removes this PR's cross-thread owner lookup and its shared-state fork test, and keeps the routing, latest-events, wrapped output, existence-check, index, and rate-limit fixes. The answer_events thread index is appended after the parent's rebuilds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Plugin id bb--playgrounds (plugins/playgrounds), agent tool playground, CLI
bb playgrounds, directive ::playground{id}, skill playgrounds, HTML bridge
window.playground with --pg-/.pg- kit tokens, <playground-data> wrapper, and
publish --playground-stdin. Overview: answers you can play with.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
brsbl
added a commit
that referenced
this pull request
Oct 10, 2026
Applies the rename to this PR's additions: <playground-data> wrapper, playground wording in CLI output and errors, and test fixtures. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The plugin has never shipped and its new id starts from an empty database, so the migration list creates answers and answer_state with (id, thread_id) keys instead of rebuilding an older layout. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
brsbl
added a commit
that referenced
this pull request
Oct 10, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
answer_documents holds the published content; answers links it to each thread. Forking copies only the link and the fork's own inputs. Deleting a thread removes its links and any content no other thread still uses. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
Author
|
Superseded by brsbl/bb-plugins#405: Playgrounds isn't bundled with bb; it ships as a regular plugin installed from brsbl/bb-plugins, with everything from this PR (security lockdown, copy-on-fork with shared content, review fixes) plus a private save-to-library feature. Branch and history are kept.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Human comments
What was wrong
Playgrounds (formerly Interactive Answers) existed only as a community plugin draft (brsbl/bb-plugins#392). A stock bb install had no way for agents to publish answers people can explore in place: calculators, charts, comparisons, or step-by-step guides that update as you change an input, without another agent turn.
What changed
Adds Playgrounds, "answers you can play with: calculators, guides, previews", as a bundled plugin that is not installed by default, on the same model as Browser Automation. It is listed under BB Official in Plugins, and installing it there or with
bb plugin install playgroundsturns it on.bb--playgrounds/plugins/playgroundsplaygroundbb playgrounds guide|example|publish|state|watch|actions|do::playground{id}playgroundswindow.playground, with--pg-*tokens and.pg-*kit classesthread.createdor on first access for forks made before install. The copy is independent: changing it doesn't change the original, and deleting the original doesn't affect it.lifecycleOwnerThreadId === sourceThreadId). It is part of the same conversation, so it shows the thread's live playground.answer_documents). Threads hold only a link to it and their own inputs, so a fork copies a few small rows, and content is deleted when no thread links to it. This is the schema from the first migration, so no shipped data ever needs migrating.OFFICIAL_PLUGINS(withautoInstall: false) and its test.@bb/bundled-plugins,bb-official.json(Thread content),forkable-plugins.jsonand the turbo tasks.bb guide pluginsentry.Sandboxed HTML playgrounds
HTML playgrounds are served from the plugin route
/frameand render in<iframe sandbox="allow-scripts" loading="lazy">. The route setsnosniff,no-referrer, and a strict Content-Security-Policy:sandbox allow-scripts; default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data: blob: https://upload.wikimedia.org; media-src data: blob:; font-src data: blob:; connect-src 'none'; form-action 'none'; base-uri 'none'.fetch, XHR,sendBeacon, WebSockets, form posts, and remote scripts, fonts, and styles are blocked, and images load only fromdata:,blob:, and Wikimedia.useBbNavigate().openUrl, http and https only.<playground-data>.How you verified
pnpm dev, isolated data dir), driven by BB Browser Automation in headless Chrome for Testing at 1440×900, 2×:bb playgrounds publish.state,actionsanddodrove the open card.sendBeaconand WebSockets were blocked, and Wikimedia images and bb's Inter loaded.49521bf66e(security, architecture, code quality, performance; end-to-end covered in the branch dev app): no P0, P1, or new P2.9adc58d2d0, at8ff48b19b6(every P1 fixed with regression tests), and on the fork-copy and rename scope at6337f01dd5, which found no P0 or P1.Screenshots
Before is merge base
1ae755fce6, where the plugin doesn't exist and threads show the raw directive. After is this branch. Both use the same data directory, threads, route, 1440×900 viewport and 2× density.Follow-ups (P2, not in this PR)
originPluginId === "side-chat". A third-party plugin making similar hidden branches would share live playgrounds too.BB-Thread: Interactive Answers as a built-in plugin
🤖 Generated with Claude Code