Skip to content

原文(日本語に翻訳)

通知のinvalidatesが現在表示中の通知を即座にクリアしない問題を修正しました。

原文(英語)

Fixed notification invalidates not clearing the currently-displayed notification immediately

概要

Claude Codeの通知システムにおいて、あるフックやイベントが以前の通知を無効化(invalidates)する際、現在表示されている通知が即座にクリアされずに残り続けるバグがありました。例えば、「タスク実行中」の通知が完了後も画面に残ってしまうなど、UIの状態が実際の状態と一致しなくなっていました。v2.1.89でこの問題が修正され、通知の無効化が即座に反映されるようになりました。

基本的な使い方

通知機能はフックのシステムと連携しています:

json
// .claude/settings.json での通知フック設定例
{
  "hooks": {
    "PreToolUse": [
      {
        "type": "notification",
        "message": "ツールを実行中...",
        "id": "tool-running"
      }
    ],
    "PostToolUse": [
      {
        "type": "notification",
        "message": "ツール実行完了",
        "invalidates": ["tool-running"]  // 前の通知をクリア
      }
    ]
  }
}

実践例

フックでの通知と無効化

json
// タスク開始・終了を通知するフック設定
{
  "hooks": {
    "TaskCreated": [
      {
        "type": "notification",
        "message": "新しいタスクを開始しました",
        "id": "task-started",
        "duration": 0  // 永続的に表示
      }
    ],
    "PostToolUse": [
      {
        "type": "notification",
        "message": "タスク完了",
        "invalidates": ["task-started"],  // 修正後: 即座にクリアされる
        "duration": 3000
      }
    ]
  }
}

通知のライフサイクル管理

bash
# 修正前の問題例:
# 1. "分析中..." という通知が表示される
# 2. 分析完了後、"完了" という通知で "分析中..." を invalidate
# 3. しかし "分析中..." が画面に残り続けていた

# 修正後:
# 1. "分析中..." という通知が表示される
# 2. 分析完了後、"完了" という通知で "分析中..." を invalidate
# 3. "分析中..." が即座に消えて "完了" が表示される ✓

注意点

  • この問題は通知の invalidates プロパティを使用している場合にのみ発生していました
  • 単純な通知(invalidatesなし)は影響を受けていませんでした
  • カスタムフックで通知システムを使用している場合、修正後は意図通りの動作になります
  • 通知のタイミングがより正確になったことで、ユーザー体験が改善されます

関連情報