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
Enable async find on dogfood, add toggle for Preview/Stable (warpdotdev#11555)
## 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).
- [x] 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
- [x] 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.
0 commit comments