Skip to Content
デザインTUI 間隔最適化 PR2 — 半行カラーバンドとコンパクトな間隔

TUI 間隔最適化 PR2 — 半行カラーバンドとコンパクトな間隔

背景

PR1 では、ツールグループ内の不要な空行を削除することで、TUI の垂直間隔を第一段階として詰めました。しかし、実際の利用においては、まだ2つの体験上の問題が残っています:

  1. ユーザーメッセージとアシスタントの応答の間に視覚的な区切りがない — 長い会話の中で、「自分の質問がどこから始まるか」を素早く特定するのが難しい
  2. ブロック間の間隔がまだ大きい — 質問と応答が交互になる部分にそれぞれ1行の空白があり、画面スペースを無駄にしている

今回の変更

1. ユーザーメッセージの半行カラーバンド

ユーザーメッセージの上下にそれぞれ半分の高さの淡い色の線を追加し、コンテンツ領域には同じ色の backgroundColor を設定して、3層のシームレスなカラーバンドを形成します:

▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ← foreground = bandColor(下半分を着色) > ユーザーの質問内容 ← backgroundColor = bandColor(行全体の背景) ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ← foreground = bandColor(上半分を着色)
  • 色は subtleBandColor() を介して計算されます:背景色を基準に明度の6%のオフセットを行います(ダークターミナル → やや明るく、ライトターミナル → やや暗く)。色相の変化は導入しません
  • 24ビットカラーをサポートしないターミナル / スクリーンリーダー / NO_COLOR 環境では、自動的に通常の表示(marginTop=1)にフォールバックします
  • 負の幅 / 幅ゼロに対する安全保護

2. 質問と応答の間隔を詰める

位置変更前変更後
ユーザーメッセージの上方1行の空白0(カラーバンドによる視覚的な区切りを提供。フォールバック時は marginTop=1 を維持)
モデル出力の上方1行の空白1行の空白(思考プロセスと最終出力を区別するために維持)
ツール呼び出し / ステータスメッセージの上方1行の空白0
思考テキストの末尾余分な改行がある可能性trimEnd() により2重の空行を回避

同じ会話ラウンド内の「応答 → ツール呼び出し → 応答」のシーケンスには不要な空行がなくなり、情報がよりコンパクトで一貫性を持つようになります。

効果の比較

変更前:

(1行空白) > package.json を読み取って (1行空白) ✦ はい、ファイルを読み取ります。 (1行空白) ┌ Read package.json ─────────┐ │ ✓ Read package.json │ └────────────────────────────┘ (1行空白) ✦ ファイルの内容は以下の通りです:... (1行空白) ┌─ 入力ボックス ──────────────┐

変更後:

▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ > package.json を読み取って ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ✦ はい、ファイルを読み取ります。 ┌ Read package.json ─────────┐ │ ✓ Read package.json │ └────────────────────────────┘ (1行空白) ✦ ファイルの内容は以下の通りです:... (1行空白) ┌─ 入力ボックス ──────────────┐

変更なし

  • ツール呼び出しのボーダースタイルは変更なし
  • Markdown 本文の段落間隔は変更なし(1行はすでにターミナルの最小単位であるため)
  • ダーク / ライトテーマのカラーコードは変更なし
  • 入力エリア(Composer)の間隔は marginTop=1 のまま変更なし
Last updated on