Releases: huangwb8/VibeNotification
v1.0.18
🐛 v1.0.18 - 精准打击:彻底修复 Codex 误通知复发问题
本次发布聚焦于长期困扰用户的"收到用户消息立即误通知"问题的根本性修复,同时强化 CI 基础设施与测试覆盖。
🚀 核心亮点:
• 找到并修复了误通知 bug 的根因——确认前缀(acknowledgement prefix)被错误地判断为"非进度消息",导致通知误触发
• 简化会话终止判定链路,移除冗余的二次 event_type 检查,减少逻辑漏洞
• 新增完整单元测试套件,让核心逻辑变更可被持续验证
🐛 Bug 修复:
• 修复 _looks_like_codex_progress_message 对 CODEX_ACKNOWLEDGEMENT_PREFIXES 的误判:原来返回 False 允许通知,现已修正为 True 抑制通知
• 移除 _codex_turn_complete_has_terminal_content 中冗余的 CODEX_NOTIFY_EVENT_TYPES / CODEX_APP_SERVER_METHODS 检查,该路径已由上层逻辑覆盖
• 简化 _detect_codex_conversation_end 的 structured_signal 处理,有信号即终止,消除歧义分支
🔧 技术改进:
• 修复 CI 工作流路径(src/ → vibe_notification/),对齐实际项目结构
• CI 改用 pip install -e . 安装,确保测试使用真实包依赖
• 补充 .gitignore 对 tests/unit/test_*.py 和 conftest.py 的例外规则
✅ 新增测试:
• test_core.py:核心检测逻辑
• test_debounce.py:防抖机制
• test_parser_routing.py:解析器路由
• test_parsers_codex.py:Codex 解析器
• test_version.py:版本号一致性
📋 完整变更日志:
对比 v1.0.17..v1.0.18:v1.0.17...v1.0.18
v1.0.17
🎉 v1.0.17 - 智能感知终端宿主,通知行为更精准
让 vibe-notification 在 VS Code、Terminal、Warp 等各类终端宿主中都能给出最合理的通知行为,彻底告别"通知被宿主 App 劫持"的困惑。
🚀 核心亮点:
• macOS 自动识别终端/CLI 宿主场景(VS Code、Terminal、iTerm2、Warp 等),自动关闭 sender 绑定
• 修复 Codex 进度消息短路判定逻辑,新增 event_type/method 双重检测提升会话完成准确率
• doctor 诊断建议升级:SessionEnd 缺失从 WARN 降为 INFO,说明更贴近实际使用场景
✨ 主要更新:
🔧 MacOS Adapter
• 新增 TERMINAL_HOST_HINTS 与 CLI_PROCESS_NAMES 常量,覆盖 13 种主流终端宿主
• 新增 _is_terminal_host_context() 方法,通过父进程链检测是否运行于终端/CLI 宿主
• 在 _get_sender_mode() 中新增终端宿主场景判断,自动返回 off 避免样式异常
🐛 Codex 会话检测修复
• 修复 _looks_like_codex_progress_message 精确前缀匹配时的短路逻辑错误
• 在 _codex_turn_complete_has_terminal_content 中新增 event_type/method 类型前置判断
📝 Doctor 诊断优化
• SessionEnd hook 缺失等级 WARN → INFO,更新建议措辞,减少不必要的配置焦虑
• 新增终端宿主场景 sender 说明,引导用户检查系统通知设置
📋 完整变更日志:
完整历史请查看 Commits
v1.0.16
🎉 v1.0.16 - 通知并发执行,告别串行阻塞
声音通知与桌面弹窗不再相互等待——本次更新让所有通知器同步启动,显著缩短通知响应时间。
🚀 核心亮点:
• 多通知器并发调度,彻底消除串行阻塞
• 全部通知器完成后统一收集并抛出首个错误,保证信息不丢失
• 新增并发测试覆盖,确保声音与弹窗永不互相阻塞
🔧 技术改进:
• 引入 ThreadPoolExecutor 替代顺序 for-loop,调度策略更健壮
• 异常处理从"首次失败即中断"升级为"全量执行后上报",提升稳定性
📋 完整变更日志:
- 6710782 feat(managers): v1.0.16 并发执行多通知器,提升通知响应速度
v1.0.15
🎉 v1.0.15 - 精准识别,告别误通知!
修复了 Codex 在收到用户消息后立即触发通知的问题,现在只在会话真正结束时才发送通知。
🚀 核心亮点
- 修复 Codex 接收用户消息时误触发通知的 bug,一轮回复不再产生两次通知
- 新增确认应答识别机制,精准区分"收到消息"与"完成回复"
✨ 主要更新
Codex 会话检测优化
- 新增确认应答前缀识别(ok、好的、收到等),剥离无意义的确认消息
- 新增终端消息关键词与正则模式匹配,提升会话结束判定准确性
- 改进进度消息检测逻辑,支持确认应答链式剥离
- 检测代码块、列表结构、长文本等终端信号
📋 完整变更日志
fc3d07bfeat(detectors): v1.0.15 优化 Codex 会话终止判定,修复用户消息触发误通知
完整变更: v1.0.14...v1.0.15
v1.0.14
🎉 v1.0.14 - macOS 通知不再被"吞掉"!
Claude Code hook 场景下,横幅通知终于可靠弹出了。
🚀 核心亮点:
• 引入 macOS sender 模式控制(auto/off/force),Claude Code hook 默认关闭 sender 绑定
• 横幅不再被宿主 App(如 VS Code、Terminal)的通知策略拦截或静默
• terminal-notifier 失败时自动回退到 osascript,双重保障通知送达
✨ 新功能:
• 新增 VIBE_NOTIFICATION_SENDER_MODE 环境变量,灵活控制 sender 行为
• 新增 macos_sender_mode 配置项,支持 auto/off/force 三种模式
• doctor 诊断工具新增 sender 模式说明
🔧 技术改进:
• MacOSAdapter 重构 sender 解析逻辑,支持配置/环境变量/上下文三层优先级
• create_platform_adapter 工厂方法支持传入 NotificationConfig
• 新增 3 个单元测试覆盖 sender 模式行为
📋 完整变更日志:
v1.0.13...v1.0.14 (1 commit)
v1.0.13 — 解析路由架构重构
🏗️ v1.0.13 — 解析路由架构重构,彻底消除误识别根源
本次版本从根本上重构了解析器路由机制,将 Claude Code 与 Codex 的上下文识别逻辑集中到单一路由层,消除了两个解析器互相感知彼此格式所带来的耦合与潜在误判。
🚀 核心亮点
- 统一路由入口:新增
routing.py模块,作为解析器类型判定的唯一权威来源,所有"这是 Claude 还是 Codex?"的问题在此处一次性解决 - 解耦解析器:
ClaudeCodeParser与CodexParser不再需要了解对方的负载格式,彻底消除交叉感知代码 - 精确路由查找:
ParserManager改为基于parser_type的字典查找,消除顺序遍历导致的首个匹配误差
✨ 主要更新
架构重构
- 新增
vibe_notification/parsers/routing.py,集中实现detect_parser_type、is_claude_context、is_codex_context ClaudeCodeParser.can_parse()简化为直接调用is_claude_context()CodexParser.can_parse()简化为直接调用is_codex_context()BaseParser及所有子类新增parser_type类属性,统一 parser 标识
解析器管理
ParserManager新增parsers_by_type字典,get_available_parser改为 O(1) 类型路由add_parser/remove_parser同步维护parsers_by_type索引
代码清理
- 移除
ClaudeCodeParser._is_codex_payload(交叉感知逻辑) - 移除
CodexParser._looks_like_claude_hook_payload(交叉感知逻辑) - 将
_detect_conversation_end内联到ClaudeCodeParser,不再依赖外部探测器
🔧 技术改进
get_argv_json提取为路由模块公共函数,CodexParser直接复用- 路由决策顺序:环境变量 → argv JSON → stdin JSON,优先级明确
📋 完整变更日志
v1.0.12..v1.0.13:查看 commits
v1.0.12
🎉 v1.0.12 - 精准识别,告别误通知!
解决 Claude Code 与 Codex 解析器之间的交叉误识别问题,确保每个 AI 助手的通知都能准确送达。
🚀 核心亮点:
• Claude Code 解析器新增 Codex 负载检测,不再误处理 Codex 的 stdin 数据
• Codex 解析器改进 Claude 钩子判断逻辑,基于环境变量和 toolName 字段精确识别
• 补充 Codex Stop hook 负载的单元测试,防止回归
🔧 技术改进:
• ClaudeCodeParser 引入 _looks_like_codex_payload 检查,在 stdin JSON 解析前过滤非本协议数据
• CodexParser 用 _looks_like_claude_hook_payload 替代硬编码 marker 集合,减少误判风险
📋 完整变更日志:
v1.0.11...v1.0.12
v1.0.11
🎉 v1.0.11 - 通知可靠性全面升级,新增诊断工具!
改进通知可靠性,添加诊断工具与 Codex 包装器,让 AI 助手会话通知更稳定、更易排查。
🚀 核心亮点:
• 新增诊断工具,快速定位通知配置问题
• 新增 Codex 包装器,提升 Codex 会话结束检测能力
• 通知触发机制全面加固,减少漏通知场景
✨ 主要更新:
新增功能
• 添加 vibe-notification-diagnostic 诊断命令行工具
• 新增 Codex 会话结束包装器,增强 turn 检测
• 改进通知可靠性机制
📋 完整变更日志:
• feat: v1.0.11 改进通知可靠性,添加诊断工具与 Codex 包装器
v1.0.10
🎉 v1.0.10 - Claude Code 钩子通知全面修复!
重构 stdin 读取机制,彻底解决 Claude Code Stop 钩子无法触发通知的问题。
🚀 核心亮点:
• 新增共享 stdin JSON 缓存模块,告别重复读取导致的数据丢失
• Claude Code 钩子事件现在同时支持环境变量与 stdin JSON 双通道检测
✨ 主要更新:
架构重构
• 新增 _stdin.py 共享 stdin JSON 缓存模块,全局只读一次
• ClaudeCodeParser 支持 stdin JSON 中的 hook_event_name 字段检测
• CodexParser 使用共享 stdin 缓存,避免重复 read() 导致 EOF
🛡️ 稳定性提升
• CodexParser 新增 Claude Code 钩子事件过滤,拒绝误解析 Stop/SessionEnd 事件
• 解析器优先级调整:ClaudeCodeParser 优先于 CodexParser,确保事件正确路由
• 更新单元测试,适配新的 stdin 缓存机制
v1.0.9 - Codex Turn 防抖,告别重复通知!
🎉 v1.0.9 - Codex Turn 防抖,告别重复通知!
为 Codex 模块引入 turn 完成防抖机制,并全面支持 hooks.json 事件订阅,让通知触发更精准、更稳定。
🚀 核心亮点:
• 全新 debounce 模块,智能过滤 Codex turn 重复事件,避免通知轰炸
• CodexParser 支持 stdin 数据读取,无缝适配 hooks.json 机制
• 新增 pre-tool-use / post-tool-use 钩子事件,覆盖工具调用全生命周期
✨ 新功能:
• 添加 debounce 防抖模块(debounce.py + _debounce_worker.py)
• Codex hooks 事件类型扩展:pretooluse、posttooluse
• CodexParser 双源数据读取:argv + stdin 自动回退
🔧 技术改进:
• core.py 集成 debounce 模块,对 Codex turn 事件进行防抖过滤
• conversation.py 更新钩子事件名称集合,匹配最新 Codex 协议
📋 完整变更日志:v1.0.8...v1.0.9