Skip to content

Releases: Hybirdss/smartest-tv

v1.1.2

17 Apr 08:48

Choose a tag to compare

v1.1.1

14 Apr 19:20
c512558

Choose a tag to compare

What's Changed

  • fix(lg): broaden webOS 24/25 401 tolerance via connect-path override (fixes #4) by @Hybirdss in #5

New Contributors

Full Changelog: v1.1.0...v1.1.1

v1.1.0

14 Apr 17:32

Choose a tag to compare

Full Changelog: v1.0.3...v1.1.0

v1.0.3 — Android TV: no developer mode needed

13 Apr 10:59

Choose a tag to compare

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

13 Apr 10:54

Choose a tag to compare

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.db renamed 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

10 Apr 21:50

Choose a tag to compare

  • 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

08 Apr 21:03

Choose a tag to compare

✨ 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...v0.10.0

v0.9.0 — Rich-powered UI

08 Apr 20:47

Choose a tag to compare

🎨 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.

stv status stv insights
stv scene list stv multi list

Added

  • Rich-powered UI across every command. New smartest_tv.ui package
    (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
    with STV_THEME=nord.
  • Portfolio screenshots in docs/assets/screenshots/ — 10 SVG + PNG
    pages generated via Rich's SVG export.
  • STV_NO_COLOR=1 env 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
    an N/M succeeded footer.
  • 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.py already has a runtime fallback.
  • Added pytest-asyncio>=0.23.0 to dev deps (was transitively installed
    locally, missing in CI). asyncio_mode = "auto" so @pytest.mark isn't
    required on async tests.

Preserved

  • --format json still 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...v0.9.0

v0.8.0

03 Apr 10:10

Choose a tag to compare

What's New

🎯 Watch Intelligence

  • stv insights — viewing stats, binge detection, peak hours
  • stv screen-time — daily/weekly screen time breakdown
  • stv sub-value netflix --cost 17.99 — is your subscription worth it?

📺 TV as Display

  • stv display message "Dinner!" — text on TV
  • stv display clock — fullscreen clock
  • stv display dashboard "Temp:22°C" — custom dashboard

🔊 Multi-room Audio

  • stv audio play "lo-fi beats" — music everywhere, screens off
  • stv 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.py helpers

📚 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

v0.3.0

02 Apr 20:40

Choose a tag to compare

Content resolution, caching, unified skill