feat: embeded webview panel for rerun#24
Open
TomCC7 wants to merge 9 commits into
Open
Conversation
There was a problem hiding this comment.
Hi! Thanks for opening this pull request.
Because this is your first time contributing to this repository, make sure you've read our Contributor Guide and Code of Conduct.
aclauer
reviewed
Jun 16, 2026
aclauer
left a comment
There was a problem hiding this comment.
Some minor structure things (non-blocking), but looks good
aclauer
reviewed
Jun 16, 2026
aclauer
reviewed
Jun 16, 2026
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.
Summary
Adds an experimental native Web Page View to the DimOS/Rerun viewer.
The view lets users embed live


http(s)pages inside the native viewer layout. It can be configured through the normal Rerun blueprint API or through a DimOS-only websocket command.What changed
WebPageview type with blueprint config:urlshow_navigation_controlswrybackend behind thenative_webviewfeature.http://andhttps://file:,data:,javascript:, and custom schemesopen_web_page_viewpanel_idLimitation
Current implementation will hide our custom keypad overlay behind the webpage (check image). Seems like it's not an easy fix.
Python blueprint example
DimOS websocket command example
{ "type": "open_web_page_view", "panel_id": "viser", "title": "Viser", "url": "http://127.0.0.1:8095/", "show_navigation_controls": true }This command is DimOS-only and experimental. It is a convenience wrapper around normal Web Page View blueprint state, not a separate native-webview control API.
Platform notes
Validation
Reviewer file map
Use this map to review the PR in layers instead of reading the full generated diff top-to-bottom.
Start here: runtime Web Page View implementation
crates/viewer/re_view_web_page/src/view_class.rs— egui UI, URL/config loading, optional controls, address bar, repaint behavior.crates/viewer/re_view_web_page/src/backend.rs— backend-neutral instance abstraction, fake/native dispatch, session handling.crates/viewer/re_view_web_page/src/lifecycle.rs— per-view create/update/navigation/drop lifecycle.crates/viewer/re_view_web_page/src/native_backend.rs—wryintegration, native child webview storage, bounds, visibility, GTK init/event pump on Linux.crates/viewer/re_view_web_page/src/url_policy.rs— allowed URL schemes.crates/viewer/re_view_web_page/tests/*— behavior coverage for config, URL policy, lifecycle, controls, fake backend, and native smoke boundary.Viewer integration points
crates/viewer/re_viewer/src/default_views.rs— registers the new view class.crates/viewer/re_viewer/src/app.rs— exposes the scoped native parent-window hook and the small DimOS-facing request API.crates/viewer/re_viewer/src/app_state.rs— applies queued Web Page View requests into blueprint state.crates/viewer/re_viewer_context/src/view/view_states.rsandcrates/viewer/re_viewport/src/viewport_ui.rs— prune removed view state so native webviews are destroyed when views are removed.crates/viewer/re_viewer/Cargo.toml,crates/top/rerun*/Cargo.toml— feature plumbing fornative_webview.Schema and generated API surface
crates/store/re_sdk_types/definitions/rerun/blueprint/views/web_page.fbs— newWebPageview definition.crates/store/re_sdk_types/definitions/rerun/blueprint/archetypes/web_page_view_config.fbs—urlandshow_navigation_controlsblueprint config.crates/store/re_sdk_types/definitions/rerun/blueprint/components/{web_page_url,show_navigation_controls}.fbs— typed config components.crates/store/re_sdk_types/src/blueprint/**,rerun_py/rerun_sdk/rerun/blueprint/**,rerun_cpp/src/rerun/blueprint/**, anddocs/content/reference/types/views/**come from those.fbsfiles.DimOS websocket command path
dimos/src/interaction/ws.rs— parses inboundopen_web_page_viewcommands and keeps existing outbound click/twist/stop events.dimos/src/viewer.rs— drains websocket commands, validates them, and forwards them to the smallre_viewer::AppAPI.dimos/src/interaction/mod.rs,dimos/Cargo.toml,dimos/pyproject.toml,docs/websockets.md— exports, deps, metadata, and docs for the DimOS path.Manual smoke-test helpers
scripts/web_page_view_smoke/launch_viewer.sh— launches DimOS viewer with native webview enabled on Linux X11.scripts/web_page_view_smoke/show_two_pages.sh— sends two blueprint-created Web Page Views.scripts/web_page_view_smoke/show_youtube.sh— sends a video page for media playback smoke testing.scripts/web_page_view_smoke/serve_dimos_ws_command.py— one-shot websocket server for the DimOS command path.Process/spec/docs files
openspec/changes/add-dimos-web-page-command/**,openspec/changes/archive/2026-06-12-add-native-web-page-view/**, andopenspec/specs/native-web-page-view/spec.mddocument the implementation plan and archived spec state.ARCHITECTURE.mdandCONTEXT.mdadd the crate/glossary entries needed by repo linting and reviewer context.