Skip to content

Latest commit

 

History

History
340 lines (271 loc) · 12.2 KB

File metadata and controls

340 lines (271 loc) · 12.2 KB

Rocket - Git GUI Client 機能仕様書

概要

RocketはRust (Tauri v2) + React (TypeScript) で構築されたモダンなGit GUIクライアントです。直感的なUIと高速なパフォーマンスを両立し、日常のGit操作を効率化します。

コア機能

CLIインターフェース

  • 基本起動:
rocket .           # カレントディレクトリを開く
rocket /path/to/repo  # 指定パスを開く
rocket             # 最後に開いたリポジトリ or ホーム画面
  • クローン & 起動:
rocket clone https://github.com/user/repo.git
rocket clone git@github.com:user/repo.git ./myrepo
  • オプション:
rocket . --new-window    # 新しいウィンドウで開く
rocket . --tab           # 既存ウィンドウの新規タブで開く
rocket . --status        # ステータスのみ表示(TUI)
rocket . --diff          # 差分ビューで開く
rocket . --log           # 履歴ビューで開く
  • クイックアクション:
rocket commit            # コミットダイアログを直接開く
rocket commit -m "msg"   # メッセージ指定でコミット
rocket push              # プッシュ実行
rocket pull              # プル実行
  • シェル補完: bash/zsh/fish補完スクリプト提供
  • エイリアス登録: rkt 等の短縮コマンド設定

リポジトリ管理

  • リポジトリを開く: ローカルリポジトリをブラウズして開く
  • クローン: URLからリポジトリをクローン(HTTPS/SSH対応)
  • 初期化: 新規リポジトリの作成(git init)
  • 最近開いたリポジトリ: 履歴から素早くアクセス
  • 複数リポジトリのタブ表示: 複数リポジトリを同時に操作
  • .gitignoreテンプレート: GitHub公式テンプレートから生成
    • テンプレート取得元: https://github.com/github/gitignore
    • 言語/フレームワーク別テンプレート選択(Go, Node, Python, etc.)
    • 複数テンプレートの組み合わせ
    • Global gitignore(OS/エディタ用)の追加
    • カスタムルールの追記
    • 既存.gitignoreとのマージ

変更の確認・ステージング

  • ワーキングツリーの状態表示: 変更ファイル一覧
  • 差分ビューア: ファイルごとの変更内容をハイライト表示
    • 行単位の差分表示
    • 単語単位の差分ハイライト
    • サイドバイサイド / インライン切り替え
  • ステージング操作:
    • ファイル単位でステージ/アンステージ
    • ハンク(変更ブロック)単位でステージ
    • 行単位でステージ
  • 変更の破棄: ファイル/ハンク単位で変更を元に戻す

コミット

  • コミットメッセージ入力: 件名と本文を分けて入力
  • Amend: 直前のコミットを修正
  • 署名付きコミット: GPG/SSH署名対応

ブランチ管理

  • ブランチ一覧: ローカル/リモートブランチの表示
  • ブランチ作成: 新規ブランチの作成
  • チェックアウト: ブランチの切り替え
  • マージ: ブランチのマージ(fast-forward / no-ff選択可)
  • リベース: インタラクティブリベース対応
  • ブランチ削除: ローカル/リモートブランチの削除
  • ブランチ名変更: ブランチのリネーム

リモート操作

  • Fetch: リモートから最新情報を取得
  • Pull: リモートの変更を取り込み(merge/rebase選択可)
  • Push: ローカルの変更をリモートに送信
    • Force push(with-lease)オプション
  • リモート管理: リモートの追加/編集/削除
  • プッシュ先の設定: アップストリームの設定

履歴・ログ表示

  • コミットグラフ: ブランチ構造を視覚的に表示
  • コミット詳細: 各コミットの変更内容を表示
  • フィルタリング:
    • 作者で絞り込み
    • 日付範囲で絞り込み
    • ファイルパスで絞り込み
    • メッセージ検索
  • ファイル履歴: 特定ファイルの変更履歴を追跡
  • Blame表示: 各行の最終変更者を表示

