Repository navigation
Releases: CaseyCZ/PiTV
Releases · CaseyCZ/PiTV
Release list
PiTV Alpha
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í nadmulti-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=alwaysa 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 → labwcse při instalaci 1.5.0 odstraňuje; tty1 je vyhrazená supervised TV shellu - kompatibilní příkaz
sudo systemctl restart pitv-launcherzů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 Linuxuinputjedno 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
wtypeani Androidinput 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 uinputse načítá při bootu a 1.5 installer zachovává uživatelovu volbu HDMI‑CEC Zapnuto/Vypnuto; starý launcherovýCECReaderbyl 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-monitors 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-readyvlastní živý PID, takže běžné spuštění už nedělá synchronníwaydroid status + getproppř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.decoderpřes statelessrpivid/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.servicesleduje DRM konektor, EDID a dostupné režimy; po stabilním reconnectu srovná odpovídající wlroots výstup na pozici0,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 pouzepitv-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.servicebyl odstraněný - labwc používá
reuseOutputMode=yesa PiTV/Kodi/Stremio/Cage window rules při mapování nejdřív provedouMoveTo 0,0a 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římowaydroid 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 ...