Enable async find on dogfood, add toggle for Preview/Stable#11555
Enable async find on dogfood, add toggle for Preview/Stable#11555vkodithala wants to merge 3 commits into
Conversation
8232d6f to
dc01210
Compare
dc01210 to
ab6f84a
Compare
Promotes `FeatureFlag::AsyncFind` to all builds by adding `async_find` to the default Cargo features. The user-facing toggle now appears on every channel and is gated to default-true on dogfood (Local/Dev) and default-false on Stable/Preview, approximating an "experimental" rollout. Co-Authored-By: Oz <oz-agent@warp.dev>
|
I'm starting a first review of this pull request. You can view the conversation on Warp. I completed the review and no human review was requested for this pull request. Comment Powered by Oz |
There was a problem hiding this comment.
Overview
This PR promotes the async-find feature to all release builds, adds a user-facing Features page toggle, and gates TerminalFindModel construction on the new terminal setting.
Concerns
- Existing terminal views only read the new setting when their
TerminalFindModelis constructed, so toggling the setting does not actually engage or disengage async find for already-open terminals. - This is a user-facing settings change, but the PR description does not include screenshots or a screen recording. For this user-facing change, please include screenshots or a screen recording demonstrating it working end to end.
- No approved spec context was provided, so there were no spec commitments to validate beyond the PR description.
Verdict
Found: 0 critical, 2 important, 0 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
| let ui_builder = appearance.ui_builder(); | ||
|
|
||
| let label = render_body_item_label::<FeaturesPageAction>( | ||
| "Asynchronous find".into(), |
There was a problem hiding this comment.
might want to use a different user-facing name here (or description), to tie it back to "why should i enable this?"
e.g.: could make the description "Uses an improved find implementation to keep UI responsive while searching for matches"
| supported_platforms: SupportedPlatforms::ALL, | ||
| sync_to_cloud: SyncToCloud::Globally(RespectUserSyncSetting::Yes), | ||
| private: false, | ||
| toml_path: "terminal.async_find_enabled", |
There was a problem hiding this comment.
thoughts on making this experimental.async_find_enabled?
given the fact that this is only a temporary toggle, i think i prefer the idea of it showing up as:
[experimental]
async_find_enabled = true
Description
Surfaces an "Asynchronous find" toggle on the Features settings page so non-dogfood users can opt into this experimental feature, while keeping it force-enabled (no toggle) on dogfood channels.
Behavior by channel:
FeatureFlag::AsyncFindis inDOGFOOD_FLAGS, so the feature is force-enabled and no toggle is shown.default: false. Users opt in via the toggle.The feature flag itself is the discriminator between these two modes — there's no separate channel-aware default baked into the setting. Promoting the feature through the normal flag-promotion ladder (add to
PREVIEW_FLAGS, thenRELEASE_FLAGS) automatically hides the toggle and force-enables the feature; no code changes here required.On channels where the toggle is visible, a small "BETA" chip is rendered next to the title to signal the experimental nature of the feature, styled to match the
TitleChippattern used elsewhere (e.g. MCP server cards).Concrete changes:
crates/warp_features/src/lib.rs: addFeatureFlag::AsyncFindtoDOGFOOD_FLAGSso the feature is force-on for Local/Dev.app/src/terminal/settings.rs: add theasync_find_enabledsetting (terminal.async_find_enabled) withdefault: false, and aTerminalSettings::is_async_find_enabled()helper that returnsFeatureFlag::AsyncFind.is_enabled() || *self.async_find_enabled.app/src/terminal/find/model.rs: route the async-find init throughTerminalSettings::is_async_find_enabled()so callers don't need to track both the flag and the setting.app/src/settings_view/features_page.rs: add theAsyncFindWidgetto the Features page, gated by!FeatureFlag::AsyncFind.is_enabled()so it only renders on channels where the user can meaningfully toggle. Adds a freerender_beta_chiphelper for the inline "BETA" pill.Testing
Confirmed via manual testing on Preview/Stable-like builds (flag off, toggle visible) and dogfood-like builds (flag on, toggle hidden, feature force-enabled).
./script/run— toggle appears with the BETA chip on the Features page when the flag is off, is hidden when the flag is on, and async find engages/disengages with the setting.Agent Mode
CHANGELOG-IMPROVEMENT: A new, faster implementation of find is now available as an opt-in setting under Features → Asynchronous find. This will help keep the UI responsive on large outputs.