Split kiosk fallback canvas from future top-level OSD overlay #8

Closed
opened 2026-10-01 14:36:19 +02:00 by hermes · 4 comments
Collaborator

Why

The current kiosk window intentionally has EWMH below so fpv-video is visually dominant. That is correct for the no-WFB fallback, but a single below window cannot later render flight OSD over a separate fpv-video window.

Required architecture

Create two visual layers per Viture target:

fallback/menu canvas  → fullscreen, below video
flight OSD overlay    → transparent/input-transparent, above video

When there is no decoded stream, fallback/menu is visible. When video is present, keep video visually dominant over the fallback but allow only the dedicated transparent OSD layer above it.

Constraints

  • Do not move WFB/decode into the UI process merely to solve z-order.
  • UI telemetry may be delayed; pilot video may not be blocked, restarted, or buffered by the overlay.
  • Keep the later MIPI/touch target independent with its own layout/template.
## Why The current kiosk window intentionally has EWMH `below` so `fpv-video` is visually dominant. That is correct for the no-WFB fallback, but a single below window cannot later render flight OSD over a separate `fpv-video` window. ## Required architecture Create two visual layers per Viture target: ```text fallback/menu canvas → fullscreen, below video flight OSD overlay → transparent/input-transparent, above video ``` When there is no decoded stream, fallback/menu is visible. When video is present, keep video visually dominant over the fallback but allow only the dedicated transparent OSD layer above it. ## Constraints - Do not move WFB/decode into the UI process merely to solve z-order. - UI telemetry may be delayed; pilot video may not be blocked, restarted, or buffered by the overlay. - Keep the later MIPI/touch target independent with its own layout/template.
Author
Collaborator

Priority / dependency

This is the next task after #2. It depends on the completed video-presence lifecycle from #2, and must be completed before #3 begins rendering flight OSD.

Order: #2 → #8 → #3.

## Priority / dependency This is the next task after #2. It depends on the completed video-presence lifecycle from #2, and must be completed before #3 begins rendering flight OSD. Order: **#2 → #8 → #3**.
grzesiu was assigned by piotr 2026-10-01 15:13:33 +02:00
Collaborator

Gotowe: PR #12

Head: cc916517ef7968292d636c581f2cc2cfd599c495.

Końcowa walidacja po synchronizacji z aktualnym main:

  • go test -count=1 -race ./... — wszystkie 6 pakietów przeszły
  • go vet ./... i gofmt -l .
  • build ARM64 obu binariów
  • git diff --check origin/main
  • skan nowych linii pod kątem sekretów i bezpieczeństwa

Niezależny review potwierdził rozdzielenie warstw, z-order, przezroczystość i przepuszczanie wejścia, bez sprzężenia overlayu z potokiem wideo. Wykryty problem chodzenia po ramkach window managera został naprawiony i objęty testem regresyjnym.

CI dla SHA PR: brak skonfigurowanego uruchomienia — workflow .gitea/workflows/build-arm64.yml reaguje wyłącznie na push do main lub ręczne uruchomienie; Gitea potwierdza 0 statusów i 0 runów dla tego SHA. Test na docelowej sesji Orange Pi/X11 pozostaje walidacją wdrożeniową.

Gotowe: PR https://git.piksar.eu/piotr/groundstation/pulls/12 Head: `cc916517ef7968292d636c581f2cc2cfd599c495`. Końcowa walidacja po synchronizacji z aktualnym `main`: - `go test -count=1 -race ./...` — wszystkie 6 pakietów przeszły - `go vet ./...` i `gofmt -l .` - build ARM64 obu binariów - `git diff --check origin/main` - skan nowych linii pod kątem sekretów i bezpieczeństwa Niezależny review potwierdził rozdzielenie warstw, z-order, przezroczystość i przepuszczanie wejścia, bez sprzężenia overlayu z potokiem wideo. Wykryty problem chodzenia po ramkach window managera został naprawiony i objęty testem regresyjnym. CI dla SHA PR: brak skonfigurowanego uruchomienia — workflow `.gitea/workflows/build-arm64.yml` reaguje wyłącznie na push do `main` lub ręczne uruchomienie; Gitea potwierdza 0 statusów i 0 runów dla tego SHA. Test na docelowej sesji Orange Pi/X11 pozostaje walidacją wdrożeniową.
Owner

fix conflict

Rebasing (1/1)
error: could not apply c911872... feat: split kiosk into fallback canvas and OSD overlay layers (#8)
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
hint: Disable this message with "git config set advice.mergeConflict false"
Could not apply c911872... # feat: split kiosk into fallback canvas and OSD overlay layers (#8)

Auto-merging README.md
CONFLICT (content): Merge conflict in README.md

fix conflict Rebasing (1/1) error: could not apply c911872... feat: split kiosk into fallback canvas and OSD overlay layers (#8) hint: Resolve all conflicts manually, mark them as resolved with hint: "git add/rm <conflicted_files>", then run "git rebase --continue". hint: You can instead skip this commit: run "git rebase --skip". hint: To abort and get back to the state before "git rebase", run "git rebase --abort". hint: Disable this message with "git config set advice.mergeConflict false" Could not apply c911872... # feat: split kiosk into fallback canvas and OSD overlay layers (#8) Auto-merging README.md CONFLICT (content): Merge conflict in README.md
piotr closed this issue 2026-10-02 10:04:26 +02:00
Collaborator

Konflikt rebase w PR #12 naprawiony.

Branch został liniowo przebazowany na main@056cd5440a472c088fc5dddfbae4f1969d07b578; konflikt w README.md rozwiązano z zachowaniem treści z main oraz opisu architektury #8. Zaktualizowany head: 41552b4797e9d5761feefe0aaeb1a3c2411272a0.

Końcowe drzewo jest identyczne z wcześniej w pełni zwalidowanym drzewem cc916517ef7968292d636c581f2cc2cfd599c495; dodatkowo git diff --check origin/main przechodzi, diff obejmuje wyłącznie 9 ścieżek issue, a historia nie zawiera już merge commita. Push wykonano przez --force-with-lease, zdalny SHA został potwierdzony.

PR #12 został scalony przez Piotra. main oraz merge SHA wskazują dokładnie 41552b4797e9d5761feefe0aaeb1a3c2411272a0; issue #8 zostało automatycznie zamknięte. Końcowy workflow Build Ground Station / build (run 186) zakończył się sukcesem dla tego samego SHA.

Konflikt rebase w PR #12 naprawiony. Branch został liniowo przebazowany na `main@056cd5440a472c088fc5dddfbae4f1969d07b578`; konflikt w `README.md` rozwiązano z zachowaniem treści z `main` oraz opisu architektury #8. Zaktualizowany head: `41552b4797e9d5761feefe0aaeb1a3c2411272a0`. Końcowe drzewo jest identyczne z wcześniej w pełni zwalidowanym drzewem `cc916517ef7968292d636c581f2cc2cfd599c495`; dodatkowo `git diff --check origin/main` przechodzi, diff obejmuje wyłącznie 9 ścieżek issue, a historia nie zawiera już merge commita. Push wykonano przez `--force-with-lease`, zdalny SHA został potwierdzony. PR #12 został scalony przez Piotra. `main` oraz merge SHA wskazują dokładnie `41552b4797e9d5761feefe0aaeb1a3c2411272a0`; issue #8 zostało automatycznie zamknięte. Końcowy workflow `Build Ground Station / build` (run 186) zakończył się sukcesem dla tego samego SHA.
Sign in to join this conversation.
No labels
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: piotr/groundstation#8