Skip to content

Releases: CaseyCZ/PiTV

Release list

PiTV Alpha

PiTV Alpha Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 19 Sep 12:02

PiTV Alpha

PiTV 1.5.0 · LibreELEC-style TV Shell architecture

  • uložený rollback: poslední 1.4.31 před změnou architektury je zachovaný ve větvi archive/pitv-1.4.31-pre-tv-shell
  • PiTV už není navržené jako Linux desktop/tty autologin s launcherem navrch; novým základem je appliance model inspirovaný LibreELEC
  • přidán pitv.target, který stojí nad multi-user.target; SSH, Tailscale, Homebridge, Docker a ostatní serverové služby tak zůstávají nezávislé na TV rozhraní
  • přidán pitv-shell.service: systemd vlastní celou tty1/Wayland TV session, používá Restart=always a po pádu obnoví TV shell bez rebootu Raspberry Pi
  • shell používá přímo labwc -s /usr/local/bin/pitv-launcher-run; labwc spustí PiTV až po připravení Waylandu a při ukončení primary klienta ukončí i compositor, takže systemd vždy obnovuje celou čistou TV session
  • hlavní Wayland compositor publikuje kanonický marker pitv-wayland-display; Kodi, nativní aplikace, SSH session helper a vnější Waydroid už nikdy nevybírají náhodný první wayland-* socket
  • pouze Cage client uvnitř Android runtime smí používat svůj zděděný nested Wayland socket; tím se odděluje PiTV obrazovka od Android compositoru
  • Android warm runtime vlastní výhradně pitv-android-warm.service; spuštění APK při cold startu službu požádá přes helper a nevytváří vlastní druhý warmer proces
  • jednorázová migrace starých Android balíčků už nikdy nestartuje ani nezastavuje Waydroid; počká na hotový warm runtime, takže nemůže závodit s prvním spuštěním SmartTube
  • odstraněna umělá 2s prodleva před Android prewarmem a redundantní waydroid session stop; po připravení hlavního Waylandu začíná Android warm-up okamžitě
  • starý boot řetězec getty → autologin → .bash_profile → labwc se při instalaci 1.5.0 odstraňuje; tty1 je vyhrazená supervised TV shellu
  • kompatibilní příkaz sudo systemctl restart pitv-launcher zůstává, ale nově restartuje celý pitv-shell.service
  • Android warm runtime je oddělený do pitv-android-warm.service; Home obrazovka není jeho rodič ani na něj při startu nečeká
  • při restartu/recovery shellu systemd Android warm službu znovu obnoví; launcher už nevytváří vlastní background warmer proces
  • ovladač je nově systémová vrstva pod launcherem: pitv-inputd.service čte kernel HDMI‑CEC a vytváří přes Linux uinput jedno virtuální zařízení PiTV TV Remote
  • šipky, OK, krátké Zpět a Play/Pause už PiTV 1.5 nepřeposílá přes wtype ani Android input keyevent; labwc doručí stejný vstup přímo právě fokusované PiTV/Kodi/Stremio/Cage ploše
  • raw + decoded CEC řádky jednoho fyzického stisku jsou deduplikované; jeden krátký stisk znamená jeden krok a držená šipka začne opakovat až po řízené prodlevě
  • CEC Home/menu je globální F13 appliance akce: compositor okamžitě ukáže PiTV a launcher uloží foreground aplikaci jako pozastavenou
  • 3s držení Zpět je globální F14 appliance escape: funguje i když focus vlastní Kodi nebo Android, vrátí PiTV a ukončí foreground aplikaci; krátké Zpět zůstává aplikaci
  • input služba přežívá restart launcheru/compositoru, sama se připojuje po HDMI/CEC změně a publikuje skutečně použitý adaptér v /run/pitv/cec-device; stejné zařízení pak používají i Power/Active Source/Volume CEC příkazy
  • Nastavení HDMI/CEC přímo ukazuje systémový TV input a aktivní /dev/cecN, případně stav čekání na HDMI‑CEC
  • uinput se načítá při bootu a 1.5 installer zachovává uživatelovu volbu HDMI‑CEC Zapnuto/Vypnuto; starý launcherový CECReader byl z 1.5 úplně odstraněn, takže existuje jen jeden CEC input owner
  • CEC výstup je oddělený do statického pitv-cec-control: umí pouze Power/Standby/Active Source/Volume/Mute; historický pitv-cec-monitor s režimy register/monitor se při upgradu maže
  • warm SmartTube/APK start je zkrácený: připravený persistentní Cage klient zapisuje do pitv-waydroid-runtime-ready vlastní živý PID, takže běžné spuštění už nedělá synchronní waydroid status + getprop při každém readiness testu
  • RPi4 Waydroid HW video decode je připravený jako vlastní vendor profil: H.264/AVC používá c2.v4l2.avc.decoder; HEVC/H.265 používá c2.ffmpeg.hevc.decoder přes stateless rpivid/V4L2 Request API. PiTV přidává do Waydroidu chybějící /dev/media* passthrough, build zapisuje přesné upstream revize a instalace vendor image má automatický rollback při selhání kteréhokoli HALu. VP9/AV1 zůstávají software fallbacky.
  • Android TV session watchdog už nesleduje jen PID původního APK: SmartTube může otevřít Android Settings, permission dialog nebo account picker a PiTV zůstane v Android session; návrat do PiTV nastane až při skutečném Android Home/Launcheru, ztrátě warm runtime nebo globálním 3s Back
  • HDMI obraz má jednu systémovou recovery vrstvu: pitv-displayd.service sleduje DRM konektor, EDID a dostupné režimy; po stabilním reconnectu srovná odpovídající wlroots výstup na pozici 0,0, normal transform a scale 1
  • platný aktuální video mód se zachová; preferred mód se použije jen při skutečně znovupřipojeném vypnutém výstupu nebo chybějícím current mode a periodická kontrola geometrie nikdy nebudí vypnutou TV
  • po opravě daemon pošle launcheru globální akci display, takže SDL fullscreen se znovu sváže bez ukončení běžící aplikace; při opakovaném selhání wlroots se restartuje pouze pitv-shell.service, ne Raspberry Pi/server
  • boot s vypnutou TV je podporovaný a první pozdější HDMI připojení projde stejnou recovery cestou; starý paralelní pitv-display-watch/pitv-display.service byl odstraněný
  • labwc používá reuseOutputMode=yes a PiTV/Kodi/Stremio/Cage window rules při mapování nejdřív provedou MoveTo 0,0 a teprve potom maximalizaci; běžný HDMI reconnect tak nemá vyžadovat reboot Raspberry Pi
  • běžná APK cesta už před spuštěním nedělá waydroid app list; nejdřív pošle přímo waydroid app launch <package>, APK instalace se použije až pokud skutečný launch selže
  • po úspěšném launch intentu PiTV čeká jen na skutečně viditelnou Activity cílového package; při pomalém prvním vykreslení zopakuje pouze launch intent a nikdy zbytečně nepřeinstaluje zdravou aplikaci
  • jednorázový úklid starých Android Stremio/Plex už nikdy neblokuje SmartTube/APK; běží jen v klidném okně warm runtime a pokud je Android aplikace pending/foreground, údržba čeká
  • technický kontrakt projektu je v docs/tv-appliance-contract.md; priorita je input/focus → rychlost aplikací → fullscreen/session → playback → Store → vzhled

