feat(gh): gh pr-graph を導入し herdr の gh dash keybind を置き換える - #53
Conversation
gh pr-graph (orangain/gh-pr-graph) は自分が author / assignee / reviewer の PR を横断で集め、base/head ブランチを再帰的にたどって stacked PR の依存関係を グラフとして描く gh 拡張。フラットな PR 一覧では見えないレビュー順や下流の 作業が一目で分かるので、herdr の `prefix+ctrl+p` を gh dash から置き換える。 - nixpkgs 未収録なので nvfetcher + buildGoModule で自前ビルドする (tcmux と同形)。 go.mod に require が無いため vendorHash = null。 - home-manager の programs.gh.extensions は pname をそのまま ~/.local/share/gh/extensions/<pname> に link farm するため、 pname と $out/bin のバイナリ名を "gh-pr-graph" に揃えている。 - gh pr-graph は TUI ではなく 127.0.0.1 にサーバを立ててブラウザを開き、 Ctrl-C まで居座る。popup は session-modal でブラウザ閲覧中ずっと herdr を ブロックしてしまうため、keybind の type は popup ではなく pane にした。 - gh dash 自体は CLI から使えるよう extensions には残す。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QYmZcVLWwWwJ1MvuTSy2xs
This comment has been minimized.
This comment has been minimized.
CI 状況
この PR が触る部分はすべて緑です。
|
oberon (nixpkgs-stable / nixos-25.11) の `build-nixos` が `attribute 'gh-stack' missing` で落ちていた。gh-stack は nixpkgs unstable に しか無く、unstable を使う darwin 2 host では通るが stable の oberon では 評価に失敗する。master から続く既存の問題。 claude-code / fish / git / opencode と同じ common.nix / server.nix の慣習に 合わせて gh モジュールを分割する。 - gh/common.nix: stable にも存在する gh-dash / gh-poi + settings + gh-prism - gh/default.nix: common.nix を import し、darwin 用に gh-stack と gh-pr-graph を追加 (extensions は list なのでマージされる) - gh/server.nix: oberon 用。common.nix だけ - hosts/oberon/home.nix: import 先を gh/server.nix に変更 副次効果として、ローカルサーバを立ててブラウザを開く gh-pr-graph が ヘッドレスな oberon に載らなくなる。これも意図した挙動。 Claude-Session: https://claude.ai/code/session_01QYmZcVLWwWwJ1MvuTSy2xs Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Nix Diffkohei-m4-mac-miniAttribute: Diff OutputSC-N-843Attribute: Diff Output
Generated by nix-diff-action using dix |
CI 全ジョブ緑になりました先のコメントで報告した
本文の検証セクションについての補足PR 本文には「egress policy で nix-diff の結果も、#54 のマージ後で master に対する darwin の差分は変わらず gh モジュールの分割が darwin に対して no-op であることが CI 側でも裏付けられています。 Generated by Claude Code |
概要
記事「AI時代のPR管理画面 gh pr-graph を激推ししている」で紹介されている
orangain/gh-pr-graphを導入し、herdr のprefix+ctrl+pをgh dashからgh pr-graphに置き換える。gh pr-graphは自分が author / assignee / reviewer になっている PR をリポジトリ横断で集め、base/head ブランチを再帰的にたどって stacked PR の依存関係を有向グラフとして描く gh 拡張。フラットな PR 一覧では見えないレビュー順や下流の作業が一目で分かる。変更内容
gh pr-graphのパッケージングnixpkgs に未収録なので nvfetcher +
buildGoModuleで自前ビルドする(tcmuxと同じ形)。nvfetcher.toml/_sources/generated.nix:orangain/gh-pr-graphv0.14.5 を追加home-manager/programs/gh/gh-pr-graph.nix: 新規。go.modに require が無い(依存ゼロ)ためvendorHash = nullhome-manager/programs/gh/default.nix:sourcesを受け取って extensions に追加home-manager の
programs.gh.extensionsは package のpnameをそのまま~/.local/share/gh/extensions/<pname>に link farm する。ghは<dir>/gh-pr-graphという実行ファイルを探すため、pnameと$out/binのバイナリ名を両方gh-pr-graphに揃えている。gh dash自体は CLI から使えるよう extensions には残している。herdr keybind の置き換え
configs/.config/herdr/config.tomlのprefix+ctrl+p:gh dashgh pr-graphpopuppanegh pr-graphは TUI ではなく 127.0.0.1 にローカルサーバを立ててブラウザを開き、Ctrl-C まで前面に居座るタイプ。herdr のpopupは session-modal なので、ブラウザでグラフを見ている間ずっと herdr 側がブロックされてしまう。pane(コマンド終了で自動的に閉じる一時ペイン)なら他のペインを触りながらサーバを生かしておけるため、こちらを使う。herdr の keybind type は
shell/pane/popup/plugin_actionの 4 種類で、paneは「一時ペインを開きコマンド終了時に閉じる」挙動(herdrsrc/config/keybinds.rs,src/main.rsのコメントで確認)。width/heightは popup 専用のため削除した。検証
このクラウドセッションでは egress policy により GitHub の tarball 取得がブロックされ、flake input を fetch できないため
nix eval .#darwinConfigurations...(CLAUDE.md 記載の検証コマンド)は実行できなかった。代わりに channel の nixpkgs を使って以下を確認している。darwin / oberon 構成の eval は手元で再確認してほしい。sha256の正当性: v0.14.5 のチェックアウトをnix-store --add-fixed --recursive sha256で store に追加したところ、derivation が要求する fixed-output path と完全に一致したbuildGoModuleでビルド成功。$out/bin/gh-pr-graphが生成され、checkPhaseも通るGH_PR_GRAPH_DEMO=1 gh-pr-graph --no-open --port 0で起動し、gh pr-graph v0.14.5と version が正しく埋め込まれていること、/(embed された web asset、<title>PR Graph</title>)と/api/v1/graphが 200 を返すことを確認linkFarmを組み立ててビルドし、gh-extensions/gh-pr-graph/gh-pr-graphが生成されることを確認(ghが拡張を発見できる配置)nixfmt --checkが通るprefix+ctrl+p | pane | gh pr-graphになっていることを確認適用後の手順
gh pr-graphはgh auth login済みのghCLI 経由で GitHub にアクセスする(認証情報はブラウザには渡らない)。追加の設定は不要。Generated by Claude Code