Repository navigation
feat: show pages in the conversation and add a built-in browser - #207
Merged
Merged
Conversation
The agent can answer with pages built from ShowAI components through a new ShowUI tool. A page appears in a card in the conversation, each change is a new revision, and the card can be enlarged or opened in the side panel. Pages run in a sandboxed frame with no network access and are stored as read-only revision files in the session data folder. The tool lists the components and requires the agent to read a component's format before using it; html blocks must say why no component fits. The side panel becomes a strip of tabs per session: changes, the file tree, files, web pages, terminals and pages, saved across restarts except terminals. It runs the full window height with its tabs in the title row. Web page tabs host a browser that opens local dev servers, project HTML files and https sites, keeps sign-ins, and presents itself as plain Chrome. Also: tool calls that arrive after a non-streaming fallback are kept, Read accepts an empty page range, a tool group that recovered is no longer marked as failed, and the README and screenshots are updated. Closes #201 Closes #202
GoDiao
force-pushed
the
feat/browser-tab
branch
from
October 29, 2026 14:53
40be232 to
dff4124
Compare
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.
Closes #201
Closes #202
Part of #189
What changed
Pages in the conversation (ShowUI)
ShowUItool lets the agent build a page from ShowAI components (MIT, vendored invendor/showai, unchanged from upstream commit9be7012): charts and the G2 chart family, flowcharts, sequence and architecture diagrams, mind maps, step-by-step walkthroughs, comparison matrices, roadmaps, 3D scenes, PDFs and more. The media components that need the network (image, gallery, video, audio, bookmark) are left out.htmlblock, which runs in its own nested sandbox. Everyhtmlblock must say which components were considered and why none fits./ui-pages/with a sandbox CSP (sandbox allow-scripts,connect-src 'none', no forms or popups) and render in a sandboxed iframe that cannot reach the app, its storage or the network.Side panel as tabs
Built-in browser
dreamcoder-project://protocol) or an https site, one<webview>per tab on a persistent partition. Other schemes are refused or offered to the system browser.Fixes
pagesvalue.README (both languages), CHANGELOG, third-party notices and the screenshots are updated.
Size
macOS arm64,
electron:packofmainand this branch:.dmg.appThe page reader adds 15.6 MiB to the app (PDF engine, external diagrams and 3D load only when a page uses them) and the sidecar grows by 2.3 MiB.
How I tested
bun test: 1483 pass, 0 failcd desktop && bun run lint: no errorscd desktop && bun run test -- --run: 1618 passed, 4 skipped, 159 filesbun test --randomize, vitest--sequence.shufflewith several seeds).show-ui-isolation.test.ts) check that a page cannot reach its parent, the app storage, the sidecar API or the network, that the bundled reader renders, and that anhtmlblock grows with its content and stays offline. Every newly enabled component's official example was also rendered in headless Chrome.Not in this PR
MermaidRenderer.test.tsxfails in shuffled order onmainas well; tracked in MermaidRenderer test fails when its tests run in a different order #206.