Releases: Hybirdss/smartest-tv
v1.1.2
Full Changelog: v1.1.1...v1.1.2
v1.1.1
v1.1.0
Full Changelog: v1.0.3...v1.1.0
v1.0.3 — Android TV: no developer mode needed
Android TV / Google TV / Fire TV: setup now takes 10 seconds, not 5 minutes.
Before: Settings → About → tap Build number 7 times → Developer Options → enable ADB debugging → accept RSA fingerprint dialog.
Now: stv shows a prompt, TV displays a 6-digit PIN, you type it in. That's it.
What changed:
- Migrated Android driver from adb-shell → androidtvremote2 (Home Assistant's library, uses Android TV Remote Protocol v2 — the same one the Google TV mobile app uses)
- No developer mode, no ADB, no Build number taps
- Deep links route through the Remote Service natively
- Stores client cert+key in
~/.config/smartest-tv/android-cert/
Upgrade:
pip install -U stv
stv setup
If you had stv working with the old ADB method, re-run stv setup — you'll see the 6-digit PIN pairing flow once.
v1.0.2 — LG webOS 24/25 support
Fixes LG TV 2024+ pairing on webOS 24/25 (#4)
Migrated the LG driver from bscpylgtv → aiowebostv (Home Assistant's official LG library). bscpylgtv stopped working with LG's new permission model in webOS 24; aiowebostv keeps up because HA uses it in production.
- Drop-in replacement — no API changes for users
- Auto-migrates existing sessions: legacy
lg_key.dbrenamed to.bscpylgtv.bak, TV prompts for re-pairing once - Tested on webOS 10.2.2 (50UR8250KNA): pair + status + play all work
Upgrade:
pip install -U stv
After upgrading, the first stv command will show a pairing prompt on your TV — press OK and you're done.
v1.0.1 — Lazy Verify cache + HACS validation
- Lazy Verify cache architecture: entries verified via JustWatch on first read
- YouTube/Spotify: local cache only (not contributed to community cache)
- HACS: hassfest + HACS Action CI passing
- Manifest keys sorted for HACS compatibility
- Skill v1.0.0: 30+ platform support, auto-detect, cache troubleshooting
- .gitignore: protect launch files from accidental commits
v0.10.0 — Zero-friction onboarding + natural language
✨ Just type `stv`
The home dashboard now does the right thing automatically:
- First run → welcome panel pointing to `stv setup`
- Connected → Now Playing card + 3 contextual suggestions
- Offline → troubleshooting hints (`stv on`, `stv doctor`)
- NL fallback → understands what you typed
🗣️ Natural language
Unknown commands are parsed as English first, before giving up:
```bash
stv play dark on netflix # → stv play netflix "dark"
stv youtube lofi beats # → stv play youtube "lofi beats"
stv "what's on netflix" # → stv whats-on netflix
stv next # → continue last Netflix show
stv stats # → stv insights
stv "the bear" # → stv search netflix "the bear"
```
Single ambiguous words show a friendly hint instead of an error.
🎯 Context-aware suggestions
The home dashboard recommends next actions from your watch history:
- Recent Netflix S/E? → `stv next` with the actual show name and next episode
- Mostly watch YouTube? → `stv whats-on youtube`
- TV idle on home screen? → `stv whats-on` first
🩺 Friendly install errors
Driver `ImportError` now suggests both pipx and pip:
```
LG driver requires bscpylgtv.
pipx inject stv bscpylgtv (recommended)
pip install 'stv[lg]' (alternative)
```
📊 Tests
- 252 passed (212 + 40 new)
- New: `tests/test_nl.py` (33), `tests/test_suggest.py` (7)
Upgrade
```bash
pipx upgrade stv
or
pip install --upgrade stv
```
Full Changelog
v0.9.0 — Rich-powered UI
🎨 Every command looks like a product now
Every CLI output is now rendered with Rich — Catppuccin Mocha theme,
semantic colors, volume bars, app icons, tables, and health-check trees.
56 commands upgraded. --format json still works unchanged for scripts.
![]() |
![]() |
![]() |
![]() |
Added
- Rich-powered UI across every command. New
smartest_tv.uipackage
(4 files, 24 render functions) with theme system, semantic icons, and
50+ app-ID → human-name mapping (com.frograms.watchaplay.webos→
🎞 Watcha). - Three built-in themes:
mocha(default),nord,gruvbox. Switch
withSTV_THEME=nord. - Portfolio screenshots in
docs/assets/screenshots/— 10 SVG + PNG
pages generated via Rich's SVG export. STV_NO_COLOR=1env var to force monochrome output for CI/tests.
Changed
stv status→ Now Playing panel (volume bar, app icon, power state).stv multi list→ TV inventory table with default-TV star.stv scene list→ scene grid with step-by-step action icons.stv doctor→ hierarchical tree with ok/warn/fail colored nodes.stv whats-on→ Netflix Top 10 + YouTube Trending tables.stv insights→ weekly report with platform bar chart, top shows, peak
hour, binge sessions, watch streak.stv --all <cmd>broadcast results now render as a unified panel with
anN/M succeededfooter.- Error messages are bordered panels with optional hints.
Fixed
- Chronic CI failure (5 consecutive runs) caused by
force-include
on the gitignored_engine/package. CI now scaffolds an empty stub
before install;resolve.pyalready has a runtime fallback. - Added
pytest-asyncio>=0.23.0to dev deps (was transitively installed
locally, missing in CI).asyncio_mode = "auto"so@pytest.markisn't
required on async tests.
Preserved
--format jsonstill outputs plain JSON with zero Rich markup —
pipelines and scripts continue to work unchanged.- 212/212 tests pass locally (real engine). 180/180 in CI (with
stub engine, 2 engine-level tests cleanly skipped).
Dependencies
rich>=13.7.0(new)pytest-asyncio>=0.23.0(dev)
Full Changelog
v0.8.0
What's New
🎯 Watch Intelligence
stv insights— viewing stats, binge detection, peak hoursstv screen-time— daily/weekly screen time breakdownstv sub-value netflix --cost 17.99— is your subscription worth it?
📺 TV as Display
stv display message "Dinner!"— text on TVstv display clock— fullscreen clockstv display dashboard "Temp:22°C"— custom dashboard
🔊 Multi-room Audio
stv audio play "lo-fi beats"— music everywhere, screens offstv audio volume kitchen 30— per-room volume- Free Sonos alternative using your existing TVs
🔒 IP Protection
- Sensitive resolution logic moved to
_engine/(included in PyPI, hidden on GitHub) - Resolution API with Polar.sh license key support
🛡️ Security
- API auth with Bearer token + HMAC
- Subprocess calls replaced with structured
http.pyhelpers
📚 Documentation
- Complete README rewrite as product landing page
- 10 feature combo recipes
- 7 language translations (ko, zh, ja, es, de, pt-br, fr)
- Glama MCP registry integration
Full Stats
- 21 MCP tools — optimized for AI agents
- 211 tests — no TV required
- MIT License
- Supports LG, Samsung, Android TV, Roku



