# 更新日志 > 版本号在 `package.json` 的 `version`。**每次要重新打包上传,先在这里加一条**,下次一眼就能看出这次改了什么。 ## v0.3.0 — 2026-10-19 **主题:通知里的链接一律走公网(发通知前自动开门),并把三个"看起来成了、其实没成"的坑堵掉。** ### 新增 - **插件:发通知前自动确保有公网门。** 先读本机 `door-state.json`:现成的门还剩 ≥10 分钟就复用; 否则自动开一扇 30 分钟的临时门(`--quiet`:门自己不再推消息,免得一条通知变两条), 再把公网地址写进通知。这样通知里的链接**在外面也能点开**,不用先手动开门、也不用分辨内网/公网。 可配:`doorScript` / `doorStateFile` / `doorMinutes` / `doorMinRemainingMs` / `doorOpenTimeoutMs`。 - `temp-door.mjs` 新增 `--quiet`:只开门、不往推送通道发消息。 - 配置键名兼容:`pushWebhook` / `pushChannelsFile` / `pushChannel` 与 `wecomWebhook` / `wecomChannelsFile` / `wecomChannel` 等价(原先模板里写的是前者,代码只认后者,**照着模板抄会不生效**,此次修掉)。 ### 修复 - **通知里的链接出门打不开**(本次反馈的根因):链接被改写成配置里的手机可达前缀(家里局域网 IP), **这个地址在公网上根本不存在**。现在通知一律带公网链接。 - **"公网地址打印出来了"被当成开门成功**:cloudflared 会先打印地址、再去连边缘,连不上就直接退出—— 旧逻辑会把**一条死链**推给用户。现在必须同时满足:① 看到地址 ② 看到 `Registered tunnel connection` ③ 从公网侧实拨拿到 HTTP 响应;任一不满足就自动重试(最多 3 次,间隔 3 秒 / 8 秒), 三次都不成**只推一句"没开成",绝不推链接**。 - **门到点自动关了,但"门已自动关闭"的提醒从没收到过**:推送是 fire-and-forget,后面紧跟 `process.exit()`, 请求还没发出去进程就没了。改为 **await 推送完成再退出**。 - **两扇门并存时,旧门到点会误杀新门**:关门逻辑原来一律按"门状态文件里的进程号"去关, 若旧门进程还没退出、新门已经开了,旧门的定时器会照状态文件把**新门**杀掉(自测时实测踩到, 日志表现为"新门突然消失")。现在关自己的门就用自己的进程号,并且只有当状态文件还属于自己时才清除记录。 - **门开着期间隧道中途断线无人知**:现在会另推一条"门中途断了"。 - **机器人长连接"静默假死"**:进程活着、任务显示 Running,实际 9 小时 20 分钟收不到任何消息。 现在每分钟自检:未连接满 2 分钟主动重连一次;重连后仍连续 5 分钟未连接则主动退出, 由保活壳 3 秒内重拉一个全新连接;在线时每 10 分钟留一条在线记录备查。 - **机器人取开门链接抓得太早**:原来从开门脚本输出里"抓第一个公网地址",而开门脚本现在会先建隧道、 再从公网侧自测、自测不过就换一条重来——抓早了会把**作废地址**回给用户。 现在改为读开门结果文件,并且只认"刚开的这一扇"。 ### 文档 - `docs/PITFALLS.md` 新增第 15–18 条:对端真实可达校验 / 长连接判活与自愈 / 别把"只在某张网里有效"的地址放进通知 / 收尾推送必须 await 后再退出。 - `docs/GUIDE.md`、`docs/TUTORIAL-WECOM(.en).md`:验收清单加入 "**关掉 WiFi 只留流量**,点通知里的链接能进",并新增"通知里的链接从哪来"一节。 - `docs/SECURITY.md` 新增 2.1 节:v0.3.0 起公网开口会被**自动打开**,以及怎么收紧(改 `doorMinutes` 等)。 - `README.md`:说明通知链接策略、补上演示视频入口与本版本号。 ### 兼容性与影响 - 老配置不用改就能升级:不配 `doorScript` 时默认取 `linkFile` 同目录的 `temp-door.mjs`。 - 本机没有 `temp-door.mjs`、或门始终开不成时:通知**照发但不带链接**(正文说明一句),**不会推死链**。 - 安全影响:**每完成一轮任务可能短暂开一次公网门(默认 30 分钟)**,那段时间"拿到网址即可进"。 想收紧见 `docs/SECURITY.md` 第 2.1 节。 ## v0.2.0 — 2026-10-18 - 补演示视频与 README 媒体链接(`media/phone-remote-demo.mp4`)。 - 推送通道改为从 `push_channels.json` 按名字取,保持"通道地址只有一个真源"。 ## v0.1.0 — 2026-10-17 - 首个可上传版本:Host 半(生成手机入口链接、写 `upstream.json`、任务完成/出错推送 + 「📱 指挥台」Client 半),配套 `phone-proxy`(传达室)、`temp-door`(临时限时门)、 `wecom-bot`(机器人长连接,发「开门」即召唤)。