Skip to content

Enable async find on dogfood, add toggle for Preview/Stable#11555

Open
vkodithala wants to merge 3 commits into
masterfrom
varoon/async-find-setting
Open

Enable async find on dogfood, add toggle for Preview/Stable#11555
vkodithala wants to merge 3 commits into
masterfrom
varoon/async-find-setting

Conversation

@vkodithala
Copy link
Copy Markdown
Contributor

@vkodithala vkodithala commented May 22, 2026

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:

  • Dogfood (Local/Dev): FeatureFlag::AsyncFind is in DOGFOOD_FLAGS, so the feature is force-enabled and no toggle is shown.
  • Preview/Stable: the flag is off, so the toggle appears on the Features page with 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, then RELEASE_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 TitleChip pattern used elsewhere (e.g. MCP server cards).

Concrete changes:

  • crates/warp_features/src/lib.rs: add FeatureFlag::AsyncFind to DOGFOOD_FLAGS so the feature is force-on for Local/Dev.
  • app/src/terminal/settings.rs: add the async_find_enabled setting (terminal.async_find_enabled) with default: false, and a TerminalSettings::is_async_find_enabled() helper that returns FeatureFlag::AsyncFind.is_enabled() || *self.async_find_enabled.
  • app/src/terminal/find/model.rs: route the async-find init through TerminalSettings::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 the AsyncFindWidget to the Features page, gated by !FeatureFlag::AsyncFind.is_enabled() so it only renders on channels where the user can meaningfully toggle. Adds a free render_beta_chip helper 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).

  • I have manually tested my changes locally with ./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

  • Warp Agent Mode - This PR was created via Warp's AI 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.

@cla-bot cla-bot Bot added the cla-signed label May 22, 2026
Copy link
Copy Markdown
Contributor Author

vkodithala commented May 22, 2026

This stack of pull requests is managed by Graphite. Learn more about stacking.

@vkodithala vkodithala force-pushed the varoon/async-find-setting branch from 8232d6f to dc01210 Compare May 22, 2026 18:23
@vkodithala vkodithala force-pushed the varoon/async-find-setting branch from dc01210 to ab6f84a Compare May 22, 2026 18:24
@vkodithala vkodithala changed the title Initial commit Add May 22, 2026
@vkodithala vkodithala changed the title Add Add toggle for async find, surface in Settings May 22, 2026
@vkodithala vkodithala mentioned this pull request May 22, 2026
2 tasks
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>
@vkodithala vkodithala changed the title Add toggle for async find, surface in Settings Add toggle for async find, default-enabled for dogfood May 22, 2026
@vkodithala vkodithala changed the title Add toggle for async find, default-enabled for dogfood Add "experimental" toggle for async find May 22, 2026
@vkodithala vkodithala requested a review from vorporeal May 22, 2026 19:30
@vkodithala vkodithala marked this pull request as ready for review May 22, 2026 19:35
@oz-for-oss
Copy link
Copy Markdown
Contributor

oz-for-oss Bot commented May 22, 2026

@vkodithala

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 /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 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 TerminalFindModel is 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

Comment thread app/src/terminal/find/model.rs
@vkodithala vkodithala changed the title Add "experimental" toggle for async find Add toggle for async find, default-enabled on dogfood May 22, 2026
@vkodithala vkodithala changed the title Add toggle for async find, default-enabled on dogfood Enable async find on dogfood, add toggle for Preview/Stable May 22, 2026
let ui_builder = appearance.ui_builder();

let label = render_body_item_label::<FeaturesPageAction>(
"Asynchronous find".into(),
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.

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",
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.

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

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants