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
f071d540bd
feat(remote): protocol-backed RemoteEntity — SHORT/START_LONG/END_LONG prefixes, num_repeats/delay/hold, activity = current-app push, POWER keys honoring is_on
2026-10-08 09:45:06 +01:00
James Mackay
728b7ccbf9
feat(media_player): protocol-first command routing with ADB + legacy fallbacks, play_media(channel/app/url) per §7 with digit task-cancel guard, volume readout from protocol push, is_on tier in the power ladder
2026-10-08 09:43:34 +01:00
James Mackay
61aca9d413
feat: protocol key/launch command layer — RemoteKeyCode maps, C-LAUNCH app launch, ADB digit keyevent fallback, PlaybackIntent protocol path
2026-10-08 09:41:45 +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
d57c4eaa40
feat: protocol_settings wiring + InvalidAuth reauth start + entry migration to v2; PLATFORMS gains REMOTE (placeholder platform until t10)
2026-10-08 09:33:19 +01:00
James Mackay
b5fc0dacf4
feat(config_flow): remote-protocol cert/PIN pairing step + reauth after device hard reset (shared .storage cert paths; ADB step body byte-intact, routes onward when protocol enabled)
2026-10-08 09:32:27 +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
a4e7a285d4
fix(connection): let the library own keep_reconnecting's task — no double scheduling on protocol start/stop
2026-10-08 09:27: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
49cf402bbe
feat(pyproject): androidtvremote2 dev dependency; manager docstring covers both transports
2026-10-08 09:25:25 +01:00
James Mackay
27cc69b1d3
feat(connection): protocol transport alongside ADB — AndroidTVRemote client, keep_reconnecting ownership, push callbacks into StateStore, InvalidAuth→reauth hook, cert/PIN client factory
2026-10-08 09:25:11 +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
75fff11d04
fix(media_player): ADB-health-aware _attr_available; fetch_media_info dispatches through _track_task (F2, F4)
2026-10-08 09:13:51 +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
48c30463ec
fix: await the async ADB poller-factory builder during entry setup (keeps setup non-blocking, no ConfigEntryNotReady)
2026-10-08 09:04:13 +01:00
James Mackay
0da84a5a6e
refactor(sensor): Current App sensor falls back to the connection manager StateStore and refreshes on store updates
2026-10-08 09:03:42 +01:00
James Mackay
93b766ae97
refactor(media_player): entity becomes a thin view over the ShieldConnectionManager store; poll loop and socket removed from the entity
2026-10-08 09:03:18 +01:00
James Mackay
0a7dd887d7
refactor(config_flow): ADB pairing step reuses ShieldConnectionManager.test_connect (throwaway one-shot connect)
2026-10-08 08:59:36 +01:00
James Mackay
63f76f5328
feat: entry.runtime_data ShieldConnectionManager lifecycle — passive when ADB unavailable, close on HA stop + unload; adb_session adapter docstring
2026-10-08 08:59:07 +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
4779c20407
feat(connection): ShieldConnectionManager + StateStore — persistent socket, watchdog backoff reconnect, TTL expiry, listener API (Phase 1, B1/B5)
2026-10-08 08:54:54 +01:00
James Mackay
2ade5091c4
feat(const): persistent-connection timing constants — watchdog backoff/cap/jitter, StateStore TTL
2026-10-08 08:53:27 +01:00
James Mackay
4269e233b8
feat(adb_client): expose last_dump so consumers can parse the Audio playback section from the same query
2026-10-08 08:53:13 +01:00
James Mackay
37164b6f24
feat: re-export parse_audio_playback + parse_wakefulness from ha_adb_common (additive, keeps hisense_tv consumer parity)
2026-10-08 08:45:06 +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
a1e671ac6a
fix: track intent-retry tasks in the unload-cancelled task registry so removal can't trigger a shell() auto-reconnect (reviewer F2)
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
f6a37bdcd5
docs: fold research findings into plan — streaming_shell verified on pinned adb-shell 0.4.4 (C-STREAM), market://launch auto-prefix (C-LAUNCH), channel_up/down keys
2026-10-08 08:40:46 +01:00
James Mackay
db8712db1a
docs: add RESEARCH_IDEAS.md — community feature requests, androidtvremote2/adb_shell API audits, other-integration patterns, ranked ideas (research task t3)
2026-10-08 08:40:14 +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
4702c9534c
docs: correct Phase 2 volume expectations — androidtvremote2 has no absolute volume set (core closed it not_planned); VOLUME_STEP|MUTE only, level from push
2026-10-08 08:36:11 +01:00
James Mackay
ce82127a40
ci: add lint+test workflow; schedule package constants (TiviMate/Wholphin/system media); drop the stale sibling-checkout dev dependency
Release / release (push) Successful in 4s
Test / test (push) Failing after 6s
2026-10-08 07:49:07 +01:00
James Mackay
6b4227cb40
refactor: centralize ADB host/key resolution in helpers.py; drop the three duplicated resolvers
2026-10-08 07:48:30 +01:00
James Mackay
d3afda0a25
fix: make ADB poll failures visible and stop stale-state cling; cancel tracked poll tasks on unload (B2, B5-prep); lint cleanups across daemon modules
2026-10-08 07:45:45 +01:00
James Mackay
359b96ef9c
fix: retry playback intents over the command path that originally served them (ADB broadcasts annotate the intent, self-heal retry goes back over ADB)
2026-10-08 07:39:53 +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
James Mackay
f829ef7a40
docs: README — drop mirror-job references after .gitea workflow rework
Release / release (push) Successful in 5s
v2026.10.08
2026-10-08 07:32:22 +01:00
James Mackay
b706c031ea
ci: streamline Gitea release workflow under .gitea/ (GITEA_TOKEN, concurrency, no HACS mirror job)
2026-10-08 07:32:08 +01:00
Levi
304e6dc3ec
docs: rewrite README for the Shield-only fork
Release / gitea-release (push) Canceled after 0s
Release / hacs-github-mirror (push) Canceled after 0s
2026-10-08 07:26:13 +01:00
Levi
6622cc04b4
chore: adopt date-based versioning; point manifest metadata at the Gitea repo
2026-10-08 07:26:13 +01:00
Levi
9da7cb8b22
ci: release on every push to master with date-based versioning (vYYYY.MM.DD)
2026-10-08 07:26:13 +01:00
Levi
37df5732b7
ci: port release workflow to Gitea Actions (tag + release zip, optional HACS GitHub mirror)
2026-10-08 07:20:03 +01:00
Levi
afc5f0a1d0
docs: add MVP plan and Shield firmware research findings
2026-10-08 07:18:27 +01:00
Levi and Claude Opus 4.7
41d3b94107
Fix manifest.json key order for hassfest
...
HA requires domain, name, then alphabetical. Previous file had
issue_tracker before iot_class; alphabetically iot_class (i-o-t) sorts
before issue_tracker (i-s-s). Reordering unblocks hassfest.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
v0.1.1
2026-04-17 18:38:59 -05:00
Levi and Claude Opus 4.7
c9c26a21c8
CI: drop HACS/hassfest validate workflow; keep release workflow only
...
The validate workflow's HACS checks failed on expected-for-now gaps
(no repo description/topics, no brand assets, private-repo access).
Those are tracked separately as manual launch prep. Release workflow
stays — it does the tag-on-version-bump job without the noise.
In media-zone, manifest dependencies gained "http" since __init__.py
imports from homeassistant.components.http for StaticPathConfig.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-17 18:22:17 -05:00
Levi and Claude Opus 4.7
0598eac446
CI: auto-release on manifest version bump; validate on PR/push
...
Adds .github/workflows/release.yml (for HA integrations, watches
custom_components/<domain>/manifest.json; for ha-adb-common, watches
pyproject.toml). When the version field changes on main, the workflow
creates a matching v<version> tag and a GitHub Release with
auto-generated notes — as long as the tag doesn't already exist.
For the four HA integrations, also adds validate.yml running HACS's
official validator and Home Assistant's hassfest against every PR,
push to main, and nightly.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-17 18:18:44 -05:00
Levi and Claude Opus 4.7
7ab3a050c5
README: clearer HACS install steps + early-access status callout
...
Adds a post-install "add via Devices & Services" step that users
frequently miss, tightens the HACS custom-repository wording, and
prepends a status note so HACS users know this is still 0.1.x.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-17 17:58:47 -05:00