Files
galaxy/specs/APP-3781/PRODUCT.md
T

97 lines
5.5 KiB
Markdown

# APP-3781: Move Plugin Installation Instructions into a Split Pane
Linear: [APP-3781](https://linear.app/warpdotdev/issue/APP-3781/move-plugin-installation-settings-into-a-dedicated-pane)
## Summary
Replace the blocking modal that shows CLI agent plugin install/update instructions with a split terminal pane containing a specialized zero state block. The pane is a real terminal session, so the user can read the instructions and run the commands without switching context.
## Problem
The current plugin install/update instructions are shown in a modal overlay that blocks the entire screen. The user must:
1. Read a step in the modal
2. Copy the command
3. Close the modal
4. Paste the command into the terminal
5. Re-open the modal to see the next step
This is particularly frustrating because the instructions involve multiple sequential commands that the user needs to run in their terminal.
## Goals
- Show plugin install/update instructions in a side-by-side terminal pane instead of a blocking modal.
- Let the user run the instruction commands directly in the new pane without context switching.
- Preserve the existing "copy" affordance for each command step.
- Apply to both install and update instruction flows.
## Non-goals
- Changing the auto-install/auto-update behavior (the one-click install/update chip continues to work as before).
- Modifying the instruction content itself (titles, subtitles, step descriptions, commands remain unchanged).
- Adding "run in terminal" buttons that auto-execute commands — the user pastes/types them manually.
## User Experience
### Entry point
The entry points remain the same buttons in the CLI agent toolbar:
- The install chip (when in the instructions state) → opens install instructions pane.
- The update chip (when in the instructions state) → opens update instructions pane.
### What happens on click
1. A new terminal pane opens as a split in the current tab (using smart split direction, like env var panes do). This is always a terminal pane, not an agent pane, even if the user's default mode for new sessions is Agent Mode.
2. A specialized zero state block is rendered at the top of the new terminal's block list, displaying the plugin instructions.
3. The terminal session in the new pane is fully functional — the user can type and run commands.
### Instructions block content
The instructions block renders the same information as the current modal:
- **Title** (e.g., "Install Warp Plugin for Claude Code")
- **Subtitle** (e.g., "Ensure that jq is installed on your machine. Then, run these commands inside your Claude Code session.")
- **Numbered steps**, each with:
- A step number in a circular badge
- A text description of the step
- A code block with the command and a copy-to-clipboard button
The visual style should match the existing terminal zero state block pattern: bordered container with terminal-consistent styling. Step rendering reuses the same code block rendering pattern from the modal (the `render_code_block_plain` helper).
### Dismissing the instructions block
The instructions block has a close button (X) in the top-right corner. Clicking it hides the block. The instructions block persists across commands — it does not auto-dismiss when the user runs a command, since the user may be following the multi-step instructions in that pane.
### Closing the pane
The user can close the instructions pane like any other split pane (via the pane close button, keyboard shortcut, etc.). No special cleanup is needed.
### Modal removal
The modal (`PluginInstallModal`) is removed entirely. All references to `is_plugin_install_modal_open` in workspace state are cleaned up.
## Edge Cases
1. **Single-pane tab**: If the tab has only one pane, the split creates a second pane. The instructions block appears in the new (right/bottom) pane.
2. **Already-split tab**: The new instructions pane is added as a sibling of the focused pane in the smart split direction, consistent with how env var panes split.
3. **Multiple instruction requests**: Clicking the instructions button again always opens a new split pane (no deduplication).
4. **Pane closed, re-requested**: If the user closes the instructions pane and clicks the button again, a new instructions pane is created from scratch.
## Success Criteria
1. Clicking the info (ⓘ) button next to the install/update chip opens a split terminal pane, not a modal overlay.
2. The new pane shows a zero state block with the full plugin instructions (title, subtitle, numbered steps with copy-able commands).
3. The user can type and run commands in the new pane while the instructions block is visible.
4. The instructions block persists until the user clicks the close (X) button on it.
5. The copy button on each step copies the command to the clipboard and shows a "Copied to clipboard" toast.
6. The modal overlay (`PluginInstallModal`) is fully removed from the codebase.
7. Both install and update instruction flows use the new split pane behavior.
## Validation
- **Manual test**: Click the install info button → verify a split pane appears with instructions. Copy a command → verify clipboard. Run a command in the pane → verify the instructions block remains visible. Click the close (X) button on the block → verify it disappears. Close the pane → verify clean closure.
- **Both flows**: Verify both install and update info buttons open the pane with the correct instructions.
- **Compile check**: Verify no remaining references to the removed modal types.
## Open Questions
(None outstanding.)