From 0bc94422466e1a8a7edfde0926e9b768cee828c0 Mon Sep 17 00:00:00 2001 From: dot-agi Date: Tue, 20 Oct 2026 18:08:00 +0530 Subject: [PATCH 1/2] Release 1.1.3 --- .claude-plugin/plugin.json | 2 +- README.md | 4 +- docs/usage.md | 2 + hooks/drawing.tsx | 9 ++- hooks/register.tsx | 5 +- hooks/view.ts | 153 +++++++++++++++++++++++++++++++++++++ 6 files changed, 168 insertions(+), 7 deletions(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index bca7ce4..4e5595b 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "downrange", - "version": "1.1.2", + "version": "1.1.3", "description": "A band, pane, and /downrange table: progress, ETA, and last output for Claude Code background shells and Monitor watches, tool activity for subagents, state for workflows, and the next /loop wakeup.", "author": { "name": "dot-agi" }, "license": "MIT", diff --git a/README.md b/README.md index fba3a63..a7291c0 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Claude Code 2.1.288+ Claude Code mod License: MIT - Version: 1.1.2 + Version: 1.1.3

Progress and an ETA for background shells and Monitor watches, read from their real output or past runs, with no model request.

@@ -139,7 +139,7 @@ Notes: | `c` in the focused pane | Clears finished jobs | | `x` in the focused pane | Closes the pane | -Focus the band or the pane with Ctrl+X, then Tab, or a click. That chord is Claude Code's own `abovePrompt:focus` binding. Release Ctrl before you press Tab, because many terminals read Ctrl+Tab as next tab. In Emacs vterm, eat, or ansi-term, click the band, use `/downrange pane`, or rebind `abovePrompt:focus` with [`/keybindings`](https://code.claude.com/docs/en/keybindings#above-prompt-actions). +Focus the band or the pane with Ctrl+X, then Tab, or a click. That chord is Claude Code's own `abovePrompt:focus` binding. Release Ctrl before you press Tab, because many terminals read Ctrl+Tab as next tab. On the focused band, Tab moves between **Open** and **Hide**, Enter presses one, and Esc returns to the prompt. When the band's row has free room, it shows the dim hint `ctrl+x tab to choose` just before **Open**. In Emacs vterm, eat, or ansi-term, click the band, use `/downrange pane`, or rebind `abovePrompt:focus` with [`/keybindings`](https://code.claude.com/docs/en/keybindings#above-prompt-actions). ## Options diff --git a/docs/usage.md b/docs/usage.md index 4d5380e..e8cad9d 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -33,6 +33,8 @@ The band is one line above the prompt: - Job snippets follow: recent failures, running jobs with progress, other running jobs (oldest first), then other recent ends. Snippets that do not fit the width are left out. The counts always show. - **Open** (`j`) opens the pane. **Hide** (`h`) hides the band until a new job starts. - Focus the band with Ctrl+X, then Tab, or a click before you use its keys. That chord is Claude Code's own `abovePrompt:focus` binding. Release Ctrl before you press Tab, because many terminals read Ctrl+Tab as next tab. In Emacs vterm, eat, or ansi-term, click the band, use `/downrange pane`, or rebind `abovePrompt:focus` with [`/keybindings`](https://code.claude.com/docs/en/keybindings#above-prompt-actions). +- On the focused band, Tab moves between **Open** and **Hide**, Enter presses one, and Esc returns to the prompt. +- When the row has free room after the counts and the snippets, the dim hint `ctrl+x tab to choose` shows just before **Open**. The hint never takes room from a snippet and never moves a button. A narrow or full band leaves it out. - A survey takes the band's place while it shows. - The option `band` turns the band off. diff --git a/hooks/drawing.tsx b/hooks/drawing.tsx index 293e36e..35d07fc 100644 --- a/hooks/drawing.tsx +++ b/hooks/drawing.tsx @@ -10,8 +10,8 @@ const PART_STYLES: Readonly void; hide: () => void }, below: RenderElement): RenderElement { +/** The band: one line of counts and snippets, the key hint in the free room before Open and Hide when the row holds it, and what other mods drew beneath. */ +export function bandTree(ui: Ui, parts: readonly BandPart[], hint: string | undefined, actions: { open: () => void; hide: () => void }, below: RenderElement): RenderElement { const { Box, Text, Button } = ui return ( @@ -23,6 +23,11 @@ export function bandTree(ui: Ui, parts: readonly BandPart[], actions: { open: () ))} + {hint === undefined ? null : ( + + {hint} + + )}