Conversation
OpenAI Codex 互換の `codex-fugu` を起動する Agent CLI を追加する。 設定画面・feature 表ではユーザー向け表示名を `sakana.ai` とする。 変更内容: - domain: `AgentCli::CodexFugu` を追加(command()=`codex-fugu`、保存値 `codex_fugu`) - infra: `CodexAgent` を起動プログラム名と rollout 保存先でパラメータ化し、 `fugu()`(`codex-fugu` / `~/.codex-fugu`)として Codex 実装を再利用 - feature: Codex と同一の全統合機能に対応 - presentation: Config 画面・`usagi feature` の表示名を `sakana.ai` に。 グローバル設定・ワークスペース上書きの両方で選択可 - docs: 関連ドキュメントを更新 テスト・確認方法: cargo fmt / clippy -D warnings / test(1619 件)すべてパス。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
📊 Test Coverage
🎉✨ パーフェクト!全ファイル Lines カバレッジ 100% を達成しました 🏆🐰 |
kkyosuke
added a commit
that referenced
this pull request
Jun 23, 2026
## 目的 - `usagi doctor` に Agent CLI(claude / codex / sakana.ai / gemini)の有無チェックを追加する。 - Config 画面の Agent CLI 選択肢を、インストール済み(PATH 上に存在する)agent だけに絞る。 両者は同じ「インストール判定」を共有する(`usecase::agent::available_clis`)。 > 注: `sakana.ai`(Codex 互換 CLI、起動コマンド `codex-fugu`)を追加した #317 はマージ済みのため、本 PR はそれを前提に最新 `main` の上へ載せています。 ## 変更内容 ### doctor(有無チェック) - `usagi doctor` が 4 つの Agent CLI の有無を確認。いずれも任意(起動するのは設定中の 1 つだけ)なので、未導入は `missing` ではなく **`warn`**(doctor は正常終了、`--fix` の対象外)。 - 各行は表示名で示し、`ok` のときは探索コマンド名(`sakana.ai` なら `codex-fugu`)を併記。 ### Config 画面(選択肢の絞り込み) - グローバル設定・ワークスペース上書きの**両方**の Agent CLI セレクタが、インストール済みの agent だけを循環。未インストールは選択肢に出さない。 - 画面を開いただけで保存値を失わないよう、**現在設定中の値が未インストールでも選択肢に残す**。 ### リファクタ(SSoT) - `AgentCli::ALL` と `AgentCli::display_name()` を domain に集約。TUI Config・`usagi feature` の表示名と循環順序の正本を一本化(重複していた `agent_cli_label` / `COLUMNS` のラベルを削除)。 - 有無判定を `usecase::agent` に新設し、doctor と Config 画面で共用。 ## テスト・確認方法 - `cargo fmt --check` / `cargo clippy --all-targets -- -D warnings` / `cargo test`(1651 件)すべてパス。 - 追加テスト: `available_clis` のフィルタ、doctor の agent presence(ok/warn・順序)、Config 循環(導入済みのみ・未導入の保存値の保持・ローカル上書き)。 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Merged
kkyosuke
added a commit
that referenced
this pull request
Jun 24, 2026
## 目的 `v1.2.0` をリリースする。`Cargo.toml` / `Cargo.lock` の version を `1.1.0` → `1.2.0` に更新する。 本 PR を `main` にマージすると `auto-release.yml` が version 変更を検知し、`v1.2.0` タグと GitHub Release を自動作成する。 ## 変更内容 version bump のみ。v1.1.0 以降に main へマージ済みの変更点は以下のとおり。 ### 新機能(feat) - doctor で Agent CLI の有無をチェックし Config の選択肢を絞り込む (#320) - note 編集で Shift+矢印の範囲選択と Del 削除を追加 (#319) - sakana.ai(codex 互換 CLI)を追加 (#317) - 切替で右ペインのプレビューを淡色にし、選択対象が左だと示す (#315) - モードはしごの下に空行を挟みヘッダーと本体を分ける (#311) - 在席に「+ new」タブを選択中だけ表示する (#309) - 切替(Switch)でも Ctrl-E でセッションメモを開く (#310) - note を右ペイン右上に表示し ESC で閉じる (#307) - Ctrl-T を在席の「+ new」タブに着地させ Esc で元のペインに戻す (#306) - 在席(Focus)にペインのタブを表示する (#305) - Gemini に会話再開(-r latest)と初期プロンプト(-i)を配線 (#300) - usagi feature コマンドで Agent CLI 機能の星取表を表示 (#304) ### 修正(fix) - コードレビュー指摘の修正(セキュリティ・堅牢性・UX) (#318) - 在席・切替で Ctrl-E が実機端末でもメモを開くように修正 (#314) - Open Project で最近開いたワークスペースを上に表示 (#308) - 切替の note でセッション識別子が見えるように修正 (#302) - 没入から開いたメモ編集中もアタッチ端末を背後に描く (#303) - Windows でリリースビルドが通らない端末入力読み取りを修正 (#301) ### リファクタ・ドキュメント - home のオーバーレイ群を Option の集合から enum に変える (#316) - 共通ヘルパの重複を集約し分類ロジックを domain へ寄せる (#312) - 切替のキー表とコメントの `h` 表記を実装に合わせる (#313) ## テスト・確認方法 - version 変更のみのため `release-build-check.yml` が 4 プラットフォーム(Linux / macOS amd64・arm64 / Windows)でリリースビルドを検証する。 - 各機能・修正はマージ済み PR で個別にテスト・確認済み。 Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
kkyosuke
added a commit
that referenced
this pull request
Jun 24, 2026
## 目的 issue #47 / #58 の残件を解消する。 > **補足**: #47 が指摘していた「アダプタの `launch_command` が `AgentCli::launch_command` への素通し」という二重間接と、#58 が指摘していた domain への起動コマンド生成ロジックの混入(`launch_command` / `mcp_config_json` / `claude_hooks_settings` / `json_escape` / `SESSION_WORKTREE_PROMPT` / `LOCAL_LLM_PROMPT`)は、**sakana.ai(codex 互換 CLI)追加 (#317) の際に既にアダプタ層へ退避済み**でした。現状の `domain/settings.rs` は `AgentCli` の方針データ(`AgentWiring`)のみを保持し、`serde_json` / `shell-words` に依存しない純データ層になっています。本 PR はその仕上げです。 ## 変更内容 - 各アダプタの `program()` が domain の `AgentCli::command()` とは別にプログラム名(`"claude"` / `"codex"` / `"codex-fugu"` / `"gemini"`)をリテラル再定義していたのを解消。 - `ClaudeAgent::program` → `AgentCli::Claude.command()` - `GeminiAgent::program` → `AgentCli::Gemini.command()` - `CodexAgent::new` / `fugu` のプログラム名 → `AgentCli::Codex.command()` / `AgentCli::CodexFugu.command()` - プログラム名の正本(SSoT)を domain の `AgentCli::command()` 1 箇所に統一。 ## テスト・確認方法 - `cargo fmt` / `cargo clippy --all-targets -- -D warnings` / `cargo test` 全て通過。 - 既存の agent / settings テストで、各 CLI の起動コマンド(MCP・フック注入を含む)が従来どおり生成されることを確認。 Closes #47 Closes #58 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
目的
OpenAI Codex 互換の CLI(起動コマンド
codex-fugu)を usagi の Agent CLI として使えるようにする。設定画面・usagi feature表ではユーザー向け表示名をsakana.aiとする。変更内容
settings.rs):AgentCli::CodexFuguを追加。command()はcodex-fugu、serde 保存値はcodex_fugu。agent/codex.rs,agent/mod.rs):CodexAgentを起動プログラム名と rollout 保存先でパラメータ化し、fugu()(codex-fugu/~/.codex-fugu)として Codex 実装一式(-c設定上書き・ライフサイクルフック・resume --last・forget)を再利用。agent_forに分岐を追加。agent_feature.rs): Codex と同一の全統合機能に対応。tui/config/...,cli/feature.rs,cli/config.rs): Config 画面の選択肢・usagi feature列名をsakana.aiに。グローバル設定・ワークスペース個別上書きの両方で選択可(同一のAGENT_CLISを循環)。README.md/02-architecture.md/03-commands/01-cli.md/02-tui.md/05-settings.md/design/04-config.mdを更新。内部識別子(enum
CodexFugu/ 起動コマンドcodex-fugu/ 保存値codex_fugu)はそのまま、ユーザー向け表示名のみsakana.ai。テスト・確認方法
cargo fmt/cargo clippy --all-targets -- -D warnings/cargo test(1619 件)すべてパス。🤖 Generated with Claude Code