Skip to content

Add Roku TV as a digital frame driver (cast via HA core roku media_player) - #19

Merged
dsackr merged 2 commits into
mainfrom
claude/roku-digital-frame-kq515f
Aug 17, 2026
Merged

dsackr merged 2 commits into
mainfrom
claude/roku-digital-frame-kq515f

Conversation

@dsackr

@dsackr dsackr commented Aug 1, 2026 •

Copy link
Copy Markdown
Owner

Roku has no local API to receive arbitrary image bytes, so this driver
targets an existing HA core roku media_player entity and casts images
via media_player.play_media, staging the PNG behind a short-lived
HA-hosted token URL (same pattern as the Samsung MDC driver) since HA's
Roku integration launches its built-in Media Player app off a URL rather
than accepting bytes directly.

Adds config_flow add_roku step (entity picker, no discovery/probe),
RokuCoordinator, wiring through init/http_api/panel_codec/helpers/sensor/
library_http, panel + strings updates, KPF 39 (renumbered from 36 after
merging main, which had already taken 36-38), and backend tests.

Co-Authored-By: Claude Sonnet 5
Claude-Session: https://claude.ai/code/session_01KmCpFs3Y4KhAjap7dSMNco

dsackr commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

Pushed a fix for the validate (hassfest) failure — after_dependencies wasn't alphabetically sorted with the rest of manifest.json's keys.

The test job's 3 pytest errors (not failures — 544 passed, 3 errors) are a pre-existing aiodhcpwatcher/scapy socket issue, not something this PR introduces: I confirmed it reproduces identically (527 passed, 3 errors) on a clean checkout of main, and docs/TEST_LEDGER.md already shows main red with this same "N passed, 3 errors" signature going back several commits (e.g. 185c654). Leaving it alone here since it's unrelated to the Roku driver; will re-run once main's CI recovers.


Generated by Claude Code

dsackr commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

The panel-playwright failure (2 failed, 166 passed) is also pre-existing on main, not something this PR introduces — the 2 failing specs are addons-catalog-refresh.spec.js and addons-categories.spec.js (scene-pack/add-ons catalog UI), unrelated to the Roku driver or anything this PR touches. docs/TEST_LEDGER.md shows the identical 2 failed signature on every panel-playwright CI run on main going back to at least 60f6213 (2026-07-27).

So both currently-red checks on this PR (test/backend-pytest's 3 errors, test/panel-playwright's 2 failures) are carried over from main being red, not regressions from this change. I'll rebase onto main and re-check once those recover.


Generated by Claude Code

dsackr commented Aug 4, 2026

Copy link
Copy Markdown
Owner Author

Update: main moved substantially since the comments above (v0.12.171 → v0.12.179), fixing panel-playwright and most of the backend flakiness along the way. This branch had drifted into a real merge conflict against main (in __init__.py, between this driver's dispatch and a new 31.5" resolution migration) — resolved and pushed as a merge commit (a54dcbc).

Current state: validate ✅, panel-playwright ✅, backend-pytest still red but down to exactly one pre-existing test — tests/python/setup/test_init_setup_entry.py::test_late_bound_tracker_watch_does_not_violate_thread_safety (pytest_socket.SocketBlockedError via aiodhcpwatcher/scapy) — same root cause flagged in my first comment, now isolated to a single test. Confirmed this reproduces identically on a clean main checkout, so it's not something this PR introduces. Will merge main again once that test is fixed upstream.


Generated by Claude Code

dsackr commented Aug 7, 2026

Copy link
Copy Markdown
Owner Author

Pushed the same DHCP/scapy socket fix here too (a7d67c4) — CI now confirms 2 failed, 565 passed, 0 errors. The DHCP test error that's been blocking this PR for days is resolved; the only remaining failures are the pre-existing, unrelated "Daily Newspaper" skill-count regression on main (test_built_in_skills_seeded_on_first_load, test_built_ins_not_reseeded_after_user_deletes_one) — not something this PR touches. Also opened #21 to land the DHCP fix on main itself.

This PR is functionally green modulo that one unrelated pre-existing issue.


Generated by Claude Code

dsackr commented Aug 8, 2026

Copy link
Copy Markdown
Owner Author

CI confirms: all checks green (validate ×2, backend-pytest, panel-playwright) on the merge commit 2ee5e1f. This PR is now fully mergeable and ready for review — no known issues remaining.


Generated by Claude Code

claude added 2 commits August 17, 2026 16:25
…ayer)

Roku has no local API to receive arbitrary image bytes, so this driver
targets an existing HA core `roku` media_player entity and casts images
via `media_player.play_media`, staging the PNG behind a short-lived
HA-hosted token URL (same pattern as the Samsung MDC driver) since HA's
Roku integration launches its built-in Media Player app off a URL rather
than accepting bytes directly.

Adds config_flow add_roku step (entity picker, no discovery/probe),
RokuCoordinator, wiring through init/http_api/panel_codec/helpers/sensor/
library_http, panel + strings updates, KPF 36, and backend tests.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KmCpFs3Y4KhAjap7dSMNco
after_dependencies must sort alphabetically with the rest of the
manifest keys (after domain/name) — hassfest's validate check flagged
it placed after dependencies instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KmCpFs3Y4KhAjap7dSMNco
@dsackr
dsackr force-pushed the claude/roku-digital-frame-kq515f branch from 38ece16 to fe26c8e Compare August 17, 2026 23:28
@dsackr
dsackr merged commit 29ac096 into main Aug 17, 2026
4 checks passed
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.

2 participants