Triage date: 2026-07-15
Repo: PyDevices/.github
Source analysis: platform-feasibility-report.md
This is the cloud-agent workstream doc. Decisions live in the feasibility report; this file lists what to implement and what not to reopen.
Follow AGENTS.md for the ~/gh/pydevices workspace layout when running as a Cloud Agent.
- Pick one pursue workstream below (tracks may run in parallel across agents/sessions).
- Read the matching section in
platform-feasibility-report.md. - Implement with the why-comment rule on every non-obvious edit for that track.
- Do not start work listed under Out of scope or Not a platform track.
Any non-obvious edit that exists because of Linux KMS, Android TV / Fire OS, or webOS / Tizen (web) must include a short inline comment (or an adjacent doc note for config-only changes) stating why that change is there — so it is not mistaken for generic cleanup.
| Bucket | Targets |
|---|---|
| Pursue now (parallel OK) | Linux KMS; Android TV / Fire OS; webOS / Tizen (PyScript only) |
| Docs only | PWA (installable PyScript — where they run); iOS / iPadOS via PyScript |
| Not a platform track | FreeRTOS board expansion; Zephyr |
| Ruled out | Native iOS; watchOS; Switch / Vita / PS; native webOS / Tizen |
Goal: Validated pydevices-examples on embedded Linux without X11/Wayland, reusing SDLDisplay first.
Phase 0 (do first):
- Document and validate
SDL_VIDEODRIVER=kmsdrmwith existingSDLDisplay+usdl2on a Pi/SBC (or equivalent) without a desktop. - Validate the canonical
pydevices/board_configs/desktop/config under KMS; add a specialized host config there only if environment selection is insufficient. - Platform doc notes in
pydevices-examples/docs/platforms/(desktop/Linux path vs KMS).
Later (only if SDL KMS is insufficient):
- Native fbdev mmap or DRM/GBM path (
displayifor new module) behind a DisplayDriver-compatible wrapper — do not start this until Phase 0 is tried.
Touchpoints: pydevices (displaydev, desktop config, pydevices-desktop) and pydevices-examples (examples/docs).
Why-comments: required on every KMS-enabling edit.
Goal: Same CPython + SDL Android stack as phone, with TV launcher + remote/D-pad input. Phone Android is treated as already stable — do not block on phone work.
First steps:
- TV / leanback launcher intent category in
pydevices-android-templatepackaging (buildozer.spec/ p4a as needed). - Android TV host settings (fullscreen assumptions, 10-foot scale hints); extend the canonical desktop config only if needed.
- Map D-pad / enter / back through the neutral PyDevices input contracts in
pydevices(why-comment each mapping). - Document in
pydevices-examples/docs/platforms/android.md(§ Android TV / Fire OS). - Optional: Android TV emulator smoke under
pydevices-android-template/scripts/.
Touchpoints: pydevices-android-template, pydevices (portable input/config packages), and pydevices-examples (examples/docs); TestPyPI pydevices-desktop changes only if TV input/SDL gaps appear.
Why-comments: required on every new edit for this track.
Goal: TV web story via existing PSDisplay — no native SDLDisplay / platform C++ shells.
First steps:
- PyScript TV-oriented examples under
pydevices-examples/web/pyscript/(e.g.tv/): large fonts, remote-friendly layout. - JS key / remote bridge notes for webOS / Tizen key codes (why-comment bridge hooks).
- Short platform doc note: webOS/Tizen = browser/PyScript only.
Touchpoints: pydevices-examples (web/pyscript, examples/docs) and pydevices only if portable key normalization must change.
Why-comments: required on every new edit for this track.
Goal: Treat installable / offline PyScript apps as a first-class platform story, documented as clearly as MCU / desktop / Android APK — especially where a pydevices-examples PWA actually runs.
Today the how-to lives in pydevices-examples/docs/guides/pyscript-pwa.md (manifest, service worker, COI, GitHub Pages). What is still thin: elevating PWAs in platform docs and spelling out the host matrix (browser × OS × install UX).
First steps:
- Expand
pydevices-examples/docs/platforms/so the portability matrix and PyScript notes call out installable PWA alongside in-browser demos (link the existing guide; do not bury it as a gallery-only tip). - Document a clear where PWAs run matrix, including at least:
- Desktop Chromium (Chrome / Edge) — install prompt / standalone window
- Android Chrome — install / home-screen; contrast with native
pydevices-android-templateAPK - iOS / iPadOS Safari — Share → Add to Home Screen (no
beforeinstallprompt) - Chromebook and other desktop Linux browsers as relevant
- Relation to TV web path (webOS / Tizen Chromium browsers — browser or installable web app, not native SDL)
- Clarify standalone vs tab behavior, offline/cache expectations, and install UX differences per host.
- Keep implementation detail in the PWA how-to; platform docs own “where it runs.”
Touchpoints: pydevices-examples (docs/platforms/, docs/guides/pyscript-pwa.md, optionally platforms/index.md matrix wording). Cross-link from Android TV / webOS / iOS docs-only notes so PWA is not reinvented per track.
Not in this workstream: new PWA runtime features or native shells — documentation and positioning only.
- Add a short note in
pydevices-examplesplatform docs: Apple mobile = Mobile Safari +PSDisplay/ PyScript gallery (browser and/or home-screen PWA — see PWA workstream above). - No dedicated iPhone/iPad smoke campaign as part of this roadmap.
- Does not reopen native iOS packaging.
These are ordinary product / board enablement — not streams to open from this roadmap:
| Item | Guidance |
|---|---|
| FreeRTOS / new MCU boards | Continue via displayif + board_configs when a board is needed. |
| Zephyr | Only if a specific board need appears later; no standing workstream. |
Do not start from this roadmap:
- Native iOS / iPadOS app (
pydevices-ios, BeeWare/Kivy packaging, macOS CI for App Store) - watchOS
- Nintendo Switch, PlayStation Vita, PS4/PS5 (org roadmap)
- Native webOS / Tizen Python or
SDLDisplayon those OS shells (web path only — see pursue #3)
| Doc | Role |
|---|---|
platform-feasibility-report.md |
Analysis + org decisions |
notes.md |
Brad's personal todo (not this roadmap) |
AGENTS.md |
Cloud workspace layout |
pydevices-examples platform docs |
User-facing install/portability matrix |