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 @@
-
+
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 && (