You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Demo: https://www.loom.com/share/d26cdf004faa4aee9c128f77dc0b2af8
## Description
Adds a `warp://settings` deep link family so settings can be opened
directly from a URL:
- `warp://settings` - opens a settings tab on the default page.
- `warp://settings?q=<query>` - opens settings with the search bar
pre-filled and the page list filtered.
- `warp://settings?widget=<widget_id>` - opens settings scrolled to (and
highlighting) a specific widget.
**Why:** lets external surfaces (docs, in-app links, support flows)
deep-link users straight to the relevant setting.
**How:** the existing `UriHost::Settings` handler now treats an empty
trailing path segment as "no sub-page" and routes the bare host plus the
`q`/`widget` query params (precedence: `widget` > `q` > existing simple
sub-pages > bare default). A new `OpenSettingsArgs` enum maps to the
existing workspace actions (`ShowSettings`,
`ShowSettingsPageWithSearch`, `ScrollToSettingsWidget`) via two new
`root_view` actions. `?widget=` resolves through an allowlist
(`settings_widget_deeplink_target`) of stable slugs to
`(SettingsSection, &'static str)` so internal Rust type names aren't
exposed as the public URL contract; seeded with `global_hotkey`,
`cli_agents`, and `custom_router`. Also fixed `open_settings_pane` so a
`?q=` search applies even when a settings tab is already open.
## Linked Issue
N/A - no linked issue.
## Testing
Added unit tests in `app/src/uri/uri_tests.rs`:
- `parse_settings_search_query` - present / empty / URL-encoded /
missing `q`
- `settings_widget_deeplink_target` - known slugs (incl.
`custom_router`) and unknown/empty
- `settings_section_for_simple_subpage` - regression for existing
sub-pages
Ran `./script/format` and `cargo clippy -p warp --all-targets --tests --
-D warnings` (clean), plus the new unit tests.
- [ ] I have manually tested my changes locally with `./script/run`
> Not manually run via `./script/run`; covered by unit tests.
Routing-only change with no new UI layout, so no screenshots.
## Agent Mode
- [x] Warp Agent Mode - This PR was created via Warp's AI Agent Mode
## Warp artifacts
- Conversation:
https://app.warp.dev/conversation/3d208974-67e1-44da-8157-12a7e7e2ef55
- Plan: https://app.warp.dev/drive/notebook/1soy0YOddbTETZH4fg3IV3
CHANGELOG-IMPROVEMENT: Added `warp://settings` deep links - open
settings, pre-fill the search bar with `?q=`, or jump to a specific
setting with `?widget=`.
Co-Authored-By: Oz <oz-agent@warp.dev>
---------
Co-authored-by: Oz <oz-agent@warp.dev>
Co-authored-by: Andy <8334252+acarl005@users.noreply.github.com>
0 commit comments