Skip to content

Add Warp Agent CLI launch modal - #14733

Merged
kevinyang372 merged 6 commits into
masterfrom
factory/app-5183-agent-cli-launch-modal
Aug 5, 2026
Merged

Add Warp Agent CLI launch modal#14733
kevinyang372 merged 6 commits into
masterfrom
factory/app-5183-agent-cli-launch-modal

Conversation

@warp-agent-staging

@warp-agent-staging warp-agent-staging Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Description

Adds a one-time launch modal announcing the Warp Agent CLI, built on the existing launch-modal pattern (.agents/skills/gui-create-launch-modal) used by the orchestration / OpenWarp / Oz modals.

The card follows the Figma mock (Factory-Launch, node 731-18312, frame "Modal-1"): a 720×440 two-column card instead of the existing hero-on-top 420-wide layout.

  • Left column (360px, 32px padding): New badge → headline → two feature rows (icon + bold lead-in + body) → full-width Get started button pinned to the bottom.
  • Right column (360px): full-bleed hero image, flush to the card's top/right/bottom edges with the card's corner radius.
  • Get started opens https://docs.warp.dev/cli/quickstart/, then dismisses the modal and marks it seen.
  • Colors come from Warp theme tokens (surface_3, main_text_color, sub_text_color, foreground/background for the CTA) and the terminal magenta accent for the badge — no hardcoded hex.
  • Feature-row icons reuse existing Icon variants (LayoutAlt01, Inbox), which are the closest matches to the glyphs in the mock. No new SVGs were added.

Wiring mirrors the other launch modals:

  • FeatureFlag::AgentCliLaunchModal (+ DOGFOOD_FLAGS, app cargo feature agent_cli_launch_modal).
  • Private, cloud-synced did_check_to_trigger_agent_cli_launch_modal in AISettings so it shows at most once per user across devices.
  • OneTimeModalModel trigger inserted into check_and_trigger_all_modals after the orchestration modal, plus new-user pre-dismissal in the AuthComplete !is_existing_user branch, is_any_modal_open, and a debug force-open.
  • Debug palette actions [Debug] Open Warp Agent CLI Launch Modal and [Debug] Reset Warp Agent CLI Launch Modal State.
  • Dismiss paths: the Get started CTA, Escape, and an X in the top-right (the mock omits an X, but the other launch modals all have one).

Note on the hero asset

app/assets/async/png/onboarding/agent_cli_launch_banner.png is 720×880 — 2× its 360×440 slot, matching orchestration_launch_banner.png's 2× and double openwarp_launch_banner.png's 1×. It was captured from the view-only Figma file (which disables layer selection and native export), re-captured at 320% zoom as a stitched 1150×1407 source and downscaled into the 2× slot. If the designer's exported original is available it's still worth swapping in, but the checked-in asset is at the directory's quality bar.

Linked Issue

APP-5183 — Add Warp Agent CLI launch modal to the Warp client

Testing

Automated:

  • Regression tests in app/src/workspace/one_time_modal_model_tests.rs:
    • agent_cli_launch_modal_shows_at_most_once — the seen marker is written up front, a second trigger is a no-op, and it stays a no-op after dismissal.
    • agent_cli_launch_modal_skipped_when_flag_disabled — with the flag off the trigger does nothing and the seen marker is left untouched, so the modal can still show once the flag is turned on.
    • agent_cli_launch_modal_pre_dismissed_for_new_users_on_auth_complete — drives a real AuthManagerEvent::AuthComplete for a non-onboarded user and asserts the seen marker is set, so a fresh signup never sees the modal on their second startup.
  • Both behavioral tests were confirmed to have teeth: removing the seen-marker write fails ..._shows_at_most_once, and removing the pre-dismissal fails ..._pre_dismissed_for_new_users_on_auth_complete. Each passes again once restored.
  • cargo nextest run -p warp one_time_modal → 8 passed.
  • ./script/format + cargo fmt --all -- --check → clean.
  • cargo clippy -p warp -p warp_features --all-targets --tests -- -D warnings → clean.
  • cargo build --bin warp-oss --features gui → clean.

