Skip to content

feat(session): セッションのブランチを usagi/<name> に名前空間化#407

Merged
kkyosuke merged 1 commit into
mainfrom
name
Jun 27, 2026
Merged

feat(session): セッションのブランチを usagi/<name> に名前空間化#407
kkyosuke merged 1 commit into
mainfrom
name

Conversation

@kkyosuke

Copy link
Copy Markdown
Owner

目的

セッション作成時に各リポジトリで切る git ブランチを usagi/<セッション名> に名前空間化し、開発者が手で切ったブランチ(素の <name>feat/… など)と衝突しないようにする。

これまではセッション名がそのままブランチ名になっていたため、例えばセッション foo を作ると手元の foo ブランチと衝突して作成に失敗していた。

変更内容

ブランチ名だけを名前空間化する。worktree のディレクトリ(.usagi/sessions/<name>/)・state.jsonname・サイドバー表示・session switch の対象指定はすべて <name> のまま。

  • usecase/session/mod.rs: 単一情報源として BRANCH_PREFIX = "usagi/"branch_name(name) -> "usagi/<name>" を追加。create がこれを使って add_worktree / build_dir / 名前空間衝突チェックを実行。
  • usecase/session/{mod,reconcile}.rs: remove / 孤児セッションの掃除でも usagi/<name> をブランチとして登録解除・削除。
  • presentation/tui/.../modal.rs: インライン作成のライブ検証を、入力名そのものではなく生成されるブランチ usagi/<name> と既存ブランチの突き合わせに修正。手元に同名の素ブランチがあっても誤検知しない。
  • presentation/mcp/session.rs: session_create ツール説明を更新。
  • ドキュメント(04-orchestration / data/02-workspace / 06-conventions / 03-mcp / design/05-home)・.agents/workflow.mdlefthook.yml のブランチ命名記述を更新。pre-commit のセッション例外の根拠を「usagi は許可 type でない」に修正(判定は従来どおりパスベースで動作変更なし)。

テスト・確認方法

  • cargo fmt --check / cargo clippy --all-targets -- -D warnings / cargo test(全 2026 件)pass。
  • 影響を受ける既存テストを usagi/ 前提に更新。
  • 新規テスト a_plain_branch_sharing_the_session_name_does_not_collide: 手元に素の feature ブランチがあっても feature セッションを作成でき、featureusagi/feature が共存することを確認。

補足

ユーザーが usagi(前置詞そのもの)という名前のブランチを手で作っていた場合のみ usagi/<name> を切れず作成が失敗する(極めて稀)。この祖先衝突は明示チェックせず git のエラーに委ねている。

🤖 Generated with Claude Code

セッション作成時に各リポジトリで切るブランチを usagi/<セッション名> に変更し、
手で切ったブランチ(素の <name> や feat/… など)と衝突しないようにする。
ブランチ名だけを名前空間化し、worktree のディレクトリ・state.json の name・
サイドバー表示・session switch の対象指定はすべて <name> のまま。

- usecase/session: BRANCH_PREFIX / branch_name() を単一情報源として追加し、
  create / remove / reconcile のブランチ生成・削除を usagi/<name> 経由に統一
- TUI のインライン作成ライブ検証を、生成ブランチ usagi/<name> と既存ブランチの
  突き合わせに修正(同名の素ブランチを誤検知しない)
- MCP session_create の説明とドキュメント・lefthook の記述を更新

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

📊 Test Coverage

🚀 いまのカバレッジ (Lines): 100.00% — この調子でいこう!

🎉✨ パーフェクト!全ファイル Lines カバレッジ 100% を達成しました 🏆🐰

@kkyosuke kkyosuke merged commit 030c9dd into main Jun 27, 2026
4 checks passed
@kkyosuke kkyosuke deleted the name branch June 27, 2026 02:43
@kkyosuke kkyosuke mentioned this pull request Jun 27, 2026
kkyosuke added a commit that referenced this pull request Jun 27, 2026
## 目的

`usagi` の **v1.4.0** をリリースする。`Cargo.toml` の `version` を `1.3.0` →
`1.4.0` に上げ、マージ後に `auto-release.yml` が `v1.4.0` タグと GitHub Release
を自動生成する。

## 変更内容

- `Cargo.toml` / `Cargo.lock` の version を `1.4.0` に更新(version のみ)。

### v1.3.0 以降の主な変更(マージ済み)

TUI / セッション周りの機能追加・改善が中心。

- **TUI 機能追加**
  - セッション一覧の種別ドットを鮮度(heat)ドットに転用 (#412)
  - 没入モードのキー方式を設定で切替可能に(Ctrl-O prefix / Alt)(#411)
  - サイドメニューにメモ・更新時刻・ahead/behind を表示 (#410)
  - サイドバーのうさぎを操作に反応させる (#408) / 終了時のエンゲージメント段階を復帰 (#368)
  - issue graph / gantt をフルサイズのモーダルで表示 (#403) / graph に状態グリフ表示 (#404)
  - セッション削除モーダルを overlay 表示に (#405)
  - preview のコードブロックを syntect でハイライト (#391)
  - サイドバーに既定ブランチとの差分バッジ +N -M を表示 (#389)
  - `?` でキーバインドのチートシートを表示 (#393) / man ヘルプを大きいモーダルで表示 (#374)
  - 入力待ち(◆)セッションを先頭へ寄せる並び替えトグル(s) (#390) / 切替モードで K/J による並び替え (#372)
- **セッション / エージェント**
  - セッションのブランチを `usagi/<name>` に名前空間化 (#407)
  - 起動した Agent をセッション worktree に閉じ込める (#392)
- **doctor**
  - `doctor --fix` で Nerd Font をダウンロード導入 (#409)
- **バグ修正 / 安全性**
  - 依存ツリーの非有界再帰でスタックオーバーフローを防ぐ (#400)
  - JSON-RPC id 欠落・入力契約の不一致を修正 (#399)
  - ollama 出力の read エラー伝播とデッドロック回避 (#398)
  - リソースリーク・非有界入力を塞ぐ (#397) / 進捗計算をオーバーフロー安全に (#362)
  - ログ追記の原子化・config 編集での設定喪失防止 (#396) / 並行更新のロストをストアロックで防止 (#394)
  - 破壊的な worktree 削除と孤立ブランチを安全化 (#395)
- **パフォーマンス / リファクタ**
  - 端末ペインのメモリと多数セッション時の描画負荷を削減 (#402) ほか perf 改善 (#401, #388, #382)
  - TUI モジュール構成の整理・カバレッジ対象の整理など複数のリファクタ

## テスト・確認方法

- `cargo fmt` / `cargo clippy --all-targets -- -D warnings` / `cargo
test`(pre-push フックで clippy・test がパス済み)。
- マージ後、`auto-release.yml` が version 変更を検知し `release.yml` を起動 → 4
プラットフォームのバイナリビルドと `v1.4.0` Release が自動生成されることを確認する。

Co-authored-by: test <test@example.com>
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