Skip to content

specs(GH2164): browser pane for local previews and web lookup#12178

Open
ashsidhu wants to merge 1 commit into
warpdotdev:masterfrom
ashsidhu:ashsidhu/gh2164-browser-pane-spec
Open

specs(GH2164): browser pane for local previews and web lookup#12178
ashsidhu wants to merge 1 commit into
warpdotdev:masterfrom
ashsidhu:ashsidhu/gh2164-browser-pane-spec

Conversation

@ashsidhu
Copy link
Copy Markdown

@ashsidhu ashsidhu commented Jun 4, 2026

Description

Adds product and technical specs for an in-app Browser Pane addressing #2164.

The proposed v1 focuses on:

  • Opening local previews and web URLs in split panes or new Warp tabs.
  • Opening URLs and search queries through the command palette.
  • Preserving existing primary-click URL behavior.
  • Using platform system webviews behind a narrow BrowserSurface abstraction.
  • Defining restore, privacy, telemetry, accessibility, keyboard, error-state, and platform-fallback behavior.
  • Sequencing implementation into small reviewable slices behind FeatureFlag::BrowserPane.

Linked Issue

Closes #2164

  • The linked issue is labeled ready-to-spec or ready-to-implement.
  • Where appropriate, screenshots or a short video of the implementation are included below.

Screenshots and videos are not applicable because this is a spec-only PR.

Testing

  • Reviewed the product and tech specs against current repository architecture and conventions.
  • Verified the branch only changes specs/GH2164/product.md and specs/GH2164/tech.md.
  • Ran git diff --check origin/master...HEAD -- specs/GH2164/product.md specs/GH2164/tech.md.
  • I have manually tested my changes locally with ./script/run

Manual app testing is not applicable because this PR only adds documentation.

Agent Mode

  • Warp Agent Mode - This PR was created via Warp's AI Agent Mode

Co-Authored-By: Codex codex@openai.com

Define the product behavior, platform-webview architecture, implementation sequencing, privacy boundaries, and validation plan for an in-app Browser Pane.

Co-Authored-By: Codex <codex@openai.com>
@cla-bot
Copy link
Copy Markdown

cla-bot Bot commented Jun 4, 2026

Thank you for your pull request and welcome to our community. We require contributors to sign our Contributor License Agreement, and we don't seem to have the users @ashsidhu on file. In order for us to review and merge your code, each contributor must visit https://cla.warp.dev to read and agree to our CLA. Once you have done so, please comment @cla-bot check to trigger another check.

@oz-for-oss
Copy link
Copy Markdown
Contributor

oz-for-oss Bot commented Jun 4, 2026

@ashsidhu

Every PR must be linked to a same-repo issue before Oz can review it.

Next step: open or find a same-repo issue describing this change, then link it to this PR by adding Closes #123 to the PR description (or using the "Development" sidebar on GitHub). A maintainer will mark the issue ready-to-spec when it is ready. Once it is marked, comment /oz-review to re-trigger review.

See the contribution guidelines for the full readiness model.

Powered by Oz

@github-actions github-actions Bot added the external-contributor Indicates that a PR has been opened by someone outside the Warp team. label Jun 4, 2026
Copy link
Copy Markdown
Contributor

@oz-for-oss oz-for-oss Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ashsidhu

Every PR must be linked to a same-repo issue before Oz can review it.

Next step: open or find a same-repo issue describing this change, then link it to this PR by adding Closes #123 to the PR description (or using the "Development" sidebar on GitHub). A maintainer will mark the issue ready-to-spec when it is ready. Once it is marked, comment /oz-review to re-trigger review.

See the contribution guidelines for the full readiness model.

Powered by Oz

@ashsidhu
Copy link
Copy Markdown
Author

ashsidhu commented Jun 4, 2026

/oz-review

@oz-for-oss
Copy link
Copy Markdown
Contributor

oz-for-oss Bot commented Jun 4, 2026

@ashsidhu

