Skip to content

feat: PR 作成フロー(push→gh pr create)+ツール診断 doctor#33

Merged
sasagar merged 1 commit into
devfrom
feature/pr-create-doctor
Jul 2, 2026
Merged

feat: PR 作成フロー(push→gh pr create)+ツール診断 doctor#33
sasagar merged 1 commit into
devfrom
feature/pr-create-doctor

Conversation

@sasagar

@sasagar sasagar commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Closes #14
Closes #15

概要

セッションから PR を作成できるようにし(#14)、外部ツールの存在検査と機能ゲートを追加(#15)。

#14: PR 作成

  • セッションバーに PR ボタン: PR 無し→作成シート、PR 有り→ブラウザで開く
  • 作成シート: ベースブランチ(dev を優先して初期選択)/タイトル(直近コミット件名を初期値)/本文(Closes #N で Issue 紐づけ)/Draft 既定 ON
  • 実行順: git push -u origin HEADgh pr create → 作成 PR をブラウザで開く → バッジ再取得。
  • ghstderr をエラー表示(未認証・重複 PR などの理由が見える)。

#15: doctor

  • ToolDoctor: 起動時に git / gh / claude の存在+バージョンを検査。GUI の乏しい PATH を考慮し Homebrew・mise shims・~/.claude/local 等も探索。
  • 設定 > 一般に「ツール診断」セクション(✓/✗・バージョン・パス hover・再検査)。
  • 機能ゲート: claude 不在→Claude 起動ボタン無効、gh 不在→PR ボタン無効(理由を help に表示)。

確認

  • swift test 全緑・xcodebuild 成功・起動してクラッシュ無し。
  • 実 PR 作成の E2E は未実施(実リポジトリにゴミ PR を作らないため)。シートの表示・診断セクションは画面ロック中のため未撮影 — 次回起動時に確認可。

#14: セッションバーに PR ボタンを追加。PR が無ければ作成シート
(ベースブランチ/タイトル/本文/Draft 既定ON)→ git push -u origin HEAD →
gh pr create → 作成した PR をブラウザで開く。PR があればブラウザで開く。
gh の stderr をエラーに載せ、未認証・重複PR などの理由を UI に表示。

#15: ToolDoctor が起動時に git/gh/claude の存在とバージョンを検査
(GUI の乏しい PATH を考慮し Homebrew/mise shims/~/.claude/local も探索)。
設定 > 一般に「ツール診断」セクション(状態・バージョン・再検査)。
claude 不在は起動ボタン、gh 不在は PR ボタンを無効化し理由を help に表示。

Closes #14
Closes #15
@sasagar sasagar marked this pull request as ready for review July 2, 2026 01:04
@sasagar sasagar merged commit 3e9c769 into dev Jul 2, 2026
1 check passed
@sasagar sasagar deleted the feature/pr-create-doctor branch July 2, 2026 01:05
sasagar added a commit that referenced this pull request Jul 2, 2026
コードレビュー(#33)で見つかった「doctor のゲートが実行経路と食い違う」系の
不具合をまとめて対処する。

- ToolLocator にツール解決を集約(固定候補+PATH+ログインシェル)。doctor(gh)
  の判定と GitHubEngine.locateGH が同じ解決を使い、PR ボタンの有効状態と実際の
  gh 起動可否が一致する(mise shims / Nix パスの非対称を解消)。
- Claude 起動ボタンの doctor 依存の無効化を撤去。起動は端末(ログインシェル)で
  claude を解決するため、検出漏れで中核機能を塞がない。未検出時は help で注意喚起。
- ProcessRunner(両パイプ並行 drain+timeout)を共有化し、ToolDoctor.runVersion の
  未 drain・無 timeout による恒久ハング(checking が固まる)を解消。
- gh pr create の stdout から URL 行を抽出(助言行が混ざっても PR を開ける)。
- PR 作成失敗時、空 stderr で空エラーラベルにならないよう localizedDescription に
  フォールバック。
- createPullRequest はセッション未検出時に "" を返さず throw(黙って dismiss しない)。
- GitHubEngine.parsePRURL / parseChecks に単体テストを追加。
sasagar added a commit that referenced this pull request Jul 2, 2026
#14: セッションバーに PR ボタンを追加。PR が無ければ作成シート
(ベースブランチ/タイトル/本文/Draft 既定ON)→ git push -u origin HEAD →
gh pr create → 作成した PR をブラウザで開く。PR があればブラウザで開く。
gh の stderr をエラーに載せ、未認証・重複PR などの理由を UI に表示。

#15: ToolDoctor が起動時に git/gh/claude の存在とバージョンを検査
(GUI の乏しい PATH を考慮し Homebrew/mise shims/~/.claude/local も探索)。
設定 > 一般に「ツール診断」セクション(状態・バージョン・再検査)。
claude 不在は起動ボタン、gh 不在は PR ボタンを無効化し理由を help に表示。

Closes #14
Closes #15
sasagar added a commit that referenced this pull request Jul 2, 2026
コードレビュー(#33)で見つかった「doctor のゲートが実行経路と食い違う」系の
不具合をまとめて対処する。

- ToolLocator にツール解決を集約(固定候補+PATH+ログインシェル)。doctor(gh)
  の判定と GitHubEngine.locateGH が同じ解決を使い、PR ボタンの有効状態と実際の
  gh 起動可否が一致する(mise shims / Nix パスの非対称を解消)。
- Claude 起動ボタンの doctor 依存の無効化を撤去。起動は端末(ログインシェル)で
  claude を解決するため、検出漏れで中核機能を塞がない。未検出時は help で注意喚起。
- ProcessRunner(両パイプ並行 drain+timeout)を共有化し、ToolDoctor.runVersion の
  未 drain・無 timeout による恒久ハング(checking が固まる)を解消。
- gh pr create の stdout から URL 行を抽出(助言行が混ざっても PR を開ける)。
- PR 作成失敗時、空 stderr で空エラーラベルにならないよう localizedDescription に
  フォールバック。
- createPullRequest はセッション未検出時に "" を返さず throw(黙って dismiss しない)。
- GitHubEngine.parsePRURL / parseChecks に単体テストを追加。
sasagar added a commit that referenced this pull request Jul 2, 2026
#14: セッションバーに PR ボタンを追加。PR が無ければ作成シート
(ベースブランチ/タイトル/本文/Draft 既定ON)→ git push -u origin HEAD →
gh pr create → 作成した PR をブラウザで開く。PR があればブラウザで開く。
gh の stderr をエラーに載せ、未認証・重複PR などの理由を UI に表示。

#15: ToolDoctor が起動時に git/gh/claude の存在とバージョンを検査
(GUI の乏しい PATH を考慮し Homebrew/mise shims/~/.claude/local も探索)。
設定 > 一般に「ツール診断」セクション(状態・バージョン・再検査)。
claude 不在は起動ボタン、gh 不在は PR ボタンを無効化し理由を help に表示。

Closes #14
Closes #15
sasagar added a commit that referenced this pull request Jul 2, 2026
コードレビュー(#33)で見つかった「doctor のゲートが実行経路と食い違う」系の
不具合をまとめて対処する。

- ToolLocator にツール解決を集約(固定候補+PATH+ログインシェル)。doctor(gh)
  の判定と GitHubEngine.locateGH が同じ解決を使い、PR ボタンの有効状態と実際の
  gh 起動可否が一致する(mise shims / Nix パスの非対称を解消)。
- Claude 起動ボタンの doctor 依存の無効化を撤去。起動は端末(ログインシェル)で
  claude を解決するため、検出漏れで中核機能を塞がない。未検出時は help で注意喚起。
- ProcessRunner(両パイプ並行 drain+timeout)を共有化し、ToolDoctor.runVersion の
  未 drain・無 timeout による恒久ハング(checking が固まる)を解消。
- gh pr create の stdout から URL 行を抽出(助言行が混ざっても PR を開ける)。
- PR 作成失敗時、空 stderr で空エラーラベルにならないよう localizedDescription に
  フォールバック。
- createPullRequest はセッション未検出時に "" を返さず throw(黙って dismiss しない)。
- GitHubEngine.parsePRURL / parseChecks に単体テストを追加。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant