feat(coding-agent): simplified subagent status line display

- Removed "running" status and hub hint details from the subagent badge text.
- Updated relevant status line tests to expect the simplified badge format.
This commit is contained in:
can1357
2026-06-27 08:13:01 +02:00
parent 3da3a7c1ba
commit 98b7db0c84
3 changed files with 6 additions and 18 deletions
+2 -7
View File
@@ -8,21 +8,16 @@
### Changed
- Simplified status line subagent display by removing running state and hub hint indicators
- Updated online title, memory, and classification tasks to prioritize the `tiny` model role
### Fixed
- Prevented auto-generated session titles from accidentally re-shouting user all-caps text
- Fixed auto-generated session titles re-shouting emphatic ALL-CAPS from the user's message. `reconcileTitleCasing` (`packages/coding-agent/src/tiny/text.ts`) restored any source token with interior/repeated uppercase, so shouting like "unify ALL ERROR HANDLING" turned the model's clean sentence case ("Unify error handling…") back into "Unify ERROR HANDLING…". Casing is now restored only from mixed-case identifiers the user typed deliberately (`TinyVMM`, `iOS`, `IDs`); pure all-caps is left to the model's own output.
### Fixed
- Fixed Tavily web search with recency filters to retry once without `time_range` when Tavily returns HTTP 200 with no renderable content. ([#3633](https://github.com/can1357/oh-my-pi/issues/3633))
### Fixed
- Fixed TUI thought stream stalling and `ui.loop-blocked` warnings during subagent-heavy runs by replacing the mid-run compaction persistence check's O(n²) branch rebuild + per-pair `JSON.stringify` content compare with a one-shot persistence-key snapshot. Content equality is preserved as the rare collision tiebreaker. ([#3629](https://github.com/can1357/oh-my-pi/issues/3629))
### Fixed
- Fixed marketplace-installed plugins appearing in both the npm plugin list and the OMP extension-package status provider. ([#3628](https://github.com/can1357/oh-my-pi/issues/3628))
## [16.2.1] - 2026-06-27
@@ -200,7 +200,6 @@ export class StatusLineComponent implements Component {
#autoCompactEnabled: boolean = true;
#hookStatuses: Map<string, string> = new Map();
#subagentCount: number = 0;
#subagentHubHint: string | undefined;
#sessionStartTime: number = Date.now();
#planModeStatus: { enabled: boolean; paused: boolean } | null = null;
#loopModeStatus: { enabled: boolean } | null = null;
@@ -306,12 +305,6 @@ export class StatusLineComponent implements Component {
this.#subagentCount = count;
}
/** Hub key label shown in the forced running-subagents badge. */
setSubagentHubHint(hint: string | undefined): void {
const trimmed = hint?.trim();
this.#subagentHubHint = trimmed ? trimmed : undefined;
}
/** Active subagent count as currently displayed (collab state mirroring). */
get subagentCount(): number {
return this.#subagentCount;
@@ -925,8 +918,7 @@ export class StatusLineComponent implements Component {
#subagentBadgeText(): string | undefined {
if (this.#subagentCount === 0) return undefined;
const noun = this.#subagentCount === 1 ? "agent" : "agents";
const hubHint = this.#subagentHubHint ? ` — ${this.#subagentHubHint} hub` : " — Agent Hub";
return theme.fg("statusLineSubagents", `${theme.icon.agents} ${this.#subagentCount} ${noun} running${hubHint}`);
return theme.fg("statusLineSubagents", `${theme.icon.agents} ${this.#subagentCount} ${noun}`);
}
#buildStatusLine(width: number): string {
@@ -163,8 +163,9 @@ describe("StatusLineComponent effective settings cache", () => {
component.setSubagentHubHint("Alt+A");
const content = stripVTControlCharacters(component.getTopBorder(120).content);
expect(content).toContain("2 agents running");
expect(content).toContain("Alt+A hub");
expect(content).toContain("2 agents");
expect(content).not.toContain("running");
expect(content).not.toContain("Alt+A hub");
});
it("keeps plan and hook state dynamic without settings invalidation", () => {