gitstack 0.2.2

Git Activity Stack TUI - 履歴理解と状況把握に特化したGitビューア
Documentation
# 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: カスタマイズ

- [ ] 設定ファイル対応
- [ ] カラーテーマ

---

## 競合との差別化ポイント

| 観点 | lazygit | keifu | gitstack (目標) |
|------|---------|-------|-----------------|
| 用途 | 操作 | グラフ | **状況把握** |
| 速度 | 普通 | 普通 | **最速** |
| 学習コスト ||| **** |
| 情報密度 ||| **最適化** |
| 色の意味 | なし | ブランチ | **コミットタイプ** |

**目指す姿**: 「gitの今を3秒で把握できるTUI」