Skip to content

fix(tui): アタッチ中でも入力待ち通知を出す(完了通知は抑制を維持)#353

Merged
kkyosuke merged 1 commit into
mainfrom
status
Jun 26, 2026
Merged

fix(tui): アタッチ中でも入力待ち通知を出す(完了通知は抑制を維持)#353
kkyosuke merged 1 commit into
mainfrom
status

Conversation

@kkyosuke

Copy link
Copy Markdown
Owner

目的

エージェントの状態が通知に反映されないタイミングがある問題への対処。SessionMonitor はアタッチ中(フォーカス中)のセッションの通知を一律抑制していたため、ユーザーが画面を見ているつもりで別アプリに移っている場合に 入力待ちに気づけなかった。加えて Claude の Notification フックはユーザー離席時にしか発火せず、フォーカス中の入力待ちは取りこぼしやすい。

変更内容

  • SessionMonitor::observe()waiting 遷移はアタッチ中でも 1 回通知するよう変更(入力待ちはユーザーの操作を要するため)。
  • done(Stop)はバックグラウンドのみ通知する従来挙動を維持。Stop は毎ターン末に発火するため、操作中のセッションで毎回鳴らすのは煩わしい。これによりアタッチが影響するのは「done 通知の抑制」と「ベル推定の抑制」の 2 点に整理された。
  • doc コメント(session_monitor.rs / terminal_pool.rs)と document/design/05-home.md を実態に合わせて更新。

補足(今回直さなかったこと)

  • Codex への hook 追加は不可: document/04-orchestration.md の通り Codex には Notification/SessionEnd イベントが存在しない(endedStop が担う)。
  • フォーカス中に Claude が自由記述の質問をして待つケースは、Claude Code 側が確実には hook を飛ばさないため usagi 単独では取りこぼしが残る(Waiting phase 自体が記録されない別問題)。

テスト・確認方法

  • cargo fmt / cargo clippy --all-targets -- -D warnings / cargo test(1802 件)すべてグリーン。
  • pre-commit(カバレッジ 100%)・pre-push(clippy)フック通過。
  • 既存テスト 2 件を新挙動に合わせて更新:
    • the_attached_session_notifies_on_waiting_but_not_on_done
    • a_waiting_phase_does_not_re_fire_just_because_a_session_was_detached

🤖 Generated with Claude Code

Claude の Notification はユーザー離席時にしか発火せず、フォーカス中の
入力待ちは PermissionRequest 以外取りこぼしうる。さらに SessionMonitor は
アタッチ中セッションの通知を一律抑制していたため、見ているつもりで別アプリへ
移っていると入力待ちに気づけなかった。

waiting 遷移はアタッチ中でも 1 回通知するよう変更(ユーザーの操作を要する
ため)。done(=Stop) は毎ターン末に発火し操作中に毎回鳴ると煩わしいので、
バックグラウンドのみ通知する従来挙動を維持する。

ドキュメント(design/05-home.md)と doc コメントも実態に合わせて更新。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@kkyosuke kkyosuke merged commit 73fe386 into main Jun 26, 2026
4 checks passed
@kkyosuke kkyosuke deleted the status branch June 26, 2026 00:21
@github-actions

Copy link
Copy Markdown

📊 Test Coverage

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

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

kkyosuke added a commit that referenced this pull request Jun 26, 2026
## 目的

`v1.2.1` 以降に `main` へマージされた変更をリリースするため、minor バージョンを上げる。

## 変更内容

- `Cargo.toml` の `version` を `1.2.1` → `1.3.0` に更新
- `Cargo.lock` を追従更新

## リリースされる主な変更(前回タグ以降)

- fix(tui): close を強制削除から「dirty なら拒否」に変える (#355)
- fix(tui): 全角名のサイドバーはみ出しと agent 名の往復破綻を直す (#354)
- fix(tui): アタッチ中でも入力待ち通知を出す(完了通知は抑制を維持) (#353)
- fix(tui): 没入リンク検出が直後の全角約物・日本語を URL に含めないようにする (#352)
- perf(tui): 没入の描画で term.size() の重複 ioctl をなくす (#351)

## テスト・確認方法

- バージョン変更のみで挙動への影響はなし
- マージ後、`auto-release.yml` が version 変更を検知し `v1.3.0` のリリースを自動起動する

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.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