From 71779020b4fe33d4d59a27d003f91aaa50e043a2 Mon Sep 17 00:00:00 2001 From: Dan Shapiro Date: Sat, 28 Feb 2026 11:06:11 -0800 Subject: [PATCH 1/6] docs: update freshell-orchestration skill with auth token location and picker pane warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The skill previously said FRESHELL_TOKEN="" with no hint where to find it — now reads it from .env where it actually lives. Also documents picker panes as ephemeral and warns against targeting them for layout mutations. Co-Authored-By: Claude Opus 4.6 --- .claude/skills/freshell-orchestration/SKILL.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.claude/skills/freshell-orchestration/SKILL.md b/.claude/skills/freshell-orchestration/SKILL.md index 2bb604e7..98d3d81f 100644 --- a/.claude/skills/freshell-orchestration/SKILL.md +++ b/.claude/skills/freshell-orchestration/SKILL.md @@ -17,7 +17,7 @@ Point commands at the running Freshell server: ```bash export FRESHELL_URL="http://localhost:3001" -export FRESHELL_TOKEN="" +export FRESHELL_TOKEN="$(grep AUTH_TOKEN /home/user/code/freshell/.env | cut -d= -f2)" $FSH health ``` @@ -28,7 +28,8 @@ Use absolute paths for `--cwd` and `--editor`. - Freshell CLI is an HTTP client over `/api/*`, not a local tmux socket client. - Tabs and pane trees live in `layoutStore`. - Terminal lifecycle + scrollback live in `terminalRegistry`. -- Pane kinds: `terminal`, `editor`, `browser`. +- Pane kinds: `terminal`, `editor`, `browser`, `agent-chat` (Claude/Codex), `picker` (transient). +- **Picker panes are ephemeral.** A freshly-created tab without `--mode`/`--browser`/`--editor` starts as a `picker` pane while the user chooses what to launch. Once they select, the picker is replaced by the real pane with a **new pane ID**. Never target a `picker` pane for splits or other mutations — wait until it resolves to its final kind, or use `--mode`/`--browser`/`--editor` flags on `new-tab`/`split-pane` to skip the picker entirely. - Typical loop: `new-tab/split-pane` -> `send-keys` -> `wait-for` -> `capture-pane`/`screenshot-*`. ## Command reference From 061229c2a231b9eec32628af2f9cd906e6a71bb7 Mon Sep 17 00:00:00 2001 From: Dan Shapiro Date: Sat, 28 Feb 2026 16:14:12 -0800 Subject: [PATCH 2/6] docs: add implementation plan for escape interrupt fix --- docs/plans/2026-02-28-fix-escape-interrupt.md | 299 ++++++++++++++++++ 1 file changed, 299 insertions(+) create mode 100644 docs/plans/2026-02-28-fix-escape-interrupt.md diff --git a/docs/plans/2026-02-28-fix-escape-interrupt.md b/docs/plans/2026-02-28-fix-escape-interrupt.md new file mode 100644 index 00000000..777dcfa6 --- /dev/null +++ b/docs/plans/2026-02-28-fix-escape-interrupt.md @@ -0,0 +1,299 @@ +# Fix Escape Key Not Interrupting Freshclaude Agent Chat + +> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. + +**Goal:** Make the Escape key reliably interrupt a running Freshclaude agent chat session, regardless of which element inside the agent-chat pane has focus. + +**Architecture:** Move the Escape-to-interrupt handler from the `