PiTV 1.4.31 · TV-appliance runtime: rychlé aplikace, focus a globální stav

  • nový výkonový základ PiTV: Android/Waydroid už není spouštěn a vypínán s každou aplikací; supervisor po vykreslení Home asynchronně přednahřeje jeden skrytý persistentní Cage/Waydroid runtime
  • běžná Android TV aplikace používá už připravený runtime, spustí rovnou svůj package a PiTV přepne na Android workspace až po potvrzení skutečně viditelné aktivity; cílem je stejný princip jako Android TV / Google TV / Apple TV — uživatel čeká na aplikaci, ne na mezilehlý operační systém
  • dlouhé Zpět ukončí pouze aktuální Android aplikaci přes waydroid-app-stop; session, Cage a container zůstávají warm pro další rychlé spuštění
  • celý Android runtime se destruktivně čistí jen při restartu/recovery TV session, takže havárie se stále opraví deterministicky bez zásahu do Homebridge/Tailscale/Dockeru
  • ovládání Androidu má jednu trvalou FIFO frontu; D-pad/OK/Back se už neposílají přes samostatný thread pro každý stisk a zachovávají pořadí focus událostí
  • globální activity banner se kreslí úplně nahoře nad Home, Store, Settings, Updates i modal dialogy; instalace, aktualizace a start aplikace tak mají jednu společnou stavovou plochu všude v PiTV
  • během prvního cold startu banner rozlišuje „Startuji Android…“ a „Spouštím aplikaci…“; při warm runtime se přechází rovnou do druhé fáze
  • běžná Android TV aplikace se už nespouští přes viditelné waydroid show-full-ui; backing Android plocha existuje pouze skrytě na Android workspace
  • běžná Android TV aplikace se už nespouští přes viditelné waydroid show-full-ui; Waydroid/Cage se připraví skrytě na Android workspace a spustí rovnou požadovaný package
  • PiTV zůstává během cold startu viditelné s hláškou „Připravuji …“ a na Android přepne až po potvrzení, že WindowManager/ActivityManager skutečně vidí okno cílové aplikace
  • celý Android launcher, boot animace, quick settings a notification shade se při běžném spuštění SmartTube/APK už nemají objevit; plné Android UI zůstává pouze jako výslovná diagnostická volba Android / APK
  • nested Cage se mapuje na Android workspace s follow=no, takže samotné vytvoření Android surface už uživatele nepřepne pryč z PiTV
  • Waydroid wrapper toleruje tři po sobě jdoucí readiness chyby; jeden přechodný timeout už neshodí SmartTube zpět do launcheru
  • přidána samostatná kontrola waydroid-app-visible; samotný existující Android proces už nestačí k označení aplikace jako spuštěné
  • PiTV po HDMI/EDID disconnect/reconnect sleduje skutečnou velikost desktopu, znovu vytvoří SDL fullscreen surface a přepočítá rozměry UI
  • labwc má navíc pravidlo pro okno PiTV *, které launcher maximalizuje a drží na PiTV workspace; tím se opravuje stav s titulkovým pruhem, černým okrajem a obrazem posunutým do části TV po opětovném zapnutí obrazovky
  • opravy 1.4.29–1.4.30 (persistentní CEC reader, OK-only Nastavení a Aktualizovat vše) zůstávají zachované

PiTV 1.4.30 · jednotné Nastavení a jednoduché „Aktualizovat vše“

  • Nastavení je OK-only: ↑/↓ slouží jen k pohybu, OK otevře nabídku/provede akci a Back se vrací; pravá šipka už v Nastavení nespouští skryté funkce
  • vizuální chevrony „›“ byly z Nastavení odstraněny a nahrazeny jasným označením OK
  • Aplikace mají pevné menu: PiTV Store, Zobrazení aplikací, Odinstalovat aplikace a Obnovit seznam
  • Zobrazení aplikací nejdřív otevře seznam aplikací a po výběru druhý seznam Zobrazit na ploše / Skrýt z plochy
  • Odinstalovat aplikace má vlastní seznam bezpečně odinstalovatelných Linux i ...
Read more