Land staged session/MCP/chrome work + sidebar clear-J fix
This batches the in-flight [Unreleased] block from CHANGELOG.md into a single commit. Highlights: - Real MCP protocol layer (initialize / tools/list / tools/call) so vendor MCP clients can complete the handshake against the per-PID socket. Legacy direct-dispatch preserved for the harness. - New mcp_injection kinds — cli_override for codex, config_env for opencode — joining the existing env-var and config_file paths so patterm can slot into more agents without touching their real config or auth. - Ctrl+A/D and Ctrl+W/S focus navigation across tabs and intra-tab process lists, recognised in legacy / kitty CSI u / xterm modifyOtherKeys encodings. - Palette macros (sw / k / sp ) and reordering so open sessions surface above spawn-new entries. - Two-row tab bar, sidebar/tabbar/status chrome cache, viewport-wipe on agent spawn, CR-terminated orchestrator injections, and split- Enter PTY writes so paste-detecting TUIs see Enter as a key event. Also fixes the bug logged in TODO: claude's Ctrl+O tool-call expansion emits CSI 0 J, which the viewport renderer was forwarding verbatim — wiping the sidebar to the right of the cursor and leaving the chrome cache convinced nothing had changed. CSI 0 J and CSI 1 J are now translated into per-row ECH sequences clamped to the viewport, same as CSI 2 J and CSI K already were. Agent guides (CLAUDE.md / AGENTS.md) now spell out the TODO->CHANGELOG workflow so completed items land in the changelog rather than as ticked entries left behind in TODO.
This commit is contained in:
23
CLAUDE.md
23
CLAUDE.md
@@ -95,6 +95,29 @@ PATTERM_BIN=/absolute/path/to/patterm go test ./internal/harness/...
|
||||
|
||||
Without `PATTERM_BIN`, harness tests build the current checkout once into a temp location and test that binary.
|
||||
|
||||
## Changelog
|
||||
|
||||
User-visible changes go in `CHANGELOG.md` (Keep-a-Changelog format).
|
||||
When finishing work that affects users — new MCP tools, palette
|
||||
behavior, preset shapes, host chrome, anything observable — add a
|
||||
bullet under `[Unreleased]` in the appropriate `Added` / `Changed` /
|
||||
`Fixed` / `Removed` section. The TODO file is scratch space, not
|
||||
history; the changelog is the record.
|
||||
|
||||
When a `TODO.md` item is actioned (bug fixed, behavior changed,
|
||||
feature shipped), the resolution belongs in `CHANGELOG.md` — not as
|
||||
a "done" entry left in `TODO.md`. Workflow:
|
||||
|
||||
1. Land the code change.
|
||||
2. Add a `[Unreleased]` bullet in `CHANGELOG.md` describing what the
|
||||
user will now experience differently.
|
||||
3. Remove the corresponding item from `TODO.md` (don't tick it off
|
||||
and leave it behind — `TODO.md` only lists outstanding work).
|
||||
|
||||
If a TODO item turns out to be a non-issue or gets dropped without a
|
||||
code change, just delete it from `TODO.md`; no changelog entry is
|
||||
needed.
|
||||
|
||||
## Development Notes
|
||||
|
||||
- Prefer existing package boundaries. MCP protocol shapes live in `internal/mcp`; runtime behavior usually belongs in `internal/app`.
|
||||
|
||||
Reference in New Issue
Block a user