diff --git a/crates/cli/src/app.rs b/crates/cli/src/app.rs
index d11b4f7c..a20b98d4 100644
--- a/crates/cli/src/app.rs
+++ b/crates/cli/src/app.rs
@@ -41896,7 +41896,7 @@ mod tests {
.expect("minibuffer widget render should not panic");
assert_eq!(app.layout.matrix_widget_hits.len(), 3);
let text = rendered_text(term.backend().buffer());
- assert!(text.contains("minibuffer ─"));
+ assert!(text.contains("monitor ─"));
assert!(
text.contains("■"),
"selected widget indicator should be filled"
@@ -42077,7 +42077,7 @@ mod tests {
.expect("collapsed rain title bar should render");
let text = rendered_text(term.backend().buffer());
assert!(
- text.contains("minibuffer"),
+ text.contains("monitor"),
"collapsed panel should keep its title bar: {text:?}"
);
@@ -42141,7 +42141,7 @@ mod tests {
term.draw(|f| crate::ui::render(f, &mut app))
.expect("minibuffer approval title should render");
let text = rendered_text(term.backend().buffer());
- assert!(text.contains("minibuffer !"));
+ assert!(text.contains("monitor !"));
let (x_start, _x_end, y) = app
.layout
.matrix_minibuffer_title_hit
diff --git a/crates/cli/src/ui.rs b/crates/cli/src/ui.rs
index 1a104cc2..4dee6203 100644
--- a/crates/cli/src/ui.rs
+++ b/crates/cli/src/ui.rs
@@ -1184,9 +1184,9 @@ fn render_list_title_button_tooltips(f: &mut Frame, app: &App) {
if let Some((xs, xe, y)) = matrix_rain_close_button_range(rain) {
if my == y && mx >= xs && mx < xe {
let (label, anchor_y) = if app.matrix_rain_hidden {
- (" Expand Minibuffer ", y)
+ (" Expand monitor ", y)
} else {
- (" Collapse Minibuffer ", y.saturating_add(2))
+ (" Collapse monitor ", y.saturating_add(2))
};
render_button_tooltip(f, &app.theme, label, xs, anchor_y);
}
@@ -3777,7 +3777,7 @@ fn split_lineage_section(
/// Render the sidebar's lineage section: a header bar (a `─` rule carrying
/// the `⑂ lineage` label, the view-mode toggle, and a `−`/`+` collapse
-/// button — the same furniture as the minibuffer panel's title bar lower in
+/// button — the same furniture as the monitor panel's title bar lower in
/// the sidebar)
/// above the selected session's lineage diagram. Reuses
/// `App::lineage_section_rows` (`crate::lineage::build_tree`/`flatten`
@@ -3807,7 +3807,7 @@ fn render_lineage_section(
app.layout.lineage_area = Some(rect);
let focused = app.lineage_focused && app.focus == PaneFocus::List;
- // Header bar: a full-width `─` rule (the minibuffer panel's visual
+ // Header bar: a full-width `─` rule (the monitor panel's visual
// language), label at the left, mode toggle + collapse button at the
// right. The bare bar doubles as the height drag handle.
let line_style = if focused {
@@ -3843,7 +3843,7 @@ fn render_lineage_section(
} else {
" − "
};
- // Flush right, matching the minibuffer panel's toggle below.
+ // Flush right, matching the monitor panel's toggle below.
let bx = rect.x + rect.width.saturating_sub(3);
let button = Rect {
x: bx,
@@ -5583,10 +5583,17 @@ fn render_matrix_rain_header(f: &mut Frame, area: Rect, app: &mut App, now: Inst
// so the squares below reflect the live shown/pinned widget.
app.matrix_widget_visible(now);
let approval_pending = app.minibuffer_has_pending_approval();
+
+ // Pane title: this pane is the fleet's ambient *monitor* (rain / token
+ // meter / widget strip), so it must not be titled after the minibuffer
+ // — that names the dispatcher session in the bottom strip (spec 0199).
+ // The label still carries the minibuffer affordances (status tooltip,
+ // approval alert, click-to-open) because the default sidebar width has
+ // no room for a separate chip; the tooltip names the minibuffer.
let minibuffer_text = if approval_pending {
- "minibuffer !"
+ "monitor !"
} else {
- "minibuffer"
+ "monitor"
};
// Play/pause toggle for the minibuffer ambient loop.
@@ -5612,7 +5619,7 @@ fn render_matrix_rain_header(f: &mut Frame, area: Rect, app: &mut App, now: Inst
.set_string(loop_icon_x, area.y, loop_icon, loop_icon_style);
app.layout.matrix_minibuffer_loop_hit = Some((loop_icon_x, loop_icon_end, area.y));
- // Prompt label renders after the icon; the leading space in " minibuffer "
+ // Prompt label renders after the icon; the leading space in " monitor "
// provides the visual gap between icon and text.
let label = format!(" {minibuffer_text} ");
let label_x = loop_icon_end;
diff --git a/crates/daemon/assets/index.html b/crates/daemon/assets/index.html
index 203e572e..204481a4 100644
--- a/crates/daemon/assets/index.html
+++ b/crates/daemon/assets/index.html
@@ -2911,7 +2911,7 @@
background: color-mix(in srgb, var(--accent) 45%, transparent);
}
- /* Minibuffer ambient panel (spec 0019 / 0167): fleet token meter by default. */
+ /* Monitor ambient panel (spec 0019 / 0167): fleet token meter by default. */
.minibuffer-panel {
flex: 0 0 auto;
display: flex;
@@ -3880,19 +3880,21 @@
+ aria-orientation="horizontal" aria-label="resize monitor panel">
@@ -6263,7 +6265,7 @@
minibufferCollapseBtn.textContent = state.minibufferCollapsed ? "+" : "−";
minibufferCollapseBtn.setAttribute(
"aria-label",
- state.minibufferCollapsed ? "expand minibuffer panel" : "collapse minibuffer panel",
+ state.minibufferCollapsed ? "expand monitor panel" : "collapse monitor panel",
);
}
const tokens = state.minibufferPanelMode !== "rain";
diff --git a/specs/0019-minibuffer-widgets-use-matrix-rain-viewport.md b/specs/0019-minibuffer-widgets-use-matrix-rain-viewport.md
index b2596dc7..51683e5b 100644
--- a/specs/0019-minibuffer-widgets-use-matrix-rain-viewport.md
+++ b/specs/0019-minibuffer-widgets-use-matrix-rain-viewport.md
@@ -1,7 +1,7 @@
# 0019-minibuffer-widgets-use-matrix-rain-viewport
Status: accepted
-Date: 2026-06-05 (amended 2026-08-01)
+Date: 2026-06-05 (amended 2026-08-16)
Area: tui
Scope: Defines the ambient panel's selectable body modes and how the collapsed Minibuffer communicates through it.
@@ -20,7 +20,7 @@ of the body, not a mode of its own.
When the Minibuffer session is collapsed, the panel may act as a transient viewport over the Minibuffer session's normal sticky widgets. Minibuffer widgets keep the same lifecycle as all session widgets: sessions create, update, and delete them, and the viewport only controls temporary visibility.
-Updating a Minibuffer widget briefly reveals it in the panel. The title bar shows the lowercase `minibuffer` label followed by one square indicator per visible Minibuffer widget, and a mode switch naming the mode currently showing, carrying the same swap glyph as the session list's view-mode toggle so the two controls read as one convention. Hovering the Minibuffer label may reveal the current Minibuffer status in a tooltip. Hovering a widget indicator may reveal that widget's title. Clicking an empty square selects and shows the widget; clicking the filled square hides the widget viewport. The existing close button continues to hide the Minibuffer/ambient panel itself, and is distinct from the mode switch — switching modes never collapses the panel. When the widget viewport hides or no Minibuffer widgets exist, the panel returns to its selected mode.
+Updating a Minibuffer widget briefly reveals it in the panel. The title bar names the pane with the lowercase `monitor` title — the pane observes the fleet; `minibuffer` names the dispatcher session (spec 0199) and must never double as this pane's name. The title may also carry the Minibuffer affordances (loop toggle, status tooltip, approval alert, click-to-open) when the bar has no room for a second chip; the hover tooltip still names the Minibuffer so the control is not confused with the pane itself. Then come one square indicator per visible Minibuffer widget, and a mode switch naming the mode currently showing, carrying the same swap glyph as the session list's view-mode toggle so the two controls read as one convention. Hovering the title may reveal the current Minibuffer status in a tooltip. Hovering a widget indicator may reveal that widget's title. Clicking an empty square selects and shows the widget; clicking the filled square hides the widget viewport. The existing close button continues to hide the monitor/ambient panel itself, and is distinct from the mode switch — switching modes never collapses the panel. When the widget viewport hides or no Minibuffer widgets exist, the panel returns to its selected mode.
## Reason
diff --git a/specs/0081-lineage-section-in-sidebar.md b/specs/0081-lineage-section-in-sidebar.md
index 3f1aaff2..a98676cd 100644
--- a/specs/0081-lineage-section-in-sidebar.md
+++ b/specs/0081-lineage-section-in-sidebar.md
@@ -43,7 +43,7 @@ diagram glyph beneath them, while their full-cell tracks remain
mouse-interactive.
The section's header is a one-row horizontal rule carrying its label and
-controls — the same visual furniture as the minibuffer panel's title bar
+controls — the same visual furniture as the monitor panel's title bar
lower in the sidebar: a `−`/`+` collapse button at the right end, the view-mode
toggle beside it, and the bare rule doubling as a height drag handle (dragging
up grows the section, within the same caps). The collapse state, the dragged
diff --git a/specs/0186-webui-lineage-and-token-meter.md b/specs/0186-webui-lineage-and-token-meter.md
index a31803c6..7de622be 100644
--- a/specs/0186-webui-lineage-and-token-meter.md
+++ b/specs/0186-webui-lineage-and-token-meter.md
@@ -1,7 +1,7 @@
# 0186-webui-lineage-and-token-meter
Status: accepted
-Date: 2026-08-02 (amended 2026-08-05)
+Date: 2026-08-02 (amended 2026-08-16)
Area: webui
Scope: The web UI sidebar and persistent header expose the fleet token meter alongside the selected-session lineage section.
@@ -9,7 +9,7 @@ Scope: The web UI sidebar and persistent header expose the fleet token meter alo
The web client's left sidebar stacks the same durable regions the TUI
does: session rows, then a collapsible **lineage** section, then a
-collapsible **minibuffer** ambient panel. Operators remain ordinary list
+collapsible **monitor** ambient panel. Operators remain ordinary list
rows (as they already are on the web).
### Lineage section
@@ -36,7 +36,7 @@ subagent / reset-snapshot), and subagent-group collapse match the TUI;
the presentation uses HTML tree rows so the section remains usable on
touch and narrow viewports.
-### Minibuffer ambient panel
+### Monitor ambient panel
The ambient panel sits at the bottom of the sidebar and hosts the same
named body modes as the TUI (spec 0019):
@@ -89,7 +89,7 @@ the gap was client presentation.
## Consequences
- Future web sidebar work must preserve the stack order: list → lineage
- → minibuffer, and must not drop Cost events that arrive for unfocused
+ → monitor, and must not drop Cost events that arrive for unfocused
sessions.
- A collapse or expansion in the narrow mobile menu must not consume the
corresponding wide-sidebar preference, or vice versa.