gitstack 5.0.1

Git history viewer with insights - Author stats, file heatmap, code ownership
Documentation
# gitstack

[![Crates.io](https://img.shields.io/crates/v/gitstack.svg)](https://crates.io/crates/gitstack)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)

> **分析とインサイトに特化したGit履歴ビューア**
>
> *AI支援開発時代に最適化 - Claude Codeなどとの併用に対応*

リリース履歴: `HISTORY.md` を参照。

リリース履歴をGitタグから再生成:

```bash
make history
```

<!-- ![hero](assets/hero.gif) -->

## なぜ gitstack?

| ツール | フォーカス | 最適な用途 |
|--------|-----------|-----------|
| lazygit | Git操作 | ステージング、リベース、チェリーピック |
| tig | ログ閲覧 | コミットの素早い確認 |
| keifu | グラフ可視化 | 美しいブランチ表示 |
| **gitstack** | **分析 & インサイト** | **コードベースの理解** |

gitstackはこんな疑問に答えます:
- *「このモジュールは誰が作業してきた?」*
- *「どのファイルが頻繁に変更されている?」*
- *「どのコミットが最も影響力があった?」*
- *「放置されているブランチはある?」*
- *「このプロジェクトは全体的に健全?」*

## インストール

```bash
cargo install gitstack
```

ソースからビルド:
```bash
git clone https://github.com/Hiro-Chiba/gitstack
cd gitstack
cargo install --path .
```

## クイックスタート

1. **インストール**: `cargo install gitstack`
2. **起動**: `gitstack`(任意のGitリポジトリ内で実行)
3. **基本操作**: `1`-`5`でパネル切替、`Tab`でフォーカス切替、`?`でヘルプ、`.`でクイックアクション、`q`で終了

## 機能

### 分析スイート

<!-- ![analysis](assets/analysis.gif) -->

キー1つで即座にインサイトを取得:

| キー | ビュー | 表示内容 |
|------|--------|----------|
| `A` | 著者統計 | 著者ごとのコミット数、追加/削除行数 |
| `H` | ヒートマップ | 最も頻繁に変更されるファイル |
| `. → T` | タイムライン | 時間帯/曜日別のコミット活動 |
| `. → O` | オーナーシップ | ファイル/ディレクトリごとのコード所有者 |
| `. → I` | Impact Score | コミット影響度スコア(0.0-1.0) |
| `t` | トポロジー | ブランチ健全性と推奨アクション |
| `D` | ヘルスダッシュボード | プロジェクト健全性スコア(0-100) |

### スマートフィルター

<!-- ![filter](assets/filter.gif) -->

直感的な構文による強力なフィルタリング:

```
/author:john              # 著者でフィルター
/since:7days              # 最近のコミット
/until:2024-01-01         # 指定日以前
/message:fix              # コミットメッセージ検索
/file:src/main.rs         # 特定ファイルに関するコミット
/hash:abc123..def456      # コミット範囲
```

フィルターの組み合わせ: `/author:john since:1week file:*.rs`

### Dashboardレイアウト

サイドバーとコンテキストに応じたメインパネルによる統一的なDashboardレイアウト:

```
┌──────────────────┬────────────────────────────────────────┐
│ 1 Status         │                                        │
│ repo: gitstack   │                                        │
│ branch: main ↑2  │                                        │
├──────────────────┤                                        │
│ 2 Commits        │          Main Panel                    │
│ ● abc123 feat..  │     (context-sensitive view)           │
│ ● def456 fix..   │                                        │
│ ◆ ghi789 merge   │   Commits → diff/detail                │
│ ○ jkl012 chore   │   Branches → compare/topology          │
├──────────────────┤   Files → patch/diff                   │
│ 3 Branches       │   Stash → stash diff                   │
│ ● main           │   Status → health dashboard            │
│   feat/auth      │                                        │
│   fix/bug-123    │                                        │
├──────────────────┤                                        │
│ 4 Files          │                                        │
│ M src/main.rs    │                                        │
│ A src/new.rs     │                                        │
├──────────────────┤                                        │
│ 5 Stash          │                                        │
│   stash@{0}: WIP │                                        │
└──────────────────┴────────────────────────────────────────┘
 j/k:move  Enter:detail  1-5:panel  Tab:focus  h/l:side/main  ?:help  q:quit
```

サイドバーには5つのパネル(Status, Commits, Branches, Files, Stash)があります。`1`-`5`で切替、メインパネルはアクティブなサイドバーパネルに応じて自動更新されます。`Tab`でサイドバーとメインパネルのフォーカスを切替、または`h`/`l`でフォーカス方向を変更できます。

Commitsメインパネルにフォーカス(`l`または`Tab`)すると、`j`/`k`で変更ファイルをナビゲート、`Enter`/`Space`でファイルdiffの展開/折りたたみ、`e`/`E`で全diffの一括展開/折りたたみが可能です。

### ブランチグラフ

スマートな色割り当てによるカラーコード付きブランチ可視化:
- 隣接レーンは同じ色にならない
- 同じ分岐元からのブランチは異なる色を取得
- 適切な線接続によるクリアなマージ可視化

### プロジェクトヘルスダッシュボード

`D`を押してプロジェクト健全性を表示:

```
┌─ ヘルスダッシュボード ─────────────────────────────┐
│  総合スコア: 78 / 100 (Good)                       │
│  ████████░░                                        │
│                                                    │
│  品質         ████████░░  82%                      │
│  テスト健全性 ██████░░░░  65%                      │
│  バスファクター █████████░  90%                    │
│  技術的負債   ███████░░░  75%                      │
│                                                    │
│  ⚠ Warning: 放置ブランチが3件あります              │
│  ℹ Info: テストカバレッジを改善できます            │
└────────────────────────────────────────────────────┘
```

### ブランチ推奨

トポロジービュー(`t`)で各ブランチの推奨アクションを表示:

| アイコン | アクション | 意味 |
|---------|----------|------|
| 🗑 | Delete | マージ済み or 60日以上放置 |
|| Rebase | mainから大幅に遅れている |
|| Merge | マージ可能(ahead > 0) |
| 👁 | Review | 長寿命ブランチ、要確認 |

### CLIモード(非対話)

AIコーディングアシスタントやスクリプトから利用可能なJSON出力:

```bash
gitstack --stats       # 著者統計
gitstack --heatmap     # ファイル変更頻度
gitstack --impact      # コミット影響度スコア
gitstack --health      # プロジェクト健全性スコア
gitstack --pack        # AI向けインサイトパック
gitstack --review-pack # AIレビュー判断パック
```

> 全オプションと例: [docs/CLI.ja.md]docs/CLI.ja.md

### AI Terminal Cockpit (v5.0)

v5.0では、AIが生成した変更の理解・管理を支援する機能を追加:

- **ウォッチモード** (`W`): ファイル変更のリアルタイム検知(500ms間隔)
- **変更意図アイコン**: コミット意図の自動分類(✦Feature/✧Fix/↻Refactor/◇Docs/◈Test/○Chore)
- **AIセッション可視化**: Co-authorパターンからAIセッションを検出し、セッション区切り線を表示
- **ステージリスクスコアリング**: ファイル数・ヒートマップ・所有権・変更行数からリスクバッジを表示
- **スマートステージング** (`S` ステータスビュー内): ディレクトリ・テスト/実装ペアでのグループ提案
- **ワンキーPR作成** (`P`): `gh` CLI連携による自動ボディ生成付きPR作成
- **レビューキュー** (`R`): MCP経由のレビューリクエストをapprove/rejectで管理
- **PR分割提案**: 10+ファイルステージ時に独立クラスタを検出し分割を提案
- **MCP書き込みツール**: 8つのGit書き込み操作(`dry_run`安全機構付き、デフォルトtrue)

### MCPサーバー

gitstackはClaude CodeなどのAIアシスタント向けMCP(Model Context Protocol)サーバーを同梱しています。リソースとツールの詳細は [docs/MCP.ja.md](docs/MCP.ja.md) を参照してください。

## 比較

| 機能 | gitstack | keifu | lazygit | tig |
|------|:--------:|:-----:|:-------:|:---:|
| 著者統計 |||||
| ファイルヒートマップ |||||
| コードオーナーシップ |||||
| Impact Score |||||
| **ヘルスダッシュボード** |||||
| **AIセッション追跡** |||||
| **変更意図アイコン** |||||
| **ステージリスクスコア** |||||
| ブランチ健全性/推奨 |||||
| スマートフィルター構文 |||||
| Dashboardレイアウト |||||
| コミット範囲フィルター |||||
| ブランチグラフ |||||
| ステージング/コミット |||||
| Pull/Push |||||
| ブランチ作成/削除 |||||
| インタラクティブリベース |||||
| CLI/JSON出力 |||||
| MCPサーバー |||||

## キーバインド

### ナビゲーション
| キー | 操作 |
|------|------|
| `j` / `k` | 下へ / 上へ移動 |
| `g` / `G` | 先頭 / 末尾へ |
| `Ctrl+d` / `Ctrl+u` | ページダウン / アップ |

### Dashboard
| キー | 操作 |
|------|------|
| `1`-`5` | サイドバーパネル切替 |
| `Tab` | サイドバー/メインのフォーカス切替 |
| `h` / `l` | サイドバー / メインパネルにフォーカス |

### ビュー
| キー | 操作 |
|------|------|
| `A` | 著者統計 |
| `H` | ファイルヒートマップ |
| `t` | ブランチトポロジー |
| `D` | ヘルスダッシュボード |
| `.` | クイックアクションメニュー |

### アクション
| キー | 操作 |
|------|------|
| `/` | フィルターを開く |
| `Enter` | 詳細表示 / diff展開 |
| `y` | コミットハッシュをコピー |
| `b` | ブランチ選択 |
| `s` | ステータスビュー |
| `W` | ウォッチモード |
| `P` | PR作成 |
| `R` | レビューキュー |
| `?` | ヘルプ |
| `q` | 終了 |

> 全キーバインド一覧: [docs/KEYBINDINGS.ja.md]docs/KEYBINDINGS.ja.md

## 設定

設定ファイル: `~/.config/gitstack/config.toml`

```toml
[metrics]
quick_action_usage = true  # ローカルのクイックアクション使用追跡を有効化(デフォルト: false)
```

## ライセンス

MIT

---

[English](README.md) · [設計書](docs/DESIGN.md)