Skip to content

Add /resume TUI slash command as an alias of /conversations (APP-5241) - #14823

Draft
warp-agent-staging[bot] wants to merge 1 commit into
masterfrom
factory/app-5241-resume-slash-command
Draft

Add /resume TUI slash command as an alias of /conversations (APP-5241)#14823
warp-agent-staging[bot] wants to merge 1 commit into
masterfrom
factory/app-5241-resume-slash-command

Conversation

@warp-agent-staging

Copy link
Copy Markdown
Contributor

Description

Adds a /resume slash command to the Warp Agent CLI / headless TUI that opens the existing conversation history picker — the same UI already reachable via left-arrow on empty input and via /conversations.

The agent CLI already has a left-arrow convention for resuming prior conversations (the zero-state hint reads ← for conversations), but /resume is a more discoverable, more intuitive entrypoint.

Implemented as a thin alias, following the /clear/agent precedent (a distinct SlashCommandKind sharing the existing handler arm):

  • New SlashCommandKind::Resume and a RESUME StaticCommand (TuiOnly, AI_ENABLED, no argument, description "Resume a previous conversation (alias for /conversations)"), registered in the command list so it is discoverable via the slash-command fuzzy filter.
  • SlashCommandKind::Resume joins the existing SlashCommandKind::Conversations arm in the TUI execute_tui_slash_command, so it opens the very same conversation_menu. No new picker, no new filtering, no new restore path.
  • The GUI dispatch match lists Resume in its TUI-only bucket.

Surface choice: TuiOnly. The request is specifically about the agent CLI, the GUI already exposes /conversations (with a cmd-y / ctrl-shift-Y binding), and this matches the /clear alias precedent, which is likewise a TUI-only alias of a GuiAndTui command.

Linked Issue

APP-5241 — TUI: add a /resume slash command as an alias of /conversations

Originating Slack thread: https://warpdev.slack.com/archives/C0BDQDW8V5E/p1786109186548789

  • Where appropriate, screenshots or a short video of the implementation are included below.

Testing

  • I have manually tested my changes end to end in a live, signed-in TUI (see below).

Automated tests added

  • resume_command_is_registered_only_for_tui_mode (app/.../static_commands/commands_tests.rs) — /resume is registered on the TUI surface and absent from the GUI surface.
  • resume_command_mirrors_conversations_registry_metadata (same file) — asserts the name, TuiOnly surface, no GUI icon, the description, no argument, and that availability / auto_enter_ai_mode / argument are identical to CONVERSATIONS, so the alias can't drift from the command it aliases.
  • resume_slash_command_opens_the_same_conversation_picker_as_conversations (crates/warp_tui/src/terminal_session_view_tests.rs) — typing /resume parses to a static slash command, and executing it opens the conversation menu (TuiInputSuggestionsMode::ConversationMenu), clears the input, and renders the Conversations picker.

Checks run

  • ./script/format — clean.
  • cargo clippy -p warp -p warp_tui --all-targets --tests -- -D warnings — clean.
  • cargo nextest run -p warp --lib slash_command — 127 passed.
  • cargo nextest run --no-fail-fast -p warp_tui — 958 passed, 1 failed. The single failure is session::tests::accepts_startup_without_resume, which is pre-existing and environmental, not caused by this change: it asserts args.api_key == None, but clap reads api_key from WARP_API_KEY, which the sandbox sets. It passes under env -u WARP_API_KEY (verified).

Screenshots / Videos

Captured against a live, signed-in internal local warp-tui build, driven under tmux and recorded.

  1. Slash-command menu — typing /resume surfaces the command with the description "Resume a previous conversation (alias for /conversations)". (still)
  2. Conversation picker — executing it opens the existing Conversations inline menu, populated with real history. (still)
  3. Restore — selecting an entry restores that conversation's transcript via the existing restore path. (still)

Deterministic tmux capture-pane frames of the three states:

  /resume                      Resume a previous conversation (alias for /conversations)
  ▏ > /resume
  Conversations
  Simple Math Query Response
  Simple Arithmetic Question
  Simple Arithmetic Question
  Identify Capital Of France
  Identify Capital City
  Identify Capital Of Japan
  > what is the capital of Japan?

  Tokyo.

  ∷ 3s

How the proof was captured (honest disclosure). The sandbox's internal local TUI could not start because staging IAP failed before user authentication (Staging IAP access unavailable before startup user authentication). To get the TUI past startup, the IAP fix from the separate, not-yet-merged PR #14796 (factory/app-5220-nonfatal-iap-local) was applied to the local working tree only. It was not committed or pushed: this branch's committed diff is exactly the six files listed above and contains no IAP changes (app/src/lib.rs and app/src/lib_tests.rs were reverted before pushing). The /resume code exercised is exactly this PR's code, but the run did require #14796's fix locally to reach a startable TUI.

Agent Mode

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

CHANGELOG-TUI: Added a /resume slash command that opens your conversation history, as an alias of /conversations.
CHANGELOG-IMPROVEMENT: Added a /resume slash command to the Warp Agent CLI that opens your conversation history to resume a prior conversation.

Computer-use video recordings

View video recording - APP-5241 visual proof (video, 25s): signed-in warp-tui local build — typing /resume surfaces it in the slash-command menu, executing it opens the Conversations picker, and selecting an entry restores that conversation.

Conversation: https://staging.warp.dev/conversation/f32fb95c-1e93-4f65-8810-17ec48ba3f69
Run: https://oz.staging.warp.dev/runs/019fdc6d-b855-7dfe-9158-a47633c2efd3

This PR was generated with Oz.

The agent CLI already resumes prior conversations via left-arrow on empty
input and /conversations. /resume is a more intuitive entrypoint for the
same picker.

Registers a TuiOnly RESUME static command that dispatches to the existing
conversation menu, following the /clear -> /agent alias precedent. No new
picker or restore path.

Co-Authored-By: Warp Agent <agent@warp.dev>
@cla-bot cla-bot Bot added the cla-signed label Aug 7, 2026
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.

1 participant