Skip to content

Releases: huangwb8/VibeNotification

v1.0.18

19 Apr 02:17

Choose a tag to compare

🐛 v1.0.18 - 精准打击:彻底修复 Codex 误通知复发问题

本次发布聚焦于长期困扰用户的"收到用户消息立即误通知"问题的根本性修复,同时强化 CI 基础设施与测试覆盖。

🚀 核心亮点:
• 找到并修复了误通知 bug 的根因——确认前缀(acknowledgement prefix)被错误地判断为"非进度消息",导致通知误触发
• 简化会话终止判定链路,移除冗余的二次 event_type 检查,减少逻辑漏洞
• 新增完整单元测试套件,让核心逻辑变更可被持续验证

🐛 Bug 修复:
• 修复 _looks_like_codex_progress_messageCODEX_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 . 安装,确保测试使用真实包依赖
• 补充 .gitignoretests/unit/test_*.pyconftest.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

19 Apr 02:07

Choose a tag to compare

🎉 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_HINTSCLI_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

18 Apr 12:24

Choose a tag to compare

🎉 v1.0.16 - 通知并发执行,告别串行阻塞

声音通知与桌面弹窗不再相互等待——本次更新让所有通知器同步启动,显著缩短通知响应时间。

🚀 核心亮点:
• 多通知器并发调度,彻底消除串行阻塞
• 全部通知器完成后统一收集并抛出首个错误,保证信息不丢失
• 新增并发测试覆盖,确保声音与弹窗永不互相阻塞

🔧 技术改进:
• 引入 ThreadPoolExecutor 替代顺序 for-loop,调度策略更健壮
• 异常处理从"首次失败即中断"升级为"全量执行后上报",提升稳定性

📋 完整变更日志:

  • 6710782 feat(managers): v1.0.16 并发执行多通知器,提升通知响应速度

v1.0.15

18 Apr 11:39

Choose a tag to compare

🎉 v1.0.15 - 精准识别,告别误通知!

修复了 Codex 在收到用户消息后立即触发通知的问题,现在只在会话真正结束时才发送通知。

🚀 核心亮点

  • 修复 Codex 接收用户消息时误触发通知的 bug,一轮回复不再产生两次通知
  • 新增确认应答识别机制,精准区分"收到消息"与"完成回复"

✨ 主要更新

Codex 会话检测优化

  • 新增确认应答前缀识别(ok、好的、收到等),剥离无意义的确认消息
  • 新增终端消息关键词与正则模式匹配,提升会话结束判定准确性
  • 改进进度消息检测逻辑,支持确认应答链式剥离
  • 检测代码块、列表结构、长文本等终端信号

📋 完整变更日志

  • fc3d07b feat(detectors): v1.0.15 优化 Codex 会话终止判定,修复用户消息触发误通知

完整变更: v1.0.14...v1.0.15

v1.0.14

15 Apr 15:45

Choose a tag to compare

🎉 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 — 解析路由架构重构

15 Apr 14:20

Choose a tag to compare

🏗️ v1.0.13 — 解析路由架构重构,彻底消除误识别根源

本次版本从根本上重构了解析器路由机制,将 Claude Code 与 Codex 的上下文识别逻辑集中到单一路由层,消除了两个解析器互相感知彼此格式所带来的耦合与潜在误判。

🚀 核心亮点

  • 统一路由入口:新增 routing.py 模块,作为解析器类型判定的唯一权威来源,所有"这是 Claude 还是 Codex?"的问题在此处一次性解决
  • 解耦解析器ClaudeCodeParserCodexParser 不再需要了解对方的负载格式,彻底消除交叉感知代码
  • 精确路由查找ParserManager 改为基于 parser_type 的字典查找,消除顺序遍历导致的首个匹配误差

✨ 主要更新

架构重构

  • 新增 vibe_notification/parsers/routing.py,集中实现 detect_parser_typeis_claude_contextis_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

15 Apr 13:04

Choose a tag to compare

🎉 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

14 Apr 15:52

Choose a tag to compare

🎉 v1.0.11 - 通知可靠性全面升级,新增诊断工具!

改进通知可靠性,添加诊断工具与 Codex 包装器,让 AI 助手会话通知更稳定、更易排查。

🚀 核心亮点:
• 新增诊断工具,快速定位通知配置问题
• 新增 Codex 包装器,提升 Codex 会话结束检测能力
• 通知触发机制全面加固,减少漏通知场景

✨ 主要更新:

新增功能
• 添加 vibe-notification-diagnostic 诊断命令行工具
• 新增 Codex 会话结束包装器,增强 turn 检测
• 改进通知可靠性机制

📋 完整变更日志:
• feat: v1.0.11 改进通知可靠性,添加诊断工具与 Codex 包装器

v1.0.10

06 Apr 15:38

Choose a tag to compare

🎉 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 防抖,告别重复通知!

06 Apr 09:38

Choose a tag to compare

🎉 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