Skip to content

release: 0.3.0 統合(dev → main)#39

Merged
sasagar merged 6 commits into
mainfrom
dev
Jul 2, 2026
Merged

release: 0.3.0 統合(dev → main)#39
sasagar merged 6 commits into
mainfrom
dev

Conversation

@sasagar

@sasagar sasagar commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

0.3.0 リリース統合(dev → main)

前回 0.2.0 以降に dev へ入った変更をまとめて main へ。dev は main の linear な子孫に再構成済み(#33#38 のみ)。マージ後 release-please が 0.3.0 の version/CHANGELOG/タグを起票する。

含まれる変更

PR 種別 内容
#33 feat PR 作成フロー(push→gh pr create)+ツール診断 doctor
#34 fix doctor 判定と実行経路の食い違い等を修正(ToolLocator/ProcessRunner に統一)
#35 refactor Swift 6 言語モード移行(エンジン/ストア/アプリ)
#36 feat エージェントアダプタ抽象(Claude/Codex/Gemini)+能力ベース UI 出し分け(#17
#37 feat セッション間の変更ファイル逆引き+コンフリクト警告(#18
#38 feat 使用量/コストの推定表示(transcript 集計)(#19

検証

  • swift test: 53 passed / app build 成功。

運用メモ

  • 今回から dev を main の linear 子孫に保つ運用(release 後に dev を main へ同期)。dev↔main の SHA 乖離を溜めない。

sasagar added 6 commits July 2, 2026 23:30
#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
コードレビュー(#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 に単体テストを追加。
#16 の前段。CLAUDE.md の「落ち着いたら .v6 へ」に沿って strict concurrency へ。

- Package の全ターゲットを .swiftLanguageMode(.v6) に。
- アプリの SWIFT_VERSION を 6.0 に。
- プロセス実行の並行 drain で captured var を変異していた 3 箇所(ProcessRunner /
  GitRunner / GitHubEngine.run)を、ロック付き Sendable な DataBox 経由に統一して
  #SendableClosureCaptures 警告を解消。
- エンジン/ストア: 警告0・swift test 29 passed。アプリ: concurrency 警告0
  (既存の NSSplitViewDelegate シグネチャ警告のみ・本移行とは無関係)。

TCA 化(UI 層のリライト)は #16 の後段として継続。
#17。1 つ目=Claude(hooks)に加え、hooks 無しで degrade する 2 例(Codex/Gemini)を
追加し、能力フラグで UI を出し分ける。

- LaboLaboEngine に AgentAdapter / AgentCapabilities / StatusReporting とレジストリ
  AgentAdapters(claude/codex/gemini・find/default)を追加。能力: Claude=hooks/resume/
  nativeWorktree、Codex=none/resume、Gemini=none/非resume。
- AgentSessionModel をアダプタ駆動に。launchCommand・canResume をアダプタへ委譲し、
  hooks 注入(settings.local.json)は statusReporting==.hooks のときのみ行う。
- セッションにアダプタ種別を永続化(DB v3-adapter / SessionRecord.adapterId /
  RepoSession.adapterID)。復元・新規作成・既存フォルダ/org オープンで引き回し。
- New Session シートにエージェント選択を追加。ライブ状態非対応は注意書きを表示。
- セッションバーの起動ボタンをアダプタ対応(表示名・アイコン・ツールチップ・再開可否)。
- テスト: 能力・launchCommand(resume 出し分け・shell quoting)・レジストリ・DB
  adapterId ラウンドトリップ(swift test 40 passed / app build 成功)。

Closes #17
#18。同一リポジトリの複数セッション(別 worktree/ブランチ)が同じファイルを編集して
いたら警告する。

- LaboLaboEngine に純粋関数 CrossSessionConflicts(同一 repoKey で変更パスが重なるものを
  列挙)を追加。
- SessionStore が変更ファイルの逆引き(session→変更パス集合)を保持。多重 repo のセッション
  だけ git status を 5s 間隔+セッション/repo 解決時にリフレッシュ。
- SessionDetailView 上部に ConflictBanner を追加。件数・ファイル一覧を表示し、どの他
  ブランチ/セッションと衝突しているかを help に出す。
- テスト: CrossSessionConflicts 6 件(同一/別 repo・単独・未解決 repoKey・複数他者・空集合)。
  swift test 46 passed / app build 成功。

逆引きはライブ git status から都度計算(常に最新)。永続テーブル(session_file)は陳腐化リスク
があり本警告には不要なため見送り。

Closes #18
#19。stream-json 不在のため transcript(JSONL) から usage を集計し、推定として表示する。
コストで機能は gate しない。

- LaboLaboEngine に TranscriptUsage(assistant 行の usage 合算)/AgentUsage/
  ModelPricing(opus/sonnet/haiku の概算単価)を追加。純粋関数でテスト可能。
- AgentSessionModel が応答完了/終了(Stop/SessionEnd)時に transcript を
  バックグラウンドで読み usage を更新(hooks 方式のときのみ得られる)。
- セッションバーに使用量ボタン+ポップオーバーを追加。モデル・トークン内訳・推定
  コストを表示し「推定・実課金と一致しない場合あり」を明示。
- テスト: TranscriptUsage 7 件(合算・不正行無視・空・コスト推定・ファミリ判定)。
  swift test 53 passed / app build 成功。

Closes #19
@sasagar sasagar merged commit 2ccec0a into main Jul 2, 2026
3 checks passed
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