@@ -9,6 +9,81 @@ the project follows [Semantic Versioning](https://semver.org/) where
99practical. The leading ` v0.x ` line is allowed to break minor
1010behaviours between releases.
1111
12+ ## [ 1.0.11] — 2026-05-15
13+
14+ The Wi-Fi and Bonjour detail modals stop being raw-field dumps and
15+ start telling you what the rest of diting already knows. Same data,
16+ much richer context.
17+
18+ ### Added (Wi-Fi detail modal)
19+ - ** Signal history** — sparkline of the last ~ hour of RSSI samples
20+ for the inspected BSSID + a ` σ X dB · stable / active ` stability
21+ label. Drawn from ` EnvironmentMonitor ` 's existing per-BSSID ring.
22+ - ** Same physical AP** — sibling BSSIDs (2.4 / 5 / 6 GHz radios)
23+ grouped via ` NetworkInventory.is_same_ap ` , with their channel /
24+ band / RSSI from the current scan.
25+ - ** Roam history** — newest-first list (capped at 10) of roam
26+ events where this BSSID was either ` previous_bssid ` or
27+ ` new_bssid ` . ` [same-AP] ` / ` [cross-AP] ` tags.
28+ - ** Recommendation** — when the inspected row IS the
29+ currently-associated BSSID AND a same-SSID candidate is ≥ 15 dB
30+ stronger, render `consider switching to <BSSID > on <band > ·
31+ +N dB` . Uses the same ` clearly-better` rule the diagnostics
32+ panel's Roam score line uses.
33+
34+ ### Added (Bonjour detail modal)
35+ - ** Vendor-resolution trace** — Identity section's vendor row
36+ appends ` · via txt-vendor / oui / hostname-pattern /
37+ service-type-hint` so the user can see which signal won. Backed
38+ by a new ` BonjourDevice.vendor_trace ` field populated by a new
39+ ` resolve_vendor_with_trace() ` . Maintainers use it to find
40+ long-tail decoder gaps; users get a small confidence cue.
41+ - ** Other services on this host** — when one host advertises
42+ multiple services (the user's own Mac is the canonical case:
43+ ` AirPlay ` + ` AirPlay audio ` + ` Apple Companion ` ), list the other
44+ categories with their ` last_seen ` age. Reframes the modal from
45+ service-instance-centric to device-centric.
46+ - ** TXT decoders** — well-known keys (` model ` / ` osxvers ` /
47+ ` srcvers ` / ` deviceid ` ) parse into named friendly fields
48+ rendered above the raw TXT table. Apple model identifiers like
49+ ` MacBookPro18,1 ` decode to ` MacBook Pro 16-inch (M1 Pro, 2021) ` ;
50+ macOS major versions render with codenames (e.g. ` Tahoe (26) ` ).
51+ Lives in ` src/diting/mdns_txt_decoders.py ` as a small
52+ registry; decoders never raise.
53+ - ** Cross-surface correlation** — new section ties the Bonjour
54+ host to the rest of diting's scan surfaces via three rules:
55+ - ** Rule 1** (deterministic): the announced IP matches the
56+ Mac's ` Connection.ip_address ` → `local Mac (this host is
57+ you)`. Fires on every announcement of the user's own Mac.
58+ - ** Rule 2** (opportunistic): TXT ` deviceid ` parses as a
59+ canonical MAC AND those bytes appear in some BLE row's
60+ ` manufacturer_hex ` → `also on BLE as <name|type|vendor> ·
61+ <RSSI > dBm`. Rare for Apple devices (RPA) but useful for
62+ printers / IoT hubs that embed their MAC in adverts.
63+ - ** Rule 3** (probabilistic, hedged): the Bonjour hostname
64+ resolves to Apple via ` _NAME_PATTERN_VENDORS ` AND a nearby
65+ BLE row carries an Apple-Proximity-class ` type ` (`Nearby
66+ Info` / ` Nearby Action` / ` Handoff` / ` Apple Proximity`) →
67+ ` likely the same device as BLE row <short-id> ` . The
68+ "likely" hedge is explicit because hostname-pattern
69+ correlation is probabilistic.
70+
71+ ### Changed
72+ - ` WifiDetailScreen.__init__ ` and ` BonjourDetailScreen.__init__ `
73+ gain optional kwargs (` environment_monitor ` / ` event_ring ` /
74+ ` latest_scan ` for Wi-Fi; ` latest_mdns ` / ` latest_ble ` /
75+ ` latest_connection ` for Bonjour) so the modals can read live
76+ session state. All default to ` None ` ; sections whose ref is
77+ missing omit entirely.
78+ - ` _section_txt ` (Bonjour) now renders Decoded first + Raw second.
79+ Decoded keys are excluded from the Raw table via
80+ ` mdns_txt_decoders.decoded_keys() ` .
81+
82+ ### Spec
83+ Three capabilities modified: ` wifi-detail-modal ` ,
84+ ` bonjour-detail-modal ` , ` mdns-scanning ` . See
85+ ` openspec/changes/archive/2026-05-15-wifi-and-bonjour-detail-enrichment/ ` .
86+
1287## [ 1.0.10] — 2026-05-14
1388
1489Two fixes that surface only in the curl-installed frozen binary
0 commit comments