Initial public release of Warp.

Repo-Sync-Origin: warpdotdev/warp-internal@12af1d983b
This commit is contained in:
David Stern
2026-04-28 08:43:33 -05:00
commit 0dbd3d567a
4982 changed files with 1431549 additions and 0 deletions
+101
View File
@@ -0,0 +1,101 @@
# PRODUCT.md — Rename Oz to Warp Agent in settings and onboarding
Issue: https://github.com/warpdotdev/warp-external/issues/1063
## Summary
The in-app agent is being renamed from "Oz" to "Warp Agent" in the settings page
and the onboarding agent slide. "Oz" is reserved for the cloud agent
orchestration platform and must not be used for the in-app agent's user-facing
strings in these surfaces. This change updates only user-visible copy; the cloud
agent orchestration product continues to be surfaced as "Oz" wherever it
currently is.
Figma: none provided.
## Goals / Non-goals
In-scope surfaces (user-facing strings change):
- The settings sidebar entry for the in-app agent under the "Agents" umbrella.
- The primary heading on the AI settings page that labels the global AI enable
toggle.
- The onboarding agent slide header and the "disable" checkbox label on that
slide.
Out of scope (must continue to say "Oz"):
- Anything that refers to the cloud agent orchestration platform, including the
"Oz Cloud API Keys" settings subpage, the "Oz" harness in the harness
selector, and any zero-state or blocklist strings that mention the cloud Oz
agent.
- Internal identifiers (enum variants, field names, action names, telemetry
keys, settings keys, URL fragments) may keep the name `Oz`. This spec
constrains user-visible strings only.
- Other surfaces that mention "Oz" (agent view zero state, tab titles,
documentation, etc.) are not covered by this issue and are not changed here.
## Behavior
1. On the settings sidebar, under the "Agents" umbrella, the first subpage entry
is labeled "Warp Agent" (previously "Oz"). The ordering of subpages, the
umbrella name ("Agents"), and all sibling subpages ("Profiles", "MCP
servers", "Knowledge", "Third party CLI agents") are unchanged.
2. Opening that "Warp Agent" subpage renders the same settings content it did
before this rename. No widgets, toggles, options, defaults, or telemetry
change behavior as a result of this rename.
3. On the "Warp Agent" subpage, the primary page heading that sits above the
global AI enable toggle reads "Warp Agent" (previously "Oz"). Typography,
color, size, weight, and layout of the heading are unchanged; only the text
differs.
4. The global AI enable toggle itself (its on/off state, its behavior when
toggled, and the remote-session organization-policy warning shown next to it)
is unchanged. The Sign-up CTA shown to anonymous users on this page is
unchanged.
5. On the onboarding agent slide (the third onboarding step), the title reads
"Customize your Warp Agent" (previously "Customize your Agent, Oz"). The
subtitle "Select your in-app agent's defaults." is unchanged.
6. When the "new settings modes" feature flag is enabled and the slide renders
the disable checkbox row, the checkbox label reads "Disable Warp Agent"
(previously "Disable Oz"). Checkbox visual state, hit target, and click
behavior are unchanged — toggling it still enables/disables the in-app agent
for onboarding and still dims the upper sections of the slide while checked.
7. Search within settings still finds the in-app agent subpage when the user
types any previously-matching search term (for example, terms already covered
by the AI page's global widget search terms such as "ai", "agent", "next
command", "api keys"). Additionally, typing "warp agent" finds this subpage.
Typing "oz" is acceptable to continue matching this subpage so existing
muscle memory is not broken, but is not required by this spec; search for
"Oz Cloud API Keys" must continue to find the cloud platform subpage
regardless.
8. Deep links and external callers that previously navigated to this subpage by
section identifier continue to resolve to the same subpage. In particular,
navigation requests that reference the legacy "Oz" section name still land on
the renamed "Warp Agent" subpage. Navigation requests referencing "Warp
Agent" also resolve to the same subpage.
9. The "Oz Cloud API Keys" subpage under the "Cloud platform" umbrella is
unchanged — same label, same location, same behavior. No cloud-agent surface
is renamed by this change.
10. Onboarding progress (step index, total step count, back/next navigation, the
"disable agent" effect on subsequent onboarding state) is unchanged. Nothing
about the Autonomy section, Default model section, upgrade banner, or
plan-activated toast changes.
11. Accessibility: the settings sidebar item, the page heading, and the
onboarding checkbox label expose the new visible text ("Warp Agent",
"Disable Warp Agent") to assistive technologies. No separate aria-only label
still announces "Oz" for the renamed surfaces.
12. The rename applies consistently across themes, appearances, and the new
settings modes feature flag on/off. The only user-visible difference between
flag states remains whether the "Disable Warp Agent" row renders at all; its
label text does not depend on the flag.
+185
View File
@@ -0,0 +1,185 @@
# TECH.md — Rename Oz to Warp Agent in settings and onboarding
Issue: https://github.com/warpdotdev/warp-external/issues/1063
Product spec: `specs/GH1063/product.md`
## Context
This is a rename of the in-app agent from "Oz" to "Warp Agent" across user-facing
strings, the internal enum variants that back those strings, and all call-sites
that referenced the old variant. "Oz" remains reserved for the cloud agent
orchestration platform, so the rename must not touch any cloud surfaces.
Relevant code (prior state):
- `app/src/settings_view/mod.rs` — `SettingsSection::Oz` variant displayed as
`"Oz"` in the sidebar. `FromStr` mapped `"Oz"` to `SettingsSection::Oz`.
Default-subpage fallback and `is_ai_subpage` / `ai_subpages()` all referenced
`SettingsSection::Oz`.
- `app/src/settings_view/ai_page.rs` — `AISubpage::Oz` variant, heading literal
`"Oz"`, and multiple description strings referencing "Oz" or "Oz agent".
- `crates/onboarding/src/slides/agent_slide.rs` — header title
`"Customize your Agent, Oz"` and checkbox label `"Disable Oz"`.
- Approximately 15 additional files contained `SettingsSection::Oz` usages
for navigation actions and settings page dispatch.
Out-of-scope references that must be preserved as "Oz" (verified by grep):
- `app/src/settings_view/mod.rs` — `SettingsSection::OzCloudAPIKeys` display
`"Oz Cloud API Keys"` and its `FromStr` round-trip.
- `app/src/terminal/view/ambient_agent/harness_selector.rs:62` — `Harness::Oz`
display name "Oz" in the cloud agent harness menu.
- `app/src/ai/blocklist/agent_view/zero_state_block.rs:388, 404` — "New Oz cloud
agent conversation" / "New Oz agent conversation". Zero-state copy is not
covered by issue #1063 and must not be touched in this PR.
- "Oz changelog" toggle labels in `ai_page.rs` (`OtherAIWidget`) are kept as
"Oz changelog" because they refer to Oz platform release notes, not the
in-app agent.
## Proposed changes
1. `app/src/settings_view/mod.rs`
- Rename `SettingsSection::Oz` variant to `SettingsSection::WarpAgent`.
- In the `Display` impl, the `WarpAgent` arm writes `"Warp Agent"`.
- In the `FromStr` impl, accept both `"Oz"` (backward-compat legacy name)
and `"Warp Agent"` as parseable forms that map to
`SettingsSection::WarpAgent`, per Behavior #8 in `product.md`.
- Update `is_ai_subpage`, `ai_subpages()`, and the two default-subpage
fallbacks (`SettingsSection::AI => SettingsSection::WarpAgent`) to use the
new variant name.
- Leave `SettingsSection::OzCloudAPIKeys` and its `"Oz Cloud API Keys"`
display untouched. Do not alter the `"Agents"` umbrella name or subpage
order.
- Update the doc-comment on `SettingsSection::AI` to reference `WarpAgent`.
2. `app/src/settings_view/ai_page.rs`
- Rename `AISubpage::Oz` variant to `AISubpage::WarpAgent`; update
`AISubpage::from_section` and the `build_page` match arm accordingly.
- In `GlobalAIWidget::render`, replace `Text::new_inline("Oz", ...)` with
`Text::new_inline("Warp Agent", ...)`. Keep every other argument, style,
alignment, and layout constant.
- In `GlobalAIWidget::search_terms`, keep existing terms (including `"oz"`
for legacy muscle memory, allowed by Behavior #7) and keep `"warp agent"`
so the new label is directly searchable.
- Replace all remaining user-visible description strings that referenced
"Oz" or "Oz agent" with "the Warp Agent" / "Warp Agent" as appropriate.
Specifically: command denylist/allowlist descriptions, base model
description, codebase context description, MCP zero-state and
allowlist/denylist descriptions, Rules description, Warp Drive context
description, API keys description, and MCP servers description.
- Preserve the two "Oz changelog" toggle labels in `OtherAIWidget` and
`SettingActionPairDescriptions` unchanged — these refer to Oz platform
release notes, not the in-app agent.
3. `crates/onboarding/src/slides/agent_slide.rs`
- `render_header`: change paragraph text from `"Customize your Agent, Oz"`
to `"Customize your Warp Agent"`. Keep font size, weight, layout, and
surrounding subtitle unchanged.
- `render_disable_oz_section`: change checkbox label from `"Disable Oz"` to
`"Disable Warp Agent"`. Keep styling, spacing, `disable_oz_mouse` state
handle, and the dispatched `AgentSlideAction::ToggleDisableOz` action
unchanged.
- Internal identifiers (`disable_oz_mouse`, `disable_oz` field on
`AgentDevelopmentSettings`, `AgentSlideAction::ToggleDisableOz`,
`render_disable_oz_section` function name) are kept as-is to avoid
migration risk for persisted settings and telemetry.
4. Navigation call-sites (approximately 15 files)
- All `SettingsSection::Oz` references in navigation actions, workspace
dispatch, settings page helpers, and editable bindings are updated to
`SettingsSection::WarpAgent`. Affected files include:
`app/src/ai/blocklist/agent_view/agent_input_footer/mod.rs`,
`app/src/ai/blocklist/block.rs`,
`app/src/ai/blocklist/block/cli.rs`,
`app/src/ai/blocklist/block/view_impl.rs`,
`app/src/ai/blocklist/block/view_impl/common.rs`,
`app/src/ai/blocklist/block/view_impl/output.rs`,
`app/src/ai/blocklist/prompt/prompt_alert.rs`,
`app/src/settings_view/billing_and_usage_page.rs`,
`app/src/terminal/input.rs`,
`app/src/terminal/input/inline_history/view.rs`,
`app/src/terminal/input/models/data_source.rs`,
`app/src/terminal/input/models/view.rs`,
`app/src/terminal/profile_model_selector.rs`,
`app/src/terminal/view.rs`,
`app/src/workspace/mod.rs`,
`app/src/workspace/view.rs`.
## Testing and validation
Runtime checks:
- `cargo fmt` and `cargo clippy --workspace --all-targets --all-features --tests
-- -D warnings` must pass (per `WARP.md` PR workflow).
- `cargo nextest run -p warp_app --no-fail-fast` or the relevant subset covering
`settings_view::mod_test` must pass. The Display test asserts
`SettingsSection::WarpAgent.to_string() == "Warp Agent"`. The `FromStr` test
covers both `"Oz"` and `"Warp Agent"` resolving to
`SettingsSection::WarpAgent`, exercising Behavior #8. All helper tests
(`is_ai_subpage`, `ai_subpages_list_contains_all_ai_subpage_variants`,
filter/visibility tests) are updated to reference `SettingsSection::WarpAgent`.
Existing tests for `OzCloudAPIKeys` are left untouched to guard against
accidentally renaming the cloud subpage.
- `cargo nextest run -p onboarding` (if a test crate exists for the onboarding
slide strings; otherwise, this rename is a pure string change and manual
verification below suffices).
Behavior-to-verification mapping (from `product.md`):
- Behavior #1, #2, #3, #9: manually open the settings UI and confirm the
sidebar entry reads "Warp Agent", the subpage renders unchanged content, the
heading above the global toggle reads "Warp Agent", and the "Oz Cloud API
Keys" entry under "Cloud platform" still reads "Oz Cloud API Keys".
- Behavior #4: toggle the global AI switch and verify it still enables and
disables AI features as before.
- Behavior #5, #6, #10: launch onboarding (or jump to the agent slide via the
existing onboarding test fixtures) and confirm the title, subtitle, disable
checkbox label, autonomy options, and step progress are all correct.
- Behavior #7: search within the settings modal using each of
`"warp agent"`, `"ai"`, `"agent"`, `"oz"` (should still reach the subpage) and
`"oz cloud"` (should reach the cloud subpage only).
- Behavior #8: confirm both `"Oz"` and `"Warp Agent"` resolve to
`SettingsSection::WarpAgent` via the `FromStr` round-trip test.
- Behavior #11: no automated accessibility test exists for these labels; manual
verification on macOS VoiceOver is sufficient since the visible text is the
accessible label.
- Behavior #12: toggle the `OpenWarpNewSettingsModes` feature flag and confirm
the disable row only appears when enabled and always reads "Disable Warp
Agent" when it does appear.
Manual verification artifacts:
- Screenshots of (a) settings sidebar with the "Agents" umbrella expanded,
(b) the AI settings page heading, and (c) the onboarding agent slide in both
feature-flag states.
- After implementation, invoke the `verify-ui-change-in-cloud` skill per the
repository rule for user-facing client changes.
## Risks and mitigations
- Risk: external deep links or persisted telemetry strings reference `"Oz"` and
break. Mitigation: `FromStr` accepts both `"Oz"` and `"Warp Agent"` mapping to
`SettingsSection::WarpAgent`, and the legacy `"oz"` search term is preserved so
`oz`-based search still lands on the subpage.
- Risk: accidentally renaming cloud Oz surfaces. Mitigation: grep for `"Oz"`
literals confirms `harness_selector.rs`, `zero_state_block.rs`, and
`OzCloudAPIKeys` are untouched. The "Oz changelog" toggle labels are
explicitly preserved.
- Risk: stale comments inside `agent_slide.rs` that still reference "Disable Oz"
mislead future readers. Mitigation: internal identifiers (`disable_oz_mouse`,
`AgentSlideAction::ToggleDisableOz`, etc.) intentionally retain the `oz` name;
comments describing them are acceptable to leave as-is per `WARP.md`.
## Follow-ups
- `SettingsSection::Oz` and `AISubpage::Oz` enum variant renames have been
completed as part of this implementation.
- Internal identifiers (`disable_oz` setting field,
`AgentSlideAction::ToggleDisableOz`, `render_disable_oz_section`,
`disable_oz_mouse`, and related settings/telemetry keys) are intentionally
kept as-is. They require more care around persisted settings, telemetry event
names, and potentially GraphQL/analytics schemas.
- The broader zero-state and blocklist strings that still say "Oz agent" (e.g.,
in `zero_state_block.rs`) should be revisited in a follow-up issue once
product confirms which of those belong to the in-app agent vs. the cloud agent
orchestration platform.