The build badge pointed at a non-existent ci.yml workflow (rendered red,
'repo or workflow not found'). Point it at the real tests.yml workflow, and
add a Buy Me a Coffee support badge linking to buymeacoffee.com/relaytv.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* docs: redesign README as a product landing page
Rebuild the README as a product landing page mirroring the RelayTV server
repo: centered logo/tagline, badges, a device-framed hero, a Control /
Automate / Embed overview, and a "See it in action" gallery. Existing
reference content (install, services table, examples, security, limitations,
compatibility) is preserved below the fold.
Add scripts/readme-screenshots.mjs to reproducibly capture the Home Assistant
media-player more-info dialog, RelayTV device page, and embedded sidebar panel
from a live instance (token injected into frontend localStorage, never written
to disk), then frame them in browser/phone chrome for the README and
release/ad assets.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* docs: remove stale relaytv-ha.png montage
The old README montage is superseded by the device-framed hero and gallery
images and is no longer referenced anywhere.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* docs: use the RelayTV brand banner in the README and hero
Replace the plain logo.png with the polished RelayTV banner asset (shared with
the RelayTV server repo) at the top of the README and as the hero brand mark,
and regenerate hero.png. The screenshot script now defaults to the banner.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* chore: drop legacy build-release.sh/VERSION from .gitignore
The gitignored build-release.sh and root VERSION file were an unused release
path (VERSION stuck at 0.0.7, and a differently-named zip than HACS expects).
Real releases run from git tags + custom_components/relaytv/manifest.json via
.github/workflows/release.yml, which builds relaytv.zip on tag push. Removed
the local scripts and their now-pointless ignore entries.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* docs: add Home Assistant 0.4.0 hardening roadmap
* fix: protect media credentials and resume state
* feat: authenticate RelayTV API operations
* fix: make targeting and media state reliable
* test: add Home Assistant integration CI
* fix: validate API credentials during setup
* release: prepare HACS 0.4.0
* fix: align pytest dependency pin
* fix: close URL sanitizer gaps and correct player state reporting
Sync the sensitive-query-key list with the RelayTV server (adds auth,
exp, jwt, X-Emby-Token, X-Jellyfin-Token), filter query credentials
from relative URLs instead of returning them verbatim, and preserve
brackets around IPv6 literal hosts.
Also report volume on RelayTV's 0-100 scale unconditionally (a raw 1
is 1%, not full volume) and give the coordinator its own
position_updated_at stamp — the base DataUpdateCoordinator has no
last_update_success_time, so media_position_updated_at silently fell
back to now() on every read and the seek bar never extrapolated.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>