Skip to content

Commit fbb69a4

Browse files
authored
Merge pull request #100 from chenchaoyi/chore/release-v1.3.0
chore(release): v1.3.0
2 parents 30e60d0 + b44beb0 commit fbb69a4

4 files changed

Lines changed: 112 additions & 2 deletions

File tree

CHANGELOG.md

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

1212
## [Unreleased]
1313

14+
## [1.3.0] — 2026-05-19
15+
16+
Minor release. Two real-environment audit findings on a Meituan
17+
corp network drove a vendor-lookup upgrade and a LAN-host detail
18+
modal enrichment; one smaller UX fix rides along.
19+
20+
### Added
21+
- **Full IEEE OUI registry (~250 entries → 39,444).** The bundled
22+
`*_ouis.json` data files were a hand-curated subset; replaced
23+
with the full IEEE Registration Authority MA-L (24-bit) registry.
24+
Both `bluetooth_ouis.json` (used by BLE and the LAN host list)
25+
and `wifi_ouis.json` (used by Wi-Fi BSSID resolution) now ship
26+
the same canonical 39 k-entry dataset. On corp networks, gateway
27+
/ enterprise-switch OUIs (Cisco, Aruba, H3C, HPE, Huawei, etc.)
28+
now resolve to vendor names instead of `(unknown)`. File size:
29+
~20 KB → ~1.5 MB each; in-memory heap +~5 MB; lookup speed O(1)
30+
unchanged.
31+
- **`scripts/refresh_ouis.py`.** New CLI that pulls the canonical
32+
CSV from `https://standards-oui.ieee.org/oui/oui.csv`, parses +
33+
dedupes, and rewrites both data files. Run before each release
34+
to pick up newly-registered OUIs. IEEE attribution added in
35+
`_meta` and README.
36+
- **`LANHost.last_rtt_ms` and `LANHost.last_reachable_at`.** New
37+
fields populated from each sweep's per-host ICMP results.
38+
`last_seen` (ARP cache observation) and `last_reachable_at`
39+
(most recent successful ICMP echo) are tracked separately so a
40+
host that's in ARP but offline shows the freshness gap. Fields
41+
are preserved across silent ticks — a temporarily-quiet host's
42+
last-known RTT stays visible in the modal.
43+
- **LANDetailScreen Network section: Latency + Reachable rows.**
44+
`Latency X.X ms` (omitted when last_rtt_ms is None);
45+
`Reachable this sweep | Xs ago | never` (always rendered).
46+
Parsed from the new `_ping_one` return tuple
47+
`(reachable, rtt_ms | None)`.
48+
- **LANDetailScreen Bonjour services empty-state placeholder.**
49+
When the host has no Bonjour services, the section now renders
50+
`(no Bonjour services)` instead of being hidden entirely —
51+
users had no signal that the cross-reference channel was
52+
checked.
53+
54+
### Changed
55+
- **`_ping_one` and `_sweep` return shape.** `_ping_one` now
56+
returns `tuple[bool, float | None]` parsed from `time=X.XXX ms`
57+
in macOS ping stdout. `_sweep` returns
58+
`dict[str, tuple[bool, float | None]]` so the merge step can
59+
populate per-host RTT and reachability without re-running probes.
60+
61+
### Fixed
62+
- **Duplicate ZH labels in LAN diagnostics.** `子网 子网
63+
11.10.158.0/24` and `上次扫描 上次扫描 38s` doubled because both
64+
the row prefix and the value template translated to the same ZH
65+
word. Dropped the lowercase prefix from the value templates;
66+
the row label alone identifies the row.
67+
- **Title bar showed `扫描间隔 7s` on every view.** That's the
68+
Wi-Fi CoreWLAN scan interval — but on the LAN view the user
69+
could reasonably think LAN swept at 7s, when it actually sweeps
70+
at 60s. Made the cadence view-specific: `scan 7s` on wifi,
71+
`sweep 60s` on lan, dropped entirely on BLE / Bonjour
72+
(push-driven pollers).
73+
1474
## [1.2.0] — 2026-05-19
1575

1676
Minor release. Headline: a new fourth panel that answers "who's on

docs/zh/CHANGELOG.md

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

1111
## [Unreleased]
1212

13+
## [1.3.0] — 2026-05-19
14+
15+
Minor release。来自一台 Meituan 公司网真实环境审计的两个反馈
16+
驱动了厂商查询升级 + LAN 主机详情模态信息扩容;再带一个 UX 修复。
17+
18+
### 新增
19+
- **完整 IEEE OUI 注册表(~250 → 39,444 条)。** Bundle 的
20+
`*_ouis.json` 之前是人工精选子集;换成 IEEE Registration
21+
Authority MA-L(24-bit)注册表全量。`bluetooth_ouis.json`
22+
(BLE + LAN 主机列表用)和 `wifi_ouis.json`(Wi-Fi BSSID 解析
23+
用)现在共用同一份 39k 条权威数据。在企业网络上,网关 /
24+
企业交换机 OUI(Cisco / Aruba / H3C / HPE / Huawei 等)从
25+
`(未知)` 变成实际厂商名。文件大小:~20 KB → ~1.5 MB 每个;
26+
内存 +~5 MB;查询速度仍是 O(1)。
27+
- **`scripts/refresh_ouis.py`** 新的 CLI,从
28+
`https://standards-oui.ieee.org/oui/oui.csv` 拉权威 CSV,解析
29+
+ 去重 + 重写两个数据文件。每次发布前跑一次,把新增 OUI 收
30+
进来。IEEE 出处在 `_meta` 和 README 里说明。
31+
- **`LANHost.last_rtt_ms``LANHost.last_reachable_at`** 两个
32+
新字段,由每次 sweep 的 per-host ICMP 结果填充。`last_seen`
33+
(ARP 缓存观察)和 `last_reachable_at`(最近一次成功 ICMP 应
34+
答)分开追踪,所以一台在 ARP 里但已经下线的主机能看出新鲜
35+
度差。这两个字段在静默 tick 里保留——临时不响的主机最近一
36+
次已知 RTT 仍然在详情页可见。
37+
- **LANDetailScreen 网络段:延迟 + 可达 两行。** `延迟 X.X ms`
38+
(last_rtt_ms 为空时省略);`可达 此次扫描 | Xs前 | 从未`
39+
(始终渲染)。值来自 `_ping_one` 新的 `(reachable, rtt_ms)`
40+
返回元组。
41+
- **LANDetailScreen Bonjour 服务空状态占位。** 主机没有任何
42+
Bonjour 服务时,这一段现在渲染 `(无 Bonjour 服务)`,不再
43+
整段隐藏——之前用户无法判断这条交叉关联通道有没有被检查过。
44+
45+
### 变更
46+
- **`_ping_one``_sweep` 返回值形状。** `_ping_one` 现在返
47+
`tuple[bool, float | None]`,从 macOS ping stdout 里 parse
48+
`time=X.XXX ms``_sweep` 返回 `dict[str, tuple[bool,
49+
float | None]]`,merge 步骤直接读这个字典填 per-host RTT /
50+
可达字段,不再重复探测。
51+
52+
### 修复
53+
- **LAN 诊断行 ZH 标签重复。** `子网 子网 11.10.158.0/24`
54+
`上次扫描 上次扫描 38s`——行前缀标签和值模板都翻译成同一
55+
个 ZH 词所以重复了。把值模板里多余的前缀词去掉;行标签本身
56+
就能识别这是哪一行。
57+
- **标题栏在所有视图都显示 `扫描间隔 7s`** 这是 Wi-Fi
58+
CoreWLAN 扫描间隔——但用户在 LAN 视图看着它,可能误以为
59+
LAN 每 7s 扫一次,实际是 60s。把扫描间隔显示改成视图相关:
60+
wifi 显示 `scan 7s`、lan 显示 `sweep 60s`、BLE 和 Bonjour
61+
直接不显示(推驱动的 poller,没有有意义的间隔)。
62+
1363
## [1.2.0] — 2026-05-19
1464

1565
Minor release。亮点:新增第四个面板,回答「谁在用我的 Wi-Fi」——

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.2.0"
3+
version = "1.3.0"
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)