Skip to content

chore(release): v1.5.0#113

Merged
chenchaoyi merged 1 commit into
mainfrom
chore/release-v1.5.0
May 22, 2026
Merged

chore(release): v1.5.0#113
chenchaoyi merged 1 commit into
mainfrom
chore/release-v1.5.0

Conversation

@chenchaoyi

Copy link
Copy Markdown
Owner

Summary

Cuts v1.5.0. BLE event-stream quality pass driven by the 2026-05-21 EN ↔ ZH TUI audit and a 5.6 h real-environment capture. Bundles five PRs sitting in [Unreleased] since v1.4.0:

Five PRs merged, three spec deltas applied to canonical specs (bluetooth-scanning twice, tui-shell once). No new dependency, no new schema, no JSONL field change.

SemVer: minor bump 1.4.0 → 1.5.0. The 5 s default presence gate is a behaviour shift but configurable; --ble-presence-gate 0 restores the prior contract. CLI flag is purely additive.

Test plan

  • uv run pytest — 784 passed
  • uv run python scripts/tui_snapshot.py --mode regression — green
  • openspec validate --specs --strict — 21/21 passed
  • EN + ZH CHANGELOG entries in parity
  • pyproject.toml + uv.lock regenerated for v1.5.0
  • Real-environment smoke: launch a fresh session in dense BLE, confirm (匿名) 0s flicker is gone from the events panel

Tag will be cut on the merge commit after explicit approval.

Generated with Claude Code

BLE event-stream quality pass driven by the 2026-05-21 EN/ZH
TUI audit and a 5.6 h real-environment capture.

Changed:
- BLE anonymous-advert presence gate, default 5s. Anonymous
  adverts (vendor + RSSI only, no name) must be observed for
  at least presence_gate_s before firing seen; if they age
  out via TTL before the gate matures, NO event fires --
  neither seen nor left. Eliminates the single-packet
  seen_for=0s ghost flicker while preserving real walk-bys
  (5-30s contact, multi-packet, still register). Named devices
  and connected peripherals bypass the gate. CLI flag
  --ble-presence-gate DURATION + env var
  DITING_BLE_PRESENCE_GATE; 0 restores the A1 record-everything
  contract.
- diting --help restructured into Subcommands + Global options
  sections. --notify promoted to top-level flag; analyze flags
  listed inline; per-flag descriptions trimmed to 2 lines.

Fixed:
- Events panel said "device joined" but the canonical event
  types are *_seen. Renamed three EN i18n keys (device seen /
  service seen / host seen); ZH catalog unchanged.
- Events filter footer claimed 1/2/3/4/0; A1 added 5/6/7
  bindings for ble/bonjour/lan but the footer + help-modal
  prose still listed only the legacy five keys. Extended to
  1/2/3/4/5/6/7/0 in both locales.
- BLE ble_device_left re-emission for flapping identifiers.
  One identifier in a 5.6h capture produced 229 left events
  from a single seen. _detect_transitions now gates
  left-emission on a per-session _departed_identifiers set:
  at most one left per seen, identifier silent for the rest
  of the session after departure. JSONL size for the captured
  session drops ~63%.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@chenchaoyi chenchaoyi merged commit 5b1511a into main May 22, 2026
5 checks passed
@chenchaoyi chenchaoyi deleted the chore/release-v1.5.0 branch June 5, 2026 10:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant