# gitstack 改善ロードマップ
> 「履歴理解・状況把握に特化した高速Git TUI」という独自ポジションを強化するための計画
## コンセプト
- **読むに特化** - 操作より閲覧を重視
- **高速性** - 起動・描画・ナビゲーションすべてを高速に
- **視認性** - 色と配置で情報を瞬時に理解
---
## 1. 色のはっきりした意味付け
### 1.1 コミットタイプ別カラー
コミットメッセージのプレフィックスに基づいて色分け。
| `feat:` | 緑 (Green) | 新機能 |
| `fix:` | 赤 (Red) | バグ修正 |
| `docs:` | 青 (Blue) | ドキュメント |
| `refactor:` | 黄 (Yellow) | リファクタリング |
| `test:` | 紫 (Magenta) | テスト |
| `chore:` | グレー (DarkGray) | 雑務・設定 |
| `style:` | シアン (Cyan) | スタイル変更 |
| `perf:` | オレンジ (LightRed) | パフォーマンス |
| `ci:` | グレー (DarkGray) | CI/CD |
| Merge | オレンジ (Yellow) | マージコミット |
| その他 | 白 (White) | 分類なし |
**実装場所**: `src/tui/ui.rs` の `create_event_card`
### 1.2 時間軸カラー(鮮度表示)
古いコミットほど薄く表示し、最新の変更に注目しやすくする。
| 今日 | 100% (明るい白) |
| 昨日 | 80% |
| 今週 | 60% |
| 今月 | 40% |
| それ以前 | 30% (薄いグレー) |
### 1.3 作者カラー(自分 vs 他者)
自分のコミットを強調表示。
| 自分 | 太字 + 背景色ハイライト |
| チームメンバー | 通常 |
| 外部コントリビューター | 薄い色 |
**設定**: `git config user.name` から自分の名前を取得
---
## 2. 高速性の追求
### 2.1 起動時間の最適化
```
現状: リポジトリ発見 → 全イベント読み込み → 描画
改善: リポジトリ発見 → 最初の10件読み込み → 描画 → 残りを非同期読み込み
```
- [ ] 最初の10件だけ即座に表示
- [ ] 残りはバックグラウンドで読み込み
- [ ] 読み込み中インジケーター表示
### 2.2 キャッシュ機能
`.git/gitstack-cache.json` にイベントをキャッシュ。
```json
{
"head": "abc1234...",
"cached_at": "2024-01-01T00:00:00Z",
"events": [...]
}
```
- HEADが変わっていなければキャッシュを使用
- 起動時間を大幅短縮
### 2.3 描画最適化
- [ ] 差分描画(変更があった行のみ再描画)
- [ ] 仮想スクロール(表示範囲のみ計算)
- [ ] フレームレート制限(60fps上限)
### 2.4 インクリメンタル読み込み
- 初期表示: 50件
- スクロール時に追加読み込み
- メモリ使用量を削減
---
## 3. 独自機能(読むに特化)
### 3.1 サマリーモード (`Tab` キー)
現在の状況を俯瞰するダッシュボード。
```
┌─────────────────────────────────────────┐
│ gitstack - Summary │
├─────────────────────────────────────────┤
│ Today: 5 commits (3 feat, 2 fix) │
│ This week: 23 commits │
│ This month: 89 commits │
├─────────────────────────────────────────┤
│ Top contributors: │
│ 1. you (15 commits) │
│ 2. alice (8 commits) │
├─────────────────────────────────────────┤
│ Most changed files: │
│ 1. src/main.rs (8 changes) │
│ 2. src/lib.rs (5 changes) │
└─────────────────────────────────────────┘
```
### 3.2 タイムラインモード (`T` キー)
時間軸でコミットを可視化。
```
2024-01-15
09:00 ████████ feat: add login
10:30 ██ fix: typo
14:00 ████████████████ feat: dashboard
16:00 ████ test: add tests
2024-01-14
11:00 ██████ refactor: cleanup
↑ バーの長さ = 変更量
```
### 3.3 ホットジャンプ機能
高速ナビゲーション用のキーバインド。
| `g` + `t` | 今日の最初のコミットへジャンプ |
| `g` + `y` | 昨日の最初のコミットへジャンプ |
| `g` + `w` | 今週の最初のコミットへジャンプ |
| `g` + `m` | 自分のコミットだけフィルタ |
| `g` + `g` | 最新(先頭)へジャンプ |
| `G` | 最古(末尾)へジャンプ |
| `n` | 次のマッチへ(フィルタ時) |
| `N` | 前のマッチへ(フィルタ時) |
### 3.4 ブランチ比較ビュー (`B` キー)
現在のブランチと他ブランチの差分を可視化。
```
┌─────────────────────────────────────────┐
│ Branch Comparison │
├─────────────────────────────────────────┤
│ main: ○───○───○───○ │
│ feature: └───○───○───○ │
│ ↑ +3 ahead │
├─────────────────────────────────────────┤
│ Commits only in feature: │
│ abc1234 feat: add new feature │
│ def5678 fix: bug in feature │
│ ghi9012 test: add tests │
└─────────────────────────────────────────┘
```
### 3.5 ファイル変更ヒートマップ
どのファイルがよく変更されているかを可視化。
```
src/main.rs ████████████████ 16
src/lib.rs ████████ 8
src/tui/ui.rs ██████ 6
Cargo.toml ████ 4
```
---
## 4. UX改善
### 4.1 ヘルプオーバーレイ (`?` キー)
キーバインドを表示するヘルプ画面。
```
┌─────────────────────────────────────────┐
│ gitstack - Help │
├─────────────────────────────────────────┤
│ Navigation │
│ j/↓ Move down │
│ k/↑ Move up │
│ Enter Show details │
│ / Filter │
├─────────────────────────────────────────┤
│ Actions │
│ s Status view │
│ b Branch select │
│ R Fetch from remote │
│ q Quit │
└─────────────────────────────────────────┘
```
### 4.2 設定ファイル対応
`~/.config/gitstack/config.toml`
```toml
[refresh]
local_interval = 1 # 秒
remote_interval = 60 # 秒
auto_fetch = true
[display]
max_events = 100
show_author = "on_change" # always, on_change, never
time_format = "relative" # relative, absolute
[colors]
feat = "green"
fix = "red"
# ...
[user]
name = "Your Name" # 自分のコミットハイライト用
```
---
## 5. 実装優先度
### Phase 1: 視認性向上(小工数・高インパクト)
- [ ] コミットタイプ別カラー
- [ ] 自分のコミットハイライト
- [ ] 時間軸カラー(鮮度表示)
### Phase 2: ナビゲーション強化
- [ ] ホットジャンプ機能 (`g` + キー)
- [ ] ヘルプオーバーレイ (`?`)
- [ ] Vim風 `G` / `gg` ジャンプ
### Phase 3: 情報可視化
- [ ] サマリーモード
- [ ] タイムラインモード
- [ ] ブランチ比較ビュー
### Phase 4: パフォーマンス
- [ ] キャッシュ機能
- [ ] インクリメンタル読み込み
- [ ] 差分描画
### Phase 5: カスタマイズ
- [ ] 設定ファイル対応
- [ ] カラーテーマ
---
## 競合との差別化ポイント
| 用途 | 操作 | グラフ | **状況把握** |
| 速度 | 普通 | 普通 | **最速** |
| 学習コスト | 高 | 中 | **低** |
| 情報密度 | 高 | 中 | **最適化** |
| 色の意味 | なし | ブランチ | **コミットタイプ** |
**目指す姿**: 「gitの今を3秒で把握できるTUI」