Skip to content

feat(chat): show live token speed beside the context meter - #385

Merged
yuga-hashimoto merged 2 commits into
mainfrom
token-speed-display
Oct 16, 2026
Merged

yuga-hashimoto merged 2 commits into
mainfrom
token-speed-display

Conversation

@yuga-hashimoto

Copy link
Copy Markdown
Owner

Summary

  • チャット画面下部のコンテキストメーターの右側に、生成中のみ表示されるトークン速度(tok/s)を追加しました。
  • 既存の ConnectionQuality.tokensPerSecond(ConnectionQualityMonitor がストリーミングデルタから計測する平滑値)を ChatUiState.connectionQuality 経由で流用し、isRunning && tokensPerSecond >= 0.05 のときだけ CompactTokenSpeed を表示します。
  • 文字列リソース chat_token_speed(%1$s tok/s)を既定と全ロケール(ar/es/fr/ja/pt-rBR/ru/zh-rCN)に追加しました。

Test plan

  • ./gradlew detekt spotlessCheck — BUILD SUCCESSFUL
  • ./gradlew :app:compileGithubDebugKotlin — BUILD SUCCESSFUL
  • i18n key-parity チェック(.github/workflows/i18n-check.yml のロジック) — All translations complete.

Pre-PR review

判定: APPROVE

ブロッカー

  • なし

提案(非ブロッキング)

  • なし(前回指摘の閾値変更が反映済み。今回の差分は1行のみで、他は前回APPROVE時と同一)

チェック済み項目

  • git diff origin/main...HEAD 全体と追加コミット 223972d1 を確認。差分は ChatHomeScreen.kt への tokensPerSecond 受け渡し&表示、および values*/strings.xml への chat_token_speed 追加のみ。223972d1 は > 0.0 → >= 0.05 の1行変更に限定されていることを git show で確認。
  • 閾値の妥当性: formatTokenRate は 10.0 未満で "%.1f"(Java Formatter は HALF_UP)を使うため、0.05(実値 0.050000…)は 0.1 に丸められ、「0.0 tok/s」が表示されるケースは >= 0.05 では発生しない。目的(丸めによる 0.0 表示回避)を達成していると確認。
  • formatTokenRate / CompactTokenSpeed は直上の formatTokenCount / CompactContextMeter と同じ style・fontSize = 9.sp・.format() パターンに従っており、既存規約と整合。
  • i18n: values + ar/es/fr/ja/pt-rBR/ru/zh-rCN の全8ファイルに chat_token_speed が存在することを grep で確認。values* ディレクトリは他に存在しない。i18n-check.yml はキー存在のみを検査するため、翻訳文が同一でも問題なし。
  • 呼び出し側整合: ChatComposer 呼び出しは名前付き引数で tokensPerSecond を追加済み(675行目)。ChatComposer を呼ぶ箇所は当該1箇所のみで、Preview は ChatHomeScreen を呼ぶため未指定引数によるコンパイルエラーはなし。
  • データ源: ChatUiState.connectionQuality: ConnectionQuality?(ChatViewModel.kt:523)→ ConnectionQuality.tokensPerSecond: Double(ConnectionQualityMonitor.kt:35)を確認。isRunning && … 条件付き表示のため、実行中のみ表示される。
  • 静的解析: .editorconfig で ktlint max-line-length は無効、detekt は MagicNumber 無効・MaxLineLength 140 で、追加行(2187行目)はいずれにも抵触しない。
  • テスト: connectionQuality / tokensPerSecond はテストから参照されておらず、ConnectionQualityMonitor 側に変更なし。UI表示のみの追加で既存テストへの影響なし。

@yuga-hashimoto
yuga-hashimoto merged commit 64e90a9 into main Oct 16, 2026
5 checks passed
@yuga-hashimoto
yuga-hashimoto deleted the token-speed-display branch October 16, 2026 14:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant