From 308eabc6b3d516c8a66313f0a89b6438728870df Mon Sep 17 00:00:00 2001 From: luk <16418011+DeprecatedLuke@users.noreply.github.com> Date: Wed, 1 Jul 2026 21:08:28 +0100 Subject: [PATCH] feat(status-line): add throughput icon and simplify cache segments --- packages/coding-agent/CHANGELOG.md | 1 + .../src/modes/components/status-line/segments.ts | 6 +++--- packages/coding-agent/src/modes/theme/theme.ts | 8 +++++++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/coding-agent/CHANGELOG.md b/packages/coding-agent/CHANGELOG.md index 73fc6ccd9..69a8d0d15 100644 --- a/packages/coding-agent/CHANGELOG.md +++ b/packages/coding-agent/CHANGELOG.md @@ -67,6 +67,7 @@ - Fixed `models.yml` remote compaction schema support for V2 streaming endpoint fields. ([#4146](https://github.com/can1357/oh-my-pi/issues/4146)) - Fixed the SSH tool to reject `cwd` values of `~` and `~/...` before sending guaranteed-bad quoted tilde paths to remote POSIX shells. ([#4002](https://github.com/can1357/oh-my-pi/issues/4002)) +- Status line token throughput segment now uses a dedicated tachometer icon (`icon.throughput`) instead of reusing the output arrow; cache read/write segments use a single database icon instead of stacking input/output arrows alongside it. ## [16.2.12] - 2026-07-01 diff --git a/packages/coding-agent/src/modes/components/status-line/segments.ts b/packages/coding-agent/src/modes/components/status-line/segments.ts index 3bf9e38c1..0b1487a7d 100644 --- a/packages/coding-agent/src/modes/components/status-line/segments.ts +++ b/packages/coding-agent/src/modes/components/status-line/segments.ts @@ -379,7 +379,7 @@ const tokenRateSegment: StatusLineSegment = { const { tokensPerSecond } = ctx.usageStats; if (!tokensPerSecond) return { content: "", visible: false }; - const content = withIcon(theme.icon.output, `${tokensPerSecond.toFixed(1)}/s`); + const content = withIcon(theme.icon.throughput, `${tokensPerSecond.toFixed(1)}/s`); return { content: theme.fg("statusLineOutput", content), visible: true }; }, }; @@ -498,7 +498,7 @@ const cacheReadSegment: StatusLineSegment = { const { cacheRead } = ctx.usageStats; if (!cacheRead) return { content: "", visible: false }; - const parts = [theme.icon.cache, theme.icon.output, formatNumber(cacheRead)].filter(Boolean); + const parts = [theme.icon.cache, formatNumber(cacheRead)].filter(Boolean); const content = parts.join(" "); return { content: theme.fg("statusLineSpend", content), visible: true }; }, @@ -510,7 +510,7 @@ const cacheWriteSegment: StatusLineSegment = { const { cacheWrite } = ctx.usageStats; if (!cacheWrite) return { content: "", visible: false }; - const parts = [theme.icon.cache, theme.icon.input, formatNumber(cacheWrite)].filter(Boolean); + const parts = [theme.icon.cache, formatNumber(cacheWrite)].filter(Boolean); const content = parts.join(" "); return { content: theme.fg("statusLineOutput", content), visible: true }; }, diff --git a/packages/coding-agent/src/modes/theme/theme.ts b/packages/coding-agent/src/modes/theme/theme.ts index 4947d4f94..d588e61f0 100644 --- a/packages/coding-agent/src/modes/theme/theme.ts +++ b/packages/coding-agent/src/modes/theme/theme.ts @@ -115,6 +115,7 @@ export type SymbolKey = | "icon.cacheMiss" | "icon.input" | "icon.output" + | "icon.throughput" | "icon.host" | "icon.session" | "icon.package" @@ -319,6 +320,7 @@ const UNICODE_SYMBOLS: SymbolMap = { "icon.cacheMiss": "โŠ˜", "icon.input": "โคต", "icon.output": "โคด", + "icon.throughput": "โšก", "icon.host": "๐Ÿ–ฅ", "icon.session": "๐Ÿ†”", "icon.package": "๐Ÿ“ฆ", @@ -597,6 +599,8 @@ const NERD_SYMBOLS: SymbolMap = { "icon.input": "\uf090", // pick: ๏‚‹ | alt: ๏ก โ†’ "icon.output": "\uf08b", + // pick: (nf-fa-tachometer) | alt: โšก โ†ฌ + "icon.throughput": "\uf0e4", // pick: ๏„‰ | alt: ๏„ˆ ๏„  "icon.host": "\uf109", // pick: ๏• | alt: ๏€— ๏‚  @@ -827,10 +831,11 @@ const ASCII_SYMBOLS: SymbolMap = { "icon.ghost": "@", "icon.agents": "AG", "icon.job": "bg", + "icon.output": "out:", + "icon.throughput": "tok/s:", "icon.cache": "cache", "icon.cacheMiss": "!", "icon.input": "in:", - "icon.output": "out:", "icon.host": "host", "icon.session": "id", "icon.package": "[P]", @@ -1820,6 +1825,7 @@ export class Theme { cacheMiss: this.#symbols["icon.cacheMiss"], input: this.#symbols["icon.input"], output: this.#symbols["icon.output"], + throughput: this.#symbols["icon.throughput"], host: this.#symbols["icon.host"], session: this.#symbols["icon.session"], package: this.#symbols["icon.package"],