yoi/tickets/tui-mouse-scroll.md

34 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TUI: マウスホイールでヒストリーをスクロール
## 背景
TUIのヒストリービューはキー操作Shift+↑/↓、PageUp/PageDown、Ctrl+Home/End、Ctrl+[/])でスクロールできる。スクロール状態(`Scroll` 構造体・follow_tail・top_offsetも既に揃っており、ロジック的には外部から `scroll_up`/`scroll_down` を叩けば任意の手段でスクロール可能になっている。
一方で、現状のイベントループは `TermEvent::Key` / `Paste` / `Resize` のみを処理しており、マウスイベントは破棄される。crossterm のマウスキャプチャも有効化されていないため、ターミナル側にホイール入力すら届かない。
エディタ的に常駐するTUIとして、マウスホイールで直感的にヒストリーを遡れる体験を提供したい。
## 要件
- フルスクリーンモード中にマウスホイールでヒストリービューをスクロールできる。
- ホイール上方向で過去方向(`scroll_up`)、下方向で末尾方向(`scroll_down`に動く。1 notch あたりの行数は既存のキー操作Shift+↑/↓)と同じ感覚で良い。
- マウスキャプチャの有効化はalt-screenに入っているあいだに限定し、終了時に確実に解除するpicker / spawn のインラインフェーズはネイティブのマウス挙動を保つ)。
- クリック・ドラッグ等のホイール以外のマウスイベントは現状無視で構わないが、最低限イベントループでマッチ漏れによるエラーが出ない形にする。
## 完了条件
- フルスクリーンTUIでマウスホイールを回すと、ヒストリービューが上下に動く。
- TUIを正常終了・異常終了どちらでも、ターミナルのマウスキャプチャ状態が残らない。
- 既存のキー操作によるスクロール挙動に変化がない。
## 範囲外
- ホイール以外のマウス操作(クリックでフォーカス移動、ドラッグ選択、スクロールバー表示など)
- picker / spawn のインラインフェーズでのマウス対応
- ホイール感度の設定可能化
## Review
- 状態: Approve
- レビュー詳細: [./tui-mouse-scroll.review.md](./tui-mouse-scroll.review.md)
- 日付: 2026-05-01