<div align="center">

# Pi Prompt Restore

_Accidentally hit Ctrl+C instead of Ctrl+V? Get your prompt back with Up arrow._

[How It Works](#how-it-works) • [Installation](#installation) • [Usage](#usage)

</div>

Saves your in-progress prompt whenever Ctrl+C clears the editor, so a mistyped
paste shortcut doesn't cost you five minutes of careful prompt-crafting. Press
**Up arrow** to recover it — press Up again for normal history.

## How It Works

```
User types a prompt in the editor
        │
        ▼
Ctrl+C pressed ──────────────────────────┐
        │                                │
        ▼                                ▼
  index.ts handleInput               Built-in clear
  (intercepts "ctrl+c")              fires and wipes
        │                            the editor
        ▼
  savedPrompt = this.getText()
        │
        ▼
User presses Up (editor empty) ────► savedPrompt restored
        │                            savedPrompt cleared
        ▼
User presses Up again ─────────────► normal history recall
```

| Key                      | Without extension                                | With Prompt Saver                                                   |
| ------------------------ | ------------------------------------------------ | ------------------------------------------------------------------- |
| **Ctrl+C**               | Clears the editor. Text is gone forever.         | Text is saved silently, then the editor clears as usual.            |
| **Up** (editor empty)    | Recalls the last submitted message from history. | Restores the saved prompt first. Press Up again for normal history. |
| **Up** (editor has text) | Moves cursor up.                                 | Moves cursor up (unchanged).                                        |

- Each Ctrl+C overwrites the previous save — you always recover the **most recently** cleared prompt.
- Copy (Ctrl+C with a selection) still copies to the clipboard; the full text is also saved as a harmless side effect.
- The saved prompt is **not persisted** across sessions — it lives only until the next Ctrl+C or pi restart.

## Installation

### Via npm

```bash
pi install npm:pi-prompt-restore
```

### Manual

Clone or copy into your pi extensions directory:

```bash
cp -r pi-prompt-restore ~/.pi/agent/extensions/pi-prompt-restore
```

Then run `/reload` in pi, or restart pi. The extension loads automatically from `~/.pi/agent/extensions/`.

## Usage

No commands, no configuration — just type.

1. Type a prompt.
2. Accidentally press **Ctrl+C** (editor clears).
3. Press **Up arrow** — your prompt is restored.
4. Press **Up arrow** again to browse normal history.

## Compatibility

- Works in interactive (**TUI**) mode only.
- Compatible with other extensions that don't replace the editor. If another
  extension also calls `setEditorComponent`, the last one loaded wins.

## License

MIT