I'm re-reviewing this spec-only pull request in response to a review request.

You can view the conversation on Warp.

I completed the review and no human review was requested for this pull request.

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

Copy link
Copy Markdown
Contributor

@oz-for-oss oz-for-oss Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overview

This PR adds product and technical specs for an in-app Browser Pane covering local previews, web lookup, pane lifecycle, restore, platform webview choices, telemetry, privacy, accessibility, and validation. The scope and architecture are mostly well-bounded for v1, but the embedded browser design still leaves security-sensitive permission and persistence behavior underspecified.

Concerns

  • The spec needs an explicit default policy for webview permission prompts and privileged browser APIs before implementation.
  • The disk-backed storage fallback needs crash/unclean-shutdown cleanup semantics so cookies/cache do not persist beyond the intended local session boundary.
  • The default Google search path should disclose that raw search queries leave Warp for a third-party provider.

Security

  • Permission prompts and privileged browser APIs need a default-deny, route-external, or user-gated policy.
  • Browser Pane-specific disk storage needs crash-safe cleanup if an ephemeral/private webview mode is unavailable.

Verdict

Found: 0 critical, 2 important, 1 suggestions

Request changes

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

Comment thread specs/GH2164/product.md

17. The address/search field accepts a typed or pasted `http` or `https` URL and navigates the Browser Pane to that URL.

18. If the address/search field input is not a URL, Browser Pane treats it as a search query and opens a search-results page. V1 uses Google search by default if Warp does not already expose a browser/search-engine setting.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 [SUGGESTION] [SECURITY] Calling Google the v1 default means raw search queries leave Warp for a third party. Add a privacy note or product-copy requirement so users understand this data flow, especially because query text is otherwise excluded from telemetry.

Comment thread specs/GH2164/tech.md
- macOS should configure WKWebView with a nonpersistent `WKWebsiteDataStore`, which Apple documents as in-memory website data that is not written to disk.
- Windows should create Browser Pane webviews with a dedicated WebView2 profile/user-data scope and private mode when available; WebView2 exposes profile metadata including `IsInPrivateModeEnabled`, profile path, and browsing-data clearing APIs.
- Linux should use an ephemeral WebKitGTK context or website data manager when available; WebKitGTK documents ephemeral contexts/managers whose webviews do not store website data in client storage.
- If any supported platform cannot provide a private/ephemeral mode, the implementation must isolate Browser Pane data in a Browser Pane-specific user-data directory under Warp app data and clear cookies/cache/storage on pane close and app shutdown. It must not use the user's default external-browser profile.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [IMPORTANT] [SECURITY] The disk-backed fallback needs crash/unclean-shutdown cleanup semantics. Require clearing Browser Pane-specific storage on next startup or with an explicit TTL as well as pane close/app shutdown, otherwise cookies/cache can persist after a crash despite the nonpersistent-storage goal.

Comment thread specs/GH2164/tech.md
- Plain search query typed into toolbar or command palette.
- Local dev server not running or connection refused.
- TLS/certificate/security warning.
- Page blocks embedded browsing or requires an external auth/permission flow.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ [IMPORTANT] [SECURITY] Define the default policy for webview permission prompts and privileged APIs such as camera, microphone, geolocation, notifications, clipboard, file picker, and popups/new windows. V1 should explicitly deny, route externally, or user-gate each class so implementations do not inherit permissive platform defaults.

@advenimus
Copy link
Copy Markdown

Can't wait to see this feature added!!!

@ashsidhu
Copy link
Copy Markdown
Author

ashsidhu commented Jun 6, 2026

@cla-bot check

@cla-bot cla-bot Bot added the cla-signed label Jun 6, 2026
@cla-bot
Copy link
Copy Markdown

cla-bot Bot commented Jun 6, 2026

The cla-bot has been summoned, and re-checked this pull request!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla-signed external-contributor Indicates that a PR has been opened by someone outside the Warp team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Embedded Browser in Warp

2 participants