From 28bc9eaea6a46d679241ebb4be81de0e659704da Mon Sep 17 00:00:00 2001 From: dot-agi Date: Fri, 23 Oct 2026 22:18:40 +0530 Subject: [PATCH] Release 1.2.1 --- .claude-plugin/plugin.json | 2 +- README.md | 2 +- hooks/views.tsx | 47 +++++++++++++++++++++----------------- 3 files changed, 28 insertions(+), 23 deletions(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 99ff6b6..d562f76 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "high-command", - "version": "1.2.0", + "version": "1.2.1", "description": "See the messages your teammates, named subagents, and other Claude Code sessions send you, grouped by peer with unread counts: a pane, a band above the prompt, and /highcommand.", "author": { "name": "dot-agi" }, "license": "MIT", diff --git a/README.md b/README.md index 832042b..2fdb189 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Claude Code 2.1.288+ mod License: MIT - Version: 1.2.0 + Version: 1.2.1

One inbox for agent-team teammates, named subagents, and other Claude Code sessions.

diff --git a/hooks/views.tsx b/hooks/views.tsx index 03f0172..4bdf1f6 100644 --- a/hooks/views.tsx +++ b/hooks/views.tsx @@ -412,16 +412,19 @@ function stateCells(states: readonly (string | undefined)[], columns: number): n return Math.max(CELLS.state, Math.min(longest, columns - others - MESSAGE_CELLS)) } -/** The dim header row over the fixed roster columns; `state` is the cells of Last state. */ +/** + * The dim header row over the fixed roster columns; `state` is the cells of Last state. A Box can shrink by default, + * so each fixed cell sets `flexShrink={0}`: only Last message gives up room, as in each row (columnsRow). + */ function columnsHeader({ Box, Text }: HighCommandElements, state: number): RenderElement { return ( - Peer - New - Time - Sender - Last state - Last message + Peer + New + Time + Sender + Last state + Last message ) } @@ -429,7 +432,8 @@ function columnsHeader({ Box, Text }: HighCommandElements, state: number): Rende /** * A roster row in fixed columns, from COLUMNS_FROM cells: the peer (its label cut to 16 cells), the unread count, the * time (the date alone on another day), the sender level, the state in `stateWidth` cells (stateCells), and the latest - * message. Any `suspicious` and `(not delivered)` marks start it, within the MESSAGE_CELLS it always keeps. + * message. Any `suspicious` and `(not delivered)` marks start it, within the MESSAGE_CELLS it always keeps. Each fixed + * cell, the gutter and peer cell too, keeps its width (`flexShrink={0}`); only Last message shrinks, and is cut there. */ function columnsRow(ui: HighCommandElements, args: RosterRowArgs, stateWidth: number): RenderElement { const { Box, Text } = ui @@ -439,14 +443,14 @@ function columnsRow(ui: HighCommandElements, args: RosterRowArgs, stateWidth: nu const state = rosterState(row.state, now) return ( - {peerButton(ui, args)} - {row.unread > 0 && {String(row.unread)}} - + {peerButton(ui, args)} + {row.unread > 0 && {String(row.unread)}} + {isSameDay(row.last.at, now) ? timeLabel(row.last.at) : dayLabel(row.last.at)} - {row.trust !== undefined && {row.trust}} - {state !== undefined && {state}} - + {row.trust !== undefined && {row.trust}} + {state !== undefined && {state}} + {row.isSuspicious && [suspicious, ' ']} {messageSpans(Text, row.last, isRead, true)} @@ -581,8 +585,9 @@ type EntryArgs = { isFresh: boolean; isOpen: boolean; hasSendNote: boolean; hasD /** * One thread entry: the send note above the first send of the page, a day line above the first entry of an earlier - * day, a header of fixed cells (new, time, arrow, kind) and the trust marks, the reported send result on a line of its - * own, the summary only when the sender wrote one that the body does not start with, the body, and Send details. + * day, a header of fixed cells (new, time, arrow, kind) that never shrink and the trust marks, which alone shrink and + * wrap, the reported send result on a line of its own, the summary only when the sender wrote one that the body does + * not start with, the body, and Send details. */ function entryView(ui: HighCommandElements, entry: HighCommandEntry, args: EntryArgs, actions: PaneActions): RenderElement { const { Box, Text, Button } = ui @@ -599,11 +604,11 @@ function entryView(ui: HighCommandElements, entry: HighCommandEntry, args: Entry {args.hasSendNote && {SEND_NOTE}} {args.hasDayLine && {dayLabel(entry.at)}} - {isFresh && new} - {timeLabel(entry.at)} - {arrow} - {entry.direction === 'out' ? 'send attempted' : word} - {marks.length > 0 && {marks}} + {isFresh && new} + {timeLabel(entry.at)} + {arrow} + {entry.direction === 'out' ? 'send attempted' : word} + {marks.length > 0 && {marks}} {delivery !== undefined && (