first pass of merging in warp (doesn't build)

This commit is contained in:
Ryan Ward
2026-07-01 16:08:58 -05:00
parent 2f64909469
commit 4770ac06b5
3662 changed files with 414574 additions and 89772 deletions
@@ -11,3 +11,10 @@ fn test_all_preview_flags_have_a_description() {
);
}
}
#[test]
fn local_child_harnesses_are_local_only_by_default() {
assert!(LOCAL_FLAGS.contains(&FeatureFlag::LocalClaudeCodexChildHarnesses));
assert!(!DEBUG_FLAGS.contains(&FeatureFlag::LocalClaudeCodexChildHarnesses));
assert!(!DOGFOOD_FLAGS.contains(&FeatureFlag::LocalClaudeCodexChildHarnesses));
}
@@ -0,0 +1,20 @@
use super::*;
#[test]
#[ignore = "CORE-3768 - need to clean up PREVIEW_FLAGS, but this is a temporary fix for the cluttered changelog"]
fn test_all_preview_flags_have_a_description() {
for flag in PREVIEW_FLAGS {
assert!(
flag.flag_description()
.is_some_and(|description| !description.is_empty()),
"Missing description for preview-enabled flag {flag:?}"
);
}
}
#[test]
fn local_child_harnesses_are_local_only_by_default() {
assert!(LOCAL_FLAGS.contains(&FeatureFlag::LocalClaudeCodexChildHarnesses));
assert!(!DEBUG_FLAGS.contains(&FeatureFlag::LocalClaudeCodexChildHarnesses));
assert!(!DOGFOOD_FLAGS.contains(&FeatureFlag::LocalClaudeCodexChildHarnesses));
}
+159 -93
View File
@@ -1,7 +1,6 @@
use std::sync::atomic::{AtomicBool, AtomicU8, Ordering};
use enum_iterator::{cardinality, Sequence};
#[cfg(feature = "test-util")]
pub use overrides::{get_overrides, set_overrides};
@@ -114,10 +113,6 @@ pub enum FeatureFlag {
/// Enables the settings file feature.
SettingsFile,
/// Enables the settings import onboarding block and pre-parsing
/// configs on app startup.
SettingsImport,
/// Enables rect selection.
RectSelection,
@@ -139,13 +134,6 @@ pub enum FeatureFlag {
/// Enables AI rules for use with Agent Mode.
AIRules,
/// Routes SSH sessions through the tmux-backed SSH wrapper.
SSHTmuxWrapper,
/// Reduces the amount of horizontal padding in the blocklist
/// from 20px to 16px.
LessHorizontalTerminalPadding,
/// Enables the shell selector, allowing us to open a new tab in
/// a shell other than the default shell.
ShellSelector,
@@ -153,9 +141,6 @@ pub enum FeatureFlag {
/// Enables writing to long-running commands in shared sessions.
SharedSessionWriteToLongRunningCommands,
/// Replaces the bookmark button with a "save as workflow" button.
BlockToolbeltSaveAsWorkflow,
/// Lazily builds scenes at render time instead of eagerly when a view
/// changes.
LazySceneBuilding,
@@ -165,12 +150,6 @@ pub enum FeatureFlag {
/// https://github.com/warpdotdev/session-sharing-server/blob/b6590ebd0b0e7f6847d6b2228b4e77d63939ce22/server/Cargo.toml#L13
SessionSharingAcls,
/// Removes the extraneous padding from the alt-screen that we previously had
/// to keep consistent size between blocklist and alt-screen.
///
/// See plan here: https://docs.google.com/document/d/1TBPSWNfh4KylkEgL5o5xyYgK_KQzUQk1oxjuIx2ipXw
RemoveAltScreenPadding,
/// Enables the full-screen "zen mode" setting, where we hide the tab bar if there's only one
/// tab.
FullScreenZenMode,
@@ -269,6 +248,9 @@ pub enum FeatureFlag {
/// Enables full source code embedding of repos when using codebase context.
FullSourceCodeEmbedding,
/// Enables codebase indexing inside remote server daemon processes.
RemoteCodebaseIndexing,
/// If enabled, command palette searches will use Tantivy search instead of the default fuzzy search.
UseTantivySearch,
@@ -325,9 +307,6 @@ pub enum FeatureFlag {
/// Enables inline review comments on specific lines of code.
ContextLineReviewComments,
/// Enables the natural language classification model.
NLDClassifierModelEnabled,
/// Enables the fast-forward autoexecute button
FastForwardAutoexecuteButton,
@@ -370,9 +349,6 @@ pub enum FeatureFlag {
/// Enables new Search Codebase UI
SearchCodebaseUI,
/// Enables return changed lines on apply diff result
ChangedLinesOnlyApplyDiffResult,
/// Enables us to render linked code blocks
LinkedCodeBlocks,
@@ -394,10 +370,6 @@ pub enum FeatureFlag {
/// Gates the bundled skill-based implementation of PR comment fetching.
PRCommentsSkill,
/// An entrypoint pane type to launch other pane types from a search palette. The default view
/// when creating a tab.
WelcomeTab,
/// A new first-time user experience which prioritizes choosing a coding repository.
GetStartedTab,
@@ -422,9 +394,6 @@ pub enum FeatureFlag {
/// Allows opening file links using the $EDITOR environment variable.
AllowOpeningFileLinksUsingEditorEnv,
/// Enables improvements to our natural language detection functionality.
NldImprovements,
/// Enables the ability to undo closed panes.
UndoClosedPanes,
@@ -470,6 +439,9 @@ pub enum FeatureFlag {
/// Enables find/search in code review pane
CodeReviewFind,
/// Enables asynchronous find in terminal, running search on a background thread.
AsyncFind,
/// Enables using Agent Mode in shared sessions.
AgentSharedSessions,
@@ -540,6 +512,10 @@ pub enum FeatureFlag {
/// Enables v2 of the context window usage UI.
ContextWindowUsageV2,
/// Dev-only: enables the expandable per-segment context window usage
/// breakdown in the conversation usage card.
ContextWindowUsageBreakdown,
/// Enables global search
GlobalSearch,
@@ -599,6 +575,10 @@ pub enum FeatureFlag {
/// Enables computer use functionality in local clients.
LocalComputerUse,
/// Enables background, per-window computer use: driving a specific window directly without
/// raising it or moving the cursor. Currently only supported on macOS.
BackgroundComputerUse,
/// Enables team API key creation in the API key management UI.
TeamApiKeys,
@@ -679,6 +659,9 @@ pub enum FeatureFlag {
/// When enabled, the HOA onboarding flow is suppressed.
OpenWarpLaunchModal,
/// Enables the orchestration launch modal announcing multi-agent orchestration features.
OrchestrationLaunchModal,
/// Updated tab styling (background colors, border, close button positioning, margins).
NewTabStyling,
@@ -706,14 +689,33 @@ pub enum FeatureFlag {
/// content changes via auto-reload.
CodeReviewScrollPreservation,
/// Enables orchestration mode (multi-agent parallel execution).
Orchestration,
/// Re-enables local Claude Code and Codex child harnesses in orchestration
/// flows while the default behavior temporarily keeps them disabled.
LocalClaudeCodexChildHarnesses,
/// Enables server-side durable messaging for orchestration (v2).
/// When enabled, messages and events are stored in Postgres and the client
/// opens a persistent SSE connection to the server to receive events in
/// real time.
OrchestrationV2,
/// Gates client-side support for the `orchestrate` tool, which batches
/// multiple child agents into a single tool call with an inline
/// confirmation card. When enabled, the client advertises
/// `RequestSettings.SupportsOrchestrate = true` and the server's
/// orchestrate tool replaces `start_agent` / `start_agent_v2` for
/// orchestration-capable conversations. Layered on top of
/// `OrchestrationV2`; has no effect when v2 is off.
RunAgentsTool,
/// Replaces `OrchestrationViewerModel`'s REST polling loop with an SSE-driven
/// `ancestor_run_id` stream consumed via `OrchestrationEventStreamer`'s new
/// viewer-mode entry. Off by default; flipping it on activates the
/// per-orchestrator viewer-mode consumer and the broadcast `ChildSpawned`
/// / `ChildStatusChanged` events. See `specs/orch-viewer-polling/TECH.md`.
OrchestrationViewerStreamer,
/// Uses a parent-family ancestor stream for owner-side orchestrator event delivery.
OwnerOrchestrationAncestorStreamer,
/// On `wait_for_events`, confirms parent status against the server and
/// registers an orchestrator for the owner-side ancestor stream so it
/// receives events for children created out-of-band (Oz CLI / web API).
WaitForEventsParentRegistration,
/// Shows a pending user query indicator during summarization when a follow-up
/// prompt is queued via `/fork-and-compact` or `/compact-and`.
@@ -722,6 +724,8 @@ pub enum FeatureFlag {
/// Gates the `/queue` slash command, which lets users queue a follow-up prompt
/// while the agent is mid-response.
QueueSlashCommand,
/// Extends queued prompts to Cloud Mode setup and follow-up draining.
QueuedPromptsV2,
/// Enables an agent tool for the CLI subagent to explicitly transfer command control to the
/// user.
@@ -736,6 +740,9 @@ pub enum FeatureFlag {
/// Enables header rows on all inline menus (label, tabs, resize handle).
InlineMenuHeaders,
/// Clears the current prompt when opening the inline model selector from the
/// model chip, then restores that prompt when the selector closes.
RestorePromptOnInlineModelSelectorSearch,
/// Enables associating a tab color with a directory so tabs automatically
/// adopt the configured color when their working directory matches.
@@ -777,6 +784,10 @@ pub enum FeatureFlag {
/// Requires HOANotifications to also be enabled.
CodexNotifications,
/// Enables the Codex Warp plugin marketplace integration.
/// When disabled, Codex uses native OSC9 notifications.
CodexPlugin,
/// Enables the install/update chip for the Gemini CLI Warp extension.
/// Requires HOANotifications to also be enabled.
GeminiNotifications,
@@ -789,8 +800,8 @@ pub enum FeatureFlag {
/// Enables tab configs — user-definable TOML templates for launching custom tab layouts.
TabConfigs,
/// When enabled, free-tier users are blocked from AI features (no-AI experiment arm).
FreeUserNoAi,
/// Enables Warp local control through the standalone warpctrl CLI.
WarpControlCli,
/// Enables the ask_user_question tool allowing the agent to ask clarifying questions.
AskUserQuestion,
@@ -798,6 +809,11 @@ pub enum FeatureFlag {
/// When enabled, solo users (not on a team) can use BYO API keys.
SoloUserByok,
/// Enables the Custom Inference settings UI for adding user-provided third-party / OpenAI-compatible inference endpoints.
CustomInferenceEndpoints,
/// Enables Custom Inference endpoints for enterprise users.
CustomInferenceEndpointsEnterprise,
/// Replaces the in-block warpification banner with a warpify footer.
WarpifyFooter,
@@ -832,17 +848,63 @@ pub enum FeatureFlag {
CloudModeInputV2,
/// Enables LSP-based code completion (autocomplete) in the code editor.
LspCompletion,
/// Enables continuing cloud mode conversations in the cloud after an execution ends.
HandoffCloudCloud,
/// Enables LSP code actions (quick fixes, refactorings) in the code editor.
LspCodeActions,
/// Enables the local-to-cloud Oz handoff entry points (footer chip and
/// `/move-to-cloud` slash command) that fork the active local Oz
/// conversation into a fresh cloud agent run with the current workspace
/// snapshot attached. Requires `OzHandoff` to also be enabled.
HandoffLocalCloud,
/// Enables LSP-based symbol rename in the code editor.
LspRename,
/// Enables creating API keys scoped to named agents in the API key
/// management UI. When enabled the "Team" option in the key-type
/// selector is replaced with "Agent" and users can pick which agent
/// identity the key authenticates as.
NamedAgents,
/// Gates the driver behavior that writes GitHub credentials to disk
/// (`~/.git-credentials`, `~/.config/gh/hosts.yaml`) and runs the
/// background refresh loop that keeps them fresh during a task run.
GitCredentialRefresh,
/// Enables LSP signature help (parameter hints) in the code editor.
LspSignatureHelp,
/// Gates the v2 billing and usage page redesign.
BillingAndUsagePageV2,
/// Enables configurable expanded context windows for eligible GPT models.
GPTConfigurableContextWindow,
/// Replaces the raw harness CLI command with a styled header showing CLI name + status icon.
HarnessSessionHeader,
/// Enables the code review view for remote sessions.
RemoteCodeReview,
/// Gates the Grouped Tabs feature.
GroupedTabs,
/// Gates the Pinned Tabs feature, which lets users pin individual tabs
/// and whole tab groups so they stay at the front of the tab list and
/// are protected from reordering.
PinnedTabs,
/// Gates the SuperGrok feature, which lets users
/// connect a Grok subscription instead of pasting an API key.
SuperGrok,
/// Gates Gemini Enterprise (GEAP) BYOLLM, which lets users
/// route eliglible models to GEAP instead of Warp-managed inference.
GeminiEnterprise,
/// Gates the custom model router feature, which allows users to define
/// their own model routers.
CustomModelRouters,
/// Shows a warning in the agent view when the active conversation's
/// provider-side prompt cache has expired.
PromptCacheExpiryWarning,
/// Enables the `--runner` flag on `run-cloud`, which overrides an agent's
/// compute (docker image, instance shape, setup commands) by runner ID.
CloudRunners,
}
static FLAG_STATES: [AtomicBool; cardinality::<FeatureFlag>()] =
@@ -861,6 +923,8 @@ static FEATURES_INITIALIZED: AtomicBool = AtomicBool::new(false);
/// Features used in debugging.
pub const DEBUG_FLAGS: &[FeatureFlag] = &[FeatureFlag::DebugMode, FeatureFlag::RuntimeFeatureFlags];
/// Features enabled only for the WarpLocal developer build.
pub const LOCAL_FLAGS: &[FeatureFlag] = &[FeatureFlag::LocalClaudeCodexChildHarnesses];
/// Features enabled for the development team. The expectation is that, over
/// time, these will move on to PREVIEW_FLAGS before being launched.
@@ -871,8 +935,6 @@ pub const DOGFOOD_FLAGS: &[FeatureFlag] = &[
FeatureFlag::RemoveAutosuggestionDuringTabCompletions,
FeatureFlag::ResizeFix,
FeatureFlag::AgentModeWorkflows,
#[cfg(not(windows))]
FeatureFlag::SSHTmuxWrapper,
FeatureFlag::AgentModeAnalytics,
FeatureFlag::LazySceneBuilding,
FeatureFlag::SshDragAndDrop,
@@ -882,21 +944,14 @@ pub const DOGFOOD_FLAGS: &[FeatureFlag] = &[
FeatureFlag::RetryTruncatedCodeResponses,
FeatureFlag::ContextLineReviewComments,
FeatureFlag::RunGeneratorsWithCmdExe,
FeatureFlag::NLDClassifierModelEnabled,
FeatureFlag::Projects,
FeatureFlag::ProviderCommand,
FeatureFlag::ArtifactCommand,
FeatureFlag::MarkdownImages,
FeatureFlag::FileAndDiffSetComments,
FeatureFlag::FileGlobV2Warnings,
FeatureFlag::SummarizationViaMessageReplacement,
FeatureFlag::LocalComputerUse,
FeatureFlag::OzPlatformSkills,
FeatureFlag::AgentViewBlockContext,
FeatureFlag::OzLaunchModal,
FeatureFlag::OzChangelogUpdates,
FeatureFlag::PendingUserQueryIndicator,
FeatureFlag::QueueSlashCommand,
// These are enabled via 100% experiment on prod warp-server,
// but we need to enable here for dogfood builds.
FeatureFlag::CrossRepoContext,
@@ -904,38 +959,31 @@ pub const DOGFOOD_FLAGS: &[FeatureFlag] = &[
FeatureFlag::FullSourceCodeEmbedding,
FeatureFlag::CodebaseIndexSpeedbump,
// End manually enabled Code features.
FeatureFlag::DirectoryTabColors,
FeatureFlag::EditableMarkdownMermaid,
FeatureFlag::CodeReviewScrollPreservation,
FeatureFlag::OzIdentityFederation,
FeatureFlag::AgentHarness,
FeatureFlag::OzHandoff,
FeatureFlag::ConversationApi,
FeatureFlag::RememberFastForwardState,
FeatureFlag::HOANotifications,
FeatureFlag::OrchestrationV2,
FeatureFlag::GeminiNotifications,
FeatureFlag::LocalDockerSandbox,
FeatureFlag::VerticalTabsSummaryMode,
FeatureFlag::CloudModeSetupV2,
FeatureFlag::LspCompletion,
FeatureFlag::LspCodeActions,
FeatureFlag::LspRename,
FeatureFlag::LspSignatureHelp,
#[cfg(not(windows))]
FeatureFlag::SshRemoteServer,
FeatureFlag::RemoteCodebaseIndexing,
FeatureFlag::GPTConfigurableContextWindow,
FeatureFlag::RestorePromptOnInlineModelSelectorSearch,
FeatureFlag::WarpControlCli,
FeatureFlag::PromptCacheExpiryWarning,
FeatureFlag::PinnedTabs,
FeatureFlag::BackgroundComputerUse,
FeatureFlag::ContextWindowUsageBreakdown,
FeatureFlag::CloudRunners,
FeatureFlag::WaitForEventsParentRegistration,
];
/// Features enabled for feature preview build users (e.g.: Friends of Warp).
/// All PREVIEW_FLAGS are also automatically added to dogfood builds (WarpDev).
pub const PREVIEW_FLAGS: &[FeatureFlag] = &[
FeatureFlag::Orchestration,
FeatureFlag::BlocklistMarkdownTableRendering,
FeatureFlag::BlocklistMarkdownImages,
FeatureFlag::MarkdownTables,
FeatureFlag::OzIdentityFederation,
// Remote server binary is not yet supported on Windows.
#[cfg(not(windows))]
FeatureFlag::SshRemoteServer,
FeatureFlag::GitOperationsInCodeReview,
FeatureFlag::AsyncFind,
#[cfg(any(target_os = "macos", target_os = "windows"))]
FeatureFlag::DragTabsToWindows,
];
/// Features enabled for all release builds (i.e.: everything but WarpLocal).
@@ -948,10 +996,13 @@ pub const RELEASE_FLAGS: &[FeatureFlag] = &[
// Marked text is currently only supported on MacOS.
#[cfg(target_os = "macos")]
FeatureFlag::ImeMarkedText,
// Remote server binary is not yet supported on Windows.
#[cfg(not(windows))]
FeatureFlag::SshRemoteServer,
];
/// Flags that we want to allow to switch at runtime (assuming RuntimeFeatureFlags is set)
pub const RUNTIME_FEATURE_FLAGS: &[FeatureFlag] = &[];
pub const RUNTIME_FEATURE_FLAGS: &[FeatureFlag] = &[FeatureFlag::LocalClaudeCodexChildHarnesses];
impl FeatureFlag {
pub fn is_enabled(&self) -> bool {
@@ -975,7 +1026,9 @@ impl FeatureFlag {
// Allow calling this in integration tests because we sometimes use it in the app
// during flows that integration tests cover.
if cfg!(test) && cfg!(not(feature = "integration_tests")) {
panic!("Tried to globally enable {self:?} in a test. Use FeatureFlag::{self:?}.override_enabled instead");
panic!(
"Tried to globally enable {self:?} in a test. Use FeatureFlag::{self:?}.override_enabled instead"
);
}
FLAG_STATES[self as usize].store(enabled, Ordering::Relaxed);
}
@@ -1018,16 +1071,28 @@ impl FeatureFlag {
BlocklistMarkdownImages => {
Some("Enables rendering markdown images inline in AI block list responses.")
}
CloudEnvironments => Some("Enables creating and managing Warp Environments via the CLI."),
CreateEnvironmentSlashCommand => Some("Enables the /create environment slash command for setting up Warp Environments with custom configurations."),
CloudEnvironments => {
Some("Enables creating and managing Warp Environments via the CLI.")
}
CreateEnvironmentSlashCommand => Some(
"Enables the /create environment slash command for setting up Warp Environments with custom configurations.",
),
GlobalSearch => Some("Enables global search in the left panel"),
BlocklistMarkdownTableRendering => {
Some("Enables rendering markdown tables inline in AI block list responses.")
}
MarkdownTables => Some("Enables rendering and interaction support for markdown tables in notebooks."),
OzIdentityFederation => Some("Enables automatic authentication from Oz to AWS and GCP"),
SettingsFile => Some("Enables configuring Warp via a user-editable `settings.toml` file, with hot reload and error reporting for invalid values."),
GitOperationsInCodeReview => Some("Enables commit, push, and create-PR actions directly from the code review panel."),
MarkdownTables => {
Some("Enables rendering and interaction support for markdown tables in notebooks.")
}
SettingsFile => Some(
"Enables configuring Warp via a user-editable `settings.toml` file, with hot reload and error reporting for invalid values.",
),
GitOperationsInCodeReview => Some(
"Enables commit, push, and create-PR actions directly from the code review panel.",
),
AsyncFind => Some(
"Runs terminal find on a background thread to keep the UI responsive while searching large outputs.",
),
_ => None,
}
}
@@ -1051,7 +1116,8 @@ mod overrides {
/// should use overrides instead of globally modifying flags with [`super::FeatureFlag::set_enabled`].
#[cfg(feature = "test-util")]
mod overrides {
use std::{cell::RefCell, collections::HashMap};
use std::cell::RefCell;
use std::collections::HashMap;
use super::FeatureFlag;
@@ -1122,7 +1188,7 @@ mod overrides {
/// An atomic tri-state value.
///
/// This is initally unset, and can be set to a true or false value.
/// This is initially unset, and can be set to a true or false value.
///
/// Writes and reads use [`Ordering::Relaxed`], so should not be used for
/// synchronization.
@@ -1182,5 +1248,5 @@ impl From<TriState> for Option<bool> {
}
#[cfg(test)]
#[path = "features_test.rs"]
#[path = "features_tests.rs"]
mod tests;