Skip to content

Commit 220cbc6

Browse files
authored
Merge pull request #87 from chenchaoyi/chore/release-v1.1.2
chore(release): v1.1.2
2 parents 28a9f9a + c232a36 commit 220cbc6

4 files changed

Lines changed: 66 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,41 @@ behaviours between releases.
1111

1212
## [Unreleased]
1313

14+
## [1.1.2] — 2026-05-18
15+
16+
Two fixes / one enhancement driven by real-environment use of v1.1.1.
17+
18+
### Fixed
19+
- **Bonjour list no longer empties after ~1 minute of stable
20+
services.** zeroconf's `update_service` callback is change-driven
21+
— a HomePod re-asserting an unchanged AirPlay record fires no
22+
callback, so `last_seen` stayed frozen at the first
23+
`add_service` time and the 60 s TTL evicted live services even
24+
though zeroconf's own DNS cache still held the records. The
25+
poller now refreshes liveness from zeroconf's cache each
26+
snapshot tick: any entry whose service-instance name still has
27+
a non-expired record in `Zeroconf.cache.entries_with_name` gets
28+
its `last_seen` bumped. The TTL backstop default also moves
29+
from 60 s → 300 s; with the cache-refresh path keeping stable
30+
services alive, the TTL is now a last-resort sweep, not the
31+
primary eviction mechanism.
32+
33+
### Added
34+
- **Wi-Fi event lines (roam, RF stir) surface the affected
35+
SSID.** Roam lines render `SSID: <name>` when both sides share
36+
a network (band switch / same-ESS roam) and `SSID: <prev> →
37+
<new>` when they differ; RF stir lines append `· SSID <name>`
38+
after the disturbance body. The segment is omitted entirely
39+
when both sides are `None` or `""` (hidden). The AP-name half
40+
is unchanged — it still comes from `aps.yaml` via
41+
`NetworkInventory`, so a fully-populated inventory keeps
42+
showing friendly AP names. SSID context is additive and works
43+
even when the inventory is empty.
44+
- JSONL log lines for `RoamEvent` and `RFStirEvent` carry the
45+
new `previous_ssid` / `new_ssid` / `ssid` keys when populated;
46+
keys are skipped when `None` so old log entries stay
47+
diff-stable.
48+
1449
## [1.1.1] — 2026-05-17
1550

1651
Polish pass driven by a real-environment `/tui-audit` against the

docs/zh/CHANGELOG.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,35 @@
1010

1111
## [Unreleased]
1212

13+
## [1.1.2] — 2026-05-18
14+
15+
针对 v1.1.1 真实使用反馈的两个修复 + 一个增强。
16+
17+
### 修复
18+
- **Bonjour 列表不再在大约 1 分钟稳定服务后清空。** zeroconf 的
19+
`update_service` 回调是「变化驱动」的——一个 HomePod 持续广播同
20+
一条 AirPlay 记录,info 没变就不会触发回调,于是 `last_seen`
21+
始终停留在第一次 `add_service` 的那一刻,60 秒 TTL 把还活着的
22+
服务给清掉了——尽管 zeroconf 自己的 DNS cache 里那些记录还在。
23+
现在 poller 每个 snapshot tick 都会从 zeroconf 的 cache 里读
24+
存活状态:只要 service-instance 名在
25+
`Zeroconf.cache.entries_with_name` 里还有任何未过期记录,
26+
对应条目的 `last_seen` 就被刷成 `now`。TTL 兜底默认值也从
27+
60 s 上调到 300 s;有了 cache-refresh 之后,TTL 退化成兜底
28+
机制,不再是主要的清理路径。
29+
30+
### 新增
31+
- **Wi-Fi 事件行(漫游、RF 扰动)现在带上对应的 SSID。** 漫游事件
32+
在两侧属于同一个网络时(band 切换 / 同 ESS 漫游)显示单段
33+
`SSID: <名字>`;两侧 SSID 不同时显示 `SSID: <前> → <后>`
34+
两侧都是 `None``""`(隐藏 SSID)时整段省略。AP 名字部分没变
35+
——仍由 `aps.yaml``NetworkInventory` 解析,所以充分填好
36+
inventory 的话事件行还能继续展示友好 AP 名。SSID 上下文是
37+
「额外的」,inventory 为空也能用。
38+
- `RoamEvent``RFStirEvent` 的 JSONL 日志行现在带上新增的
39+
`previous_ssid` / `new_ssid` / `ssid` 键;为 `None` 时不输出,
40+
保持旧日志条目 diff 稳定。
41+
1342
## [1.1.1] — 2026-05-17
1443

1544
针对 v1.1.0 真实环境跑 `/tui-audit` 之后的抛光。三个 bug + 两个

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "diting"
3-
version = "1.1.1"
3+
version = "1.1.2"
44
description = "macOS terminal listening post for Wi-Fi, BLE, link health, and the RF environment — your Mac hears more than it tells you"
55
readme = "README.md"
66
license = "MIT"

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)