James Mackay
|
0ecee66953
|
test(entity_stublib): ConfigFlow stub accepts the domain= __init_subclass__ kwarg and load_entity_modules drops config_flow (per-file loader ownership preserved) (completes P5-2 test scaffolding)
|
2026-10-09 06:00:20 +01:00 |
|
James Mackay
|
a3b397920e
|
test(config_flow,media_player,remote): digit-delay/send-enter options (store + window/error validation), IME-first text entry with ADB fallback tier, icon column parse/prefill/store (P5-2)
|
2026-10-09 06:00:17 +01:00 |
|
James Mackay
|
c57a2e2ff2
|
test(ha_adb_common,connection): application-label tolerance (dual quotes, empty multi-label blocks, null, absent) + label cache reuse across cycles — no duplicate pm dump (P5-1)
|
2026-10-09 05:52:02 +01:00 |
|
James Mackay
|
2e6dfd8981
|
test(media_player): entity tier serves below map/manifest per the P5-1 resolution ruling (was map-beats-entity contradiction)
|
2026-10-09 05:49:18 +01:00 |
|
James Mackay
|
f03ef1f531
|
fix(config_flow): per-host zeroconf updates — blank auto-detect hosts self-heal from the discovery address, a deliberately-different ADB host is never clobbered, same-IP with both hosts current is a no-op (F2)
|
2026-10-08 11:22:04 +01:00 |
|
James Mackay
|
b37a14b920
|
fix(media_player): the adb_command participant registry key is computed once at registration and stored on the entity — add/remove always match (F4)
|
2026-10-08 11:21:09 +01:00 |
|
James Mackay
|
326f02cb59
|
feat(media_player): BrowseMedia app directory — root lists the options apps map (curated TiviMate/Wholphin/Netflix/YouTube fallback), selection launches via play_media(app) (P4-2c)
|
2026-10-08 11:12:37 +01:00 |
|
James Mackay
|
f4d750ff92
|
test(config_flow): zeroconf discovery (pre-fill, no-host abort, IP-change host update, same-IP skip) + apps map editor (store/parse/clear/prefill) + app_name map resolution tiers (P4-1)
|
2026-10-08 11:03:28 +01:00 |
|
James Mackay
|
ce90f59f8e
|
fix(config_flow): no_state_source fires only when none of the three sources is present — ADB-only standalone is valid; strings/docs name all three (F2)
|
2026-10-08 10:52:44 +01:00 |
|
James Mackay
|
3b8e97fe5b
|
fix(media_player): privacy bare-app identity outranks the channel-title fallback in the foreground tier (F3)
|
2026-10-08 10:52:24 +01:00 |
|
James Mackay
|
392553ee26
|
fix(media_player): channel-title fallback gated to the channel app (TIVIMATE_PACKAGE or audio_playback membership) — launcher never shows a channel number (F1)
|
2026-10-08 10:52:08 +01:00 |
|
James Mackay
|
bc457baae7
|
feat(media_player): foreground tier in the state ladder with app-source now-playing (last-known → last_channel → audio hint), sensor reads the store's foreground priority chain (P3-3a,c)
|
2026-10-08 10:45:58 +01:00 |
|
James Mackay
|
1f0a4b2021
|
feat(running_apps): media_dag_running_apps enrichment — TTL-capped last_known_state/last_known_title for apps without a live session (P3-3b)
|
2026-10-08 10:42:41 +01:00 |
|
James Mackay
|
bb2f787fcd
|
test(ha_adb_common): fixture-driven foreground-parser tests — TiviMate capture, R4 launcher, wrap join, topResumed fallback ordering, duplicates tolerated (P3-2a)
|
2026-10-08 10:39:43 +01:00 |
|
James Mackay
|
8885ddd5b5
|
feat(connection): ADB foreground fallback on the watchdog cadence when the protocol push is silent (store priority protocol > ADB); audio-playback hint filtered through SYSTEM_MEDIA_PACKAGES (P3-2b,c)
|
2026-10-08 10:33:38 +01:00 |
|
James Mackay
|
34d09e9f70
|
feat(media_player): app_id/app_name prefer the androidtv entity, fall back to the protocol current_app push when absent/unavailable; manifest androidtvremote2 floor aligned to >=0.2.0 (P3-1b,c)
|
2026-10-08 10:28:56 +01:00 |
|
James Mackay
|
d35b61078d
|
feat(config_flow): standalone setup — androidtv entity optional with no_state_source validation, entry data omits the field for standalone entries, sensor tolerates its absence; migration keeps v1 field / v2 absence valid (P3-1a,d)
|
2026-10-08 10:28:56 +01:00 |
|
James Mackay
|
5f8c3290cc
|
fix: flow VERSION=2 for new entries; optional ENTER gains the ADB keyevent-66 fallback; CI installs androidtvremote2 for the real-library tests (F4, F5, F6)
|
2026-10-08 10:12:12 +01:00 |
|
James Mackay
|
8462ad494c
|
fix(connection): ADB outage clears only ADB-derived store fields — protocol push truth survives by TTL (F2)
|
2026-10-08 10:03:27 +01:00 |
|
James Mackay
|
b451638c65
|
test: command-routing and play_media(channel) orchestration — digit sequence with cancel guard, fallback ordering protocol→ADB→legacy, remote send_command holds/repeats, volume readout, is_on ladder
|
2026-10-08 09:54:23 +01:00 |
|
James Mackay
|
906126b0da
|
test(config_flow): protocol cert/PIN pairing, reauth-after-hard-reset, and v1→v2 entry migration (scoped stubs, deterministic PIN/MAC fake client)
|
2026-10-08 09:36:17 +01:00 |
|
James Mackay
|
e37a3be75f
|
feat(const): protocol config keys + ports; connection manager generates missing certs before protocol start
|
2026-10-08 09:30:50 +01:00 |
|
James Mackay
|
9a1e1300dd
|
test(connection): protocol-transport unit tests — push wiring, InvalidAuth reauth hook, lib-owned keep_reconnecting lifecycle, passive paths, volume normalization
|
2026-10-08 09:27:38 +01:00 |
|
James Mackay
|
d07820cde8
|
test: sound backoff-jitter assertions (per-delay band + non-overlapping growth) and scoped import-stub teardown in the pairing regression tests (F5 residual)
|
2026-10-08 09:19:20 +01:00 |
|
James Mackay
|
9c409b3805
|
fix(connection): reconnect decision closes the failed socket (health_check's documented role) + symmetric backoff-bound test assertion (F3, F5)
|
2026-10-08 09:13:51 +01:00 |
|
James Mackay
|
24981d84a8
|
fix(config_flow): pairing step passes test_connect's declared signature (host, port, key_path) — regression tests cover the adb_pair submit path (F1)
|
2026-10-08 09:13:51 +01:00 |
|
James Mackay
|
ec2db2ae58
|
test(connection): manager unit tests with a fake poller — connect/reconnect backoff, TTL expiry, listeners, lifecycle
|
2026-10-08 08:58:00 +01:00 |
|
James Mackay
|
a72cf57494
|
test: poll_running_apps parsing against SYNTHETIC activity-recents fixture (A= and I= patterns; real R6 capture still outstanding)
|
2026-10-08 08:43:23 +01:00 |
|
James Mackay
|
b91a4242ba
|
feat(adb_client): exact-value mWakefulness= parse (R5), health_check(), optional media-session truncation (B4); wakefulness fixtures + tests
|
2026-10-08 08:41:21 +01:00 |
|
James Mackay
|
8f27618e3d
|
feat(media_session): parse PlaybackState position/speed/updated (uptime-ms) + parse_audio_playback section (MVP plan Phase 1, R9/R2)
|
2026-10-08 08:38:35 +01:00 |
|
James Mackay
|
a2f1948a88
|
test: add firmware capture fixtures and stdlib-level unit tests for parsers, intents, running apps
|
2026-10-08 07:37:34 +01:00 |
|