スタッシュ

  • スタッシュ作成: 変更を一時退避
  • スタッシュ一覧: 保存済みスタッシュの表示
  • 適用/ポップ: スタッシュを復元
  • ドロップ: スタッシュを削除
  • スタッシュの差分表示: 内容のプレビュー

タグ

  • タグ一覧: ローカル/リモートタグの表示
  • タグ作成: 軽量タグ/注釈付きタグの作成
  • タグ削除: ローカル/リモートタグの削除
  • タグへのチェックアウト: detached HEAD状態で確認

マージ・コンフリクト解決

  • コンフリクトファイル一覧: 競合中のファイルを表示
  • 3ウェイマージビューア: Base/Ours/Theirsを並べて表示
  • 手動解決支援: 各変更を選択して適用
  • マージ完了: コンフリクト解決後のコミット

サブモジュール

  • サブモジュール一覧: 登録済みサブモジュールの表示
  • 追加: 新規サブモジュールの追加
  • 更新: サブモジュールの同期
  • 削除: サブモジュールの削除

追加機能

検索

  • ファイル内容検索: リポジトリ全体からテキスト検索(git grep)
  • コミット検索: コミットメッセージ/差分から検索
  • ファイル名検索: パターンでファイルを検索

ワークツリー

  • ワークツリー一覧: 関連ワークツリーの表示
  • ワークツリー追加: 新規ワークツリーの作成
  • ワークツリー削除: 不要なワークツリーの削除

Cherry-pick

  • コミットの選択: 履歴から適用したいコミットを選択
  • Cherry-pick実行: 選択コミットを現在のブランチに適用
  • 範囲指定: 複数コミットの一括適用

Revert

  • コミットの取り消し: 指定コミットを打ち消すコミットを作成

Reset

  • Soft/Mixed/Hard Reset: コミット位置の移動
  • ファイル単位のReset: 特定ファイルを特定コミットの状態に戻す

Reflog

  • Reflog表示: HEAD/ブランチの移動履歴
  • 復元操作: 失われたコミットの救出

認証

  • Git Credential Helper連携: ユーザーの既存認証設定を自動利用
    • git credential fill 経由で認証情報を取得
    • 追加の認証設定なしでプライベートリポジトリにアクセス可能
    • 対応するcredential helper:
      • macOS Keychain (osxkeychain)
      • Windows Credential Manager (manager)
      • gh CLI (gh auth git-credential)
      • その他ユーザー設定済みのhelper
  • SSH認証:
    • SSH鍵ファイル指定(~/.ssh/id_rsa, id_ed25519 等)
    • ssh-agent連携(登録済み鍵を自動使用)
    • パスフレーズ入力ダイアログ
  • HTTPS認証:
    • Personal Access Token入力
    • credential helperへの保存オプション
  • 認証情報の優先順位:
    1. 環境変数(GH_TOKEN, GITHUB_TOKEN
    2. credential helper(設定済みの場合)
    3. 手動入力(初回のみ)

AI連携

  • コミットメッセージ生成:
    • ステージング済み差分からメッセージを自動生成
    • Conventional Commits形式対応(feat/fix/docs等)
    • 日本語/英語切り替え
    • 生成後の編集・調整
  • 差分サマリー:
    • 変更内容の要約を自然言語で表示
    • 大規模な変更の概要把握に活用
  • PR/MR説明文生成:
    • ブランチ全体の変更からPR説明文を生成
    • テンプレートに沿った構造化出力
  • コードレビュー支援:
    • 差分に対するレビューコメント提案
    • 潜在的なバグ・問題点の指摘
    • セキュリティリスクの検出
  • PRレビュー効率化ビュー:
    • リスクの高い差分を自動ハイライト
    • 依存パッケージのアップデート検出
    • 公開API変更の自動検出
    • レビュー優先順位の提示
    • ファイル単位の複雑度・影響度スコア表示
  • AIアクション実行(Human-in-the-loop):
    • レビューコメントから修正パッチを自動生成
    • Issueから実装案・テストコードを生成
    • 提案内容のプレビュー → 承認 → 適用のワークフロー
    • 生成されたコードの差分確認・部分採用
    • 自動コミットせず最終判断は人が行う
  • コンフリクト解決支援:
    • 競合箇所の意図を解析
    • マージ案の提示
  • コミット履歴の要約:
    • 指定期間/ブランチのChangelog生成
    • リリースノート作成支援
  • 対応LLMプロバイダー:
    • OpenAI API(GPT-4等)
    • Anthropic API(Claude)
    • ローカルLLM(Ollama連携)
    • カスタムエンドポイント設定
  • LLM CLIアダプター(汎用CLI連携機能):
    • 任意のLLM CLIツールを統一インターフェースで呼び出し
    • プリセット対応CLI:
      • Claude Code (claude -p)
      • OpenAI Codex CLI (codex)
      • GitHub Copilot CLI (gh copilot)
      • Aider (aider)
      • LLM CLI (llm)
      • Gemini CLI (gemini)
    • カスタムCLI登録:
# ~/.config/rocket/cli-adapters.yaml
adapters:
  - name: "my-custom-llm"
    command: "/usr/local/bin/my-llm"
    args: ["--prompt", "{{prompt}}"]
    stdin: true # 差分をstdinで渡す
    timeout: 60s
  • 機能別のCLI割り当て:

    • コミットメッセージ生成 → Claude Code
    • コードレビュー → Codex
    • 等、用途ごとに使い分け可能
  • CLI自動検出: PATH上の対応CLIを検出して利用可能リスト表示

  • サブスクリプション活用: Claude Max/Pro、Copilot契約者は追加料金なし

  • プライバシー設定:

    • 送信するコード範囲の制限
    • 機密ファイルの除外パターン設定
    • ローカルLLM優先モード
  • AI利用の優先順位設定:

    1. LLM CLI(インストール済み & 認証済みの場合)
    2. ローカルLLM(Ollama)
    3. API直接利用(要APIキー設定)

UI/UX機能

カスタマイズ

  • テーマ: ライト/ダークモード切り替え
  • カラーテーマ: アクセントカラーの選択(Cobalt / Emerald / Rose / Amber / Slate / Violet)
  • カスタムカラーテーマ: 設定ファイルで独自テーマを追加可能
# ~/.config/rocket/themes/my-theme.yaml
name: "My Theme"
dark:
  bg-primary: "#0f1419"
  bg-secondary: "#151b22"
  text-primary: "#e6edf3"
  accent: "#58a6ff"
  added: "#3fb950"
  removed: "#f85149"
light:
  bg-primary: "#ffffff"
  bg-secondary: "#f6f8fa"
  text-primary: "#1f2328"
  accent: "#0969da"
  added: "#1a7f37"
  removed: "#cf222e"
  • フォント設定: フォントファミリー/サイズの変更
  • キーバインド: ショートカットのカスタマイズ
  • レイアウト: パネル配置のカスタマイズ

GitHub/GitLab連携

  • PR/MR作成: ブラウザでPR作成ページを開く
  • Issue参照: コミットメッセージからIssueへリンク
  • CI/CD状態表示: パイプライン結果の表示

その他

  • Gitconfig編集: GUIからGit設定を編集
  • GPG鍵管理: 署名用鍵の設定
  • SSH鍵管理: 認証用SSH鍵の設定
  • 通知: 操作完了/エラー時の通知
  • 自動fetch: バックグラウンドで定期的にfetch

技術仕様

技術スタック

  • 言語: Rust(ADR-0001)
  • GUIフレームワーク: Tauri v2(ADR-0002)
  • フロントエンド: React (TypeScript)(ADR-0002)
  • Gitバックエンド: git2-rs メイン + git CLI フォールバック(ADR-0003)
  • 配布: Tauriバンドラーによるインストーラー自動生成(.dmg / .msi / .deb / .rpm / .AppImage)

対応プラットフォーム

  • macOS
  • Linux
  • Windows

パフォーマンス要件

  • 大規模リポジトリ(10万コミット以上)でもスムーズに動作
  • 差分計算の非同期処理
  • 履歴の遅延読み込み(lazy loading)