fix(tui): align events vocabulary + filter-keys hint with A1#109
Merged
Conversation
Two A1-era cleanups bundled from the 2026-05-21 EN<->ZH TUI audit: 1. EN event panel said "joined" but the events are `*_seen`. `ble_device_seen` / `bonjour_service_seen` / `lan_host_seen` rendered in EN as `[BLE] device joined:` / `[BJ] service joined:` / `[LAN] host joined:`. ZH already said `设备出现 / 服务出现 / 主机出现` and the JSONL `type` always said `*_seen`. "Joined" also lies about semantics — events fire on the first passive observation, including strangers' phones walking past. Renamed three EN i18n keys to `device seen: ` / `service seen: ` / `host seen: `; ZH unchanged. 2. Events filter docs claimed `1/2/3/4/0` but A1 added `5/6/7`. Bindings 5/6/7 → ble/bonjour/lan are wired in `EventsScreen.BINDINGS`, but four user-facing strings (modal footer + help-modal prose, EN + ZH) still listed only the legacy five keys. Extended to `1/2/3/4/5/6/7/0` in both locales so the new filters are discoverable from the TUI alone. Spec: tui-shell EventsPanel-format requirement MODIFIED — three bullets + one scenario example flip from `joined` to `seen` and note why the verb matters. Tests: 3 string-assertion flips in test_tui_helpers.py (device/service/host joined -> seen). 768 pytest passed, snapshot regression green, both openspec validates clean. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2 tasks
chenchaoyi
added a commit
that referenced
this pull request
May 21, 2026
Applies the MODIFIED requirement from align-events-vocabulary (#109) into canonical openspec/specs/tui-shell/spec.md — the EventsPanel format bullets and BLE-seen scenario example flip from `joined` to `seen`, with a new paragraph explaining why the verb matters. Moves the change dir to openspec/changes/archive/2026-05-21-align-events-vocabulary/. All artifacts done, all tasks complete, validate --specs --strict green (21/21). Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two A1-era cleanups bundled from the 2026-05-21 EN ↔ ZH TUI audit:
1. EN UI says "joined" but the events are
*_seen.ble_device_seen/bonjour_service_seen/lan_host_seenwere rendering in EN as[BLE] device joined:/[BJ] service joined:/[LAN] host joined:. ZH already said设备出现 / 服务出现 / 主机出现(appeared / seen), and the JSONLtypefield always said*_seen. "Joined" also misrepresents semantics — these events fire on the first passive observation, including strangers' phones walking past. Renamed three EN i18n keys todevice seen:/service seen:/host seen:. ZH catalog values are unchanged.2. Events filter footer claimed
1/2/3/4/0; A1 added5/6/7. The filter cycle has eight buckets since A1 (ble/bonjour/lanon keys5/6/7),action_set_filteraccepts them, the bindings work. But four user-facing strings — events-modal footer + help-modal "Events modal (m)" paragraph, EN + ZH — still listed only the legacy five keys. Extended to1/2/3/4/5/6/7/0in both locales so the new filters are discoverable from the TUI alone.What's in this PR
openspec/changes/align-events-vocabulary/— proposal / design / tasks /tui-shellspec delta (MODIFIED requirement on EventsPanel format, three bullets + one scenario flip fromjoined→seen, plus a note explaining why the verb matters)src/diting/i18n.py— three EN catalog keys renamed; help-modal events paragraph and events-modal footer extended (EN + ZH)src/diting/tui.py:612, 884, 1947, 1970, 1993— call-site updatestests/test_tui_helpers.py:2659, 2692, 2725— threejoined→seenassertion flipsCHANGELOG.md+docs/zh/CHANGELOG.md— two## [Unreleased]→### Fixedentries in parityTest plan
uv run pytest— 768 passeduv run python scripts/tui_snapshot.py --mode regression— greenopenspec validate --specs --strict— 21/21 passedopenspec validate align-events-vocabulary --strict— validAudit findings file
/private/tmp/wfs-tui-audit-20260521-172708/findings.md— covers the two issues this PR fixes plus three smaller ones (BLE services column clipsInformationmid-word;AP host→APheading drift in ZH basics; country-code state artifact).Generated with Claude Code