Manual (computer use, Linux dev build):

  • Built and ran ./target/debug/warp-oss, opened the command palette, ran [Debug] Open Warp Agent CLI Launch Modal, and compared the rendered modal against the Figma frame: badge, headline, both feature rows, CTA label/width/position, hero placement and wordmark all match.

  • Clicked Get started and confirmed it opens https://docs.warp.dev/cli/quickstart/ (the "Warp Agent CLI quickstart" page) and closes the modal. Escape also closes it.

  • I have manually tested my changes locally

Rework changes

Addressing @kevinyang372's review (commit 760ad9c):

  • Get started should open the CLI quickstart docs — implemented. Added a dedicated AgentCliLaunchModalAction::GetStarted that calls ctx.open_url("https://docs.warp.dev/cli/quickstart/") and then emits Close, rather than reusing the plain Close action. Verified in the running client; recording below. This also resolves the "CTA destination" open question that was previously called out in this description.
  • Hero PNG looked lower quality — improved. It was already 2× its slot (the same scale as orchestration_launch_banner), but its source was a 686×855 screen capture upscaled to 720×880. Re-captured from Figma at 320% as a stitched 1150×1407 image and downscaled into the same 720×880 slot: 1.49× the high-frequency detail (mean Laplacian energy 309 → 461) and 80 KB smaller (490 KB → 410 KB), with no layout change.
  • Should we retire a previous launch modal? — answered on the thread with per-modal asset costs (Oz's 4 slides are ~2.7 MB, ~78% of all launch-modal asset weight; Orchestration 333 KB; OpenWarp 69 KB). That's a product call and would be an unrelated user-visible removal inside this PR, so nothing was deleted here and the thread is left open. Happy to do it as a follow-up.
  • Tests only covered the standalone trigger helper, not the AuthComplete branch — added agent_cli_launch_modal_pre_dismissed_for_new_users_on_auth_complete, which emits the real event for a non-onboarded user and asserts the seen marker is written.

Screenshots / Videos

Computer-use video recording (1)

Opening the Warp command palette, running the Debug Open Warp Agent CLI Launch Modal entry, the modal appearing, clicking Get started, the modal closing, and the Chromium browser opening the Warp Agent CLI quickstart documentation page.
Get started opens the CLI quickstart docs: opening the command palette, running [Debug] Open Warp Agent CLI Launch Modal, the modal appearing, clicking Get started, the modal closing, and the browser opening the Warp Agent CLI quickstart page.

Computer-use screenshots (4)

The Warp Agent CLI Launch Modal open over the terminal, showing the "Introducing the Warp Agent CLI" text on the left and the hero image on the right with a "Get started" button.
The modal as shipped — rendered over the terminal in the running client, with the sharpened hero.

Chromium browser showing docs.warp.dev/cli/quickstart/ with the Warp Agent CLI quickstart documentation page loaded.
After clicking Get started — the browser lands on https://docs.warp.dev/cli/quickstart/.

Zoomed Figma canvas (320%) showing the hero panel during capture: terminal, laptop, aurora gradient, and the "warp agent cli" wordmark, with a "720 × 440" frame size tag.
Figma reference — the "Modal-1" frame (node 731-18312) the implementation was compared against.

Finalized stitched hero image (agent_cli_hero_hires.png, 1150×1407) in the browser — clean full panel with laptop, aurora gradient, terminal, and complete "warp agent cli" wordmark; no seam and no guide lines.
Re-captured hero source — the 1150×1407 stitch that the committed 720×880 asset is downscaled from.

Agent Mode

  • Warp Agent Mode - This PR was created via Warp's AI Agent Mode

Originating thread: https://warpdev.slack.com/archives/C0BDQDW8V5E/p1785944092233829

Conversation: https://staging.warp.dev/conversation/8fed9083-310e-4c36-8b18-b2288fe81502
Run: https://oz.staging.warp.dev/runs/019fd29e-2877-7d7b-8b46-c736f6f5ccf8

This PR was generated with Oz.

Adds a one-time launch modal announcing the Warp Agent CLI, following the
established launch-modal pattern (feature flag, cloud-synced seen setting,
OneTimeModalModel trigger, debug force-open/reset actions).

The card is a 720x440 two-column layout to match the design: copy on the
left (New badge, headline, two feature rows, full-width "Get started"
button) and a full-bleed hero on the right.

Co-Authored-By: Warp <agent@warp.dev>
Co-Authored-By: Warp Agent <agent@warp.dev>
@cla-bot cla-bot Bot added the cla-signed label Aug 5, 2026
@warp-agent-staging warp-agent-staging Bot added the warpy-factory Label associated to the "Wob the Wuilder" factory on staging, also known as Warpy Factory. label Aug 5, 2026
@warp-agent-staging
warp-agent-staging Bot marked this pull request as ready for review August 5, 2026 18:01

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This png looks lower quality -- how does its resolution compared to other launch image assets we have? Also should we retire the previous launch modal so we could free up bundled assets?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch on both counts — numbers first.

Resolution vs the other launch assets. Every launch banner is authored at 2x its on-screen slot, and this one already was:

asset file slot scale
openwarp_launch_banner.png 420x92 (69 KB) 420x92 1.0x
orchestration_launch_banner.png 840x184 (333 KB) 420x92 2.0x
auto_handoff_sleep_banner.png 840x184 (123 KB) 420x92 2.0x
agent_cli_launch_banner.png (this PR) 720x880 360x440 2.0x

So the scale was never the problem — at 0.63 MP it's the largest launch banner in onboarding/. The softness you spotted was in the source: the Figma file is view-only, which disables layer selection and native export, so I had screen-captured the panel at 686x855 and upscaled it to 720x880. That upscale is exactly what made it look mushy next to the others.

What I changed (760ad9c). I re-captured from Figma at 320% zoom as two vertically-stitched tiles — 1150x1407, ~2.76x the pixels of the old source — and downscaled that to the same 720x880 slot. Same dimensions, no layout change, and it's both sharper and smaller:

  • high-frequency detail (mean Laplacian energy): 309 -> 461, a 1.49x improvement
  • file size: 490 KB -> 410 KB

The terminal text on the laptop screen is legibly crisper now. It's still a screen re-capture rather than a designer export, so if anyone can hand me the exported original I'd still swap it in — but it's no longer below the bar for the directory.

On retiring a previous launch modal. Facts, since this is worth deciding on real numbers. Four launch modals ship today, and all four cargo features are in app's default list, so enabled_features() turns all four flags on in a default build:

modal assets bundled cost
Oz (launch_modal/, 4 slides) oz_cloud_agents, oz_launch_credits, oz_agent_management, oz_agent_automations (1086x710 each) ~2.7 MB
Orchestration 1 333 KB
Agent CLI (this PR) 1 410 KB
OpenWarp 1 69 KB

The Oz launch modal is ~78% of all launch-modal asset weight — retiring it would free roughly 6.5x what this PR adds, and far more than retiring Orchestration or OpenWarp. It's also the only one still listed in DOGFOOD_FLAGS.

That said, whether any of these has finished its run is a product call, not mine, and deleting another feature's modal would put an unrelated user-visible removal inside this PR. So I haven't touched them. Leaving this thread open for you — if you want the Oz modal (or Orchestration) retired, I'm happy to do it as a follow-up PR where it can be reviewed on its own merits.

Comment thread app/src/workspace/view/agent_cli_launch_modal/view.rs Outdated
warp-agent and others added 4 commits August 5, 2026 21:08
… new-user path

- "Get started" now opens https://docs.warp.dev/cli/quickstart/ before
  dismissing, via a dedicated GetStarted action.
- Re-captured the hero from Figma at 320% and downscaled to the same 2x
  720x880 slot. Same dimensions, 1.49x the high-frequency detail, and
  80KB smaller (490KB -> 410KB).
- Added coverage for the AuthComplete new-user branch, which pre-dismisses
  the modal so fresh signups never see it on their second startup.

Co-Authored-By: Warp <agent@warp.dev>
Co-Authored-By: Warp Agent <agent@warp.dev>
@kevinyang372
kevinyang372 enabled auto-merge (squash) August 5, 2026 22:38
@kevinyang372
kevinyang372 merged commit 668f4f3 into master Aug 5, 2026
27 checks passed
@kevinyang372
kevinyang372 deleted the factory/app-5183-agent-cli-launch-modal branch August 5, 2026 22:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla-signed warpy-factory Label associated to the "Wob the Wuilder" factory on staging, also known as Warpy Factory.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants