TASK-59 becomes a record of five bugs that each presented as something else — the missing #live_talk element, --app-id doing nothing, the GL context claimed before the canvas was sized, posture wired to a function that does not exist, and a feed that dropped its own reader for being slow. Plus the furniture role, input regions, gaze, and what the rig costs next. TASK-60: the cards were zero pixels wide, and the capture-hang theory is retracted — the session had been left locked by a test. DUMP: 3/4/5 closed, 7 retracted with the trap that produced it, 8/9/10 new.
6.4 KiB
Bugs & micro-regressions — 2026-08-06
Collected from the nightly snapshot and the two 2026-08-05 sessions. Each entry is self-contained (what, where, severity, fix direction) so a fresh model can carry it out without re-deriving context.
Runtime / session
-
sessiond is dead on the phone.
systemctl --user status souveraine-sessiond→ inactive (dead), unit disabled, as of the 2026-08-05 nightly check. This is the daemon that decides lock/unlock and answers the shell. First step is to confirm it is not a stale snapshot artifact (the unit may have been disabled deliberately), then restore it. Severity: high if real. -
viewtop r86 installed, r84 is the live process. PID 327005
/usr/bin/viewtop --kms, started 17:45 before the upgrade. Consequences: the shell'ssubscribeis refused (it logs once and falls back to polling), and the float/gamma verbs are unreachable. Fix: session restart; then verifysubscribepushes actually arrive (the shell logs a refusal when it does not). Severity: medium — everything works, at polling speed. -
Avatar renders nothing on hardware (pre-r360). The loopback origin fix is pushed (
3d3eb2c), CI run 1195 green, published assouveraine-0.1.r360. Verify after the update + session restart: double- tap the desktop clock → the rig should actually draw. If it still does not, capture the host's stderr — Face.qml currently drops it. Severity: medium, awaiting hardware verification.
Placement
- A second app splits instead of minting a new zone.
zone_for_new_window,souveraine-viewtop/crates/compositor/src/ wayland.rs:4164: a mapped toplevel claims the active zone unless it is home, so app #2 tiles onto app #1. Desired: when the active zone already holds a window,workspaces.push()a fresh zone and move there. The whole change is inside that one function. Severity: high, user-visible every multi-app session.
Recording
- Unknown whether viewtop serves wlr-screencopy. The ext-* capture
globals are served (wayland.rs:721–727),
copy_output_intoexists (wayland.rs:1332), butzwlr_screencopy_manager_v1was never found in greps. Phone has grim + slurp; wf-recorder missing; ffmpeg has x264/x265/vaapi/v4l2m2m encoders. First step: answer the protocol question (user: "I do have some screencopy protocol"). Then either serve the global or ship a recorder that speaks ext-capture. Severity: medium, this gates the radial-dial record entry.
Resolved 2026-08-07
Items 3, 4 and 5 are closed, and item 7 below turned out to be a false lead.
-
3. The avatar renders nothing — FIXED. Not the loopback origin. The page omitted
#live_talk, which the bundled character layer reads every frame; it threw on the first update after the model and all four textures had loaded. See TASK-59's 2026-08-07 section for the five bugs in that chain. -
4. A second app splits instead of minting a zone — FIXED and verified. Three apps → zones 1/2/3. The fix (
60ff764) had been committed and never pushed, so the phone had never had it. The nullapp_id/titlein theworkspacesreport was real and is also fixed — the report calls them "the join key" and nothing had ever written them — but it was not what broke the cards (see 7). -
5. Does viewtop serve wlr-screencopy — YES.
grimworks. It hangs only behind a lock, which is the capture gate doing its job. -
7. Screencopy hangs / the cards are blocked on it — WRONG, and here is the trap. The compositor was refusing captures with "no client captures the screen behind a lock screen" because the session had been left locked by a test, while
logindreportedLockedHint=no. Checklockedinstatebefore concluding anything from a capture failure. The cards were zero pixels wide; see TASK-60.
New, 2026-08-07
-
The pill strands a pose. A partial slide up leaves the app scaled small and it takes another pull on the pill to get it back.
onCanceledalready exists on the rail and already callsendPull(false)— that is not the hole, and a duplicate handler added there fails the whole QML module ("Property value set multiple times") and takes the shell down. Cause unfound. Casey also wants the partial slide gated on speed and length and then committed, iOS-style, with no backing-off state at all. -
Side panels glitch on the way out. The keyboard half is fixed — the drawer cleared
oskOpenon close andSidebarLeftnever did, so the OSK outlived the only text field it was serving. The visual glitch on leaving is still uncharacterised. -
The terminal cannot keep the keyboard. It disappears while the cursor is in a field and the right panel closes with it. Note a terminal never requests text-input so the OSK must be summoned, and
oskOpenflaps by design because the OSK self-hides whenever input-method focus drops — never gate a persistent surface on it. Being the mirror image of 9 suggests one focus-handoff bug, not two.
Recording — narrowed 2026-08-07 (superseded by "Resolved" above)
-
Screencopy hangs while mission control is open, and that is why the cards never appear. Measured on blueline:
grimreturns a file in under a second normally, and with mission control up it produces no file, no error, and does not exit. The cards areScreencopyViewagainst each toplevel — the same capture path — so they wait on pixels that never come and the surface renders as blur with nothing in it.It is not missing data. The new
overview stateverb answers{"zones":2,"windows":1,"subscribed":true}with a window open, soViewtopControlhas the model and the join key. Item 4's nullapp_id/titlewas real and is fixed, but it was not this.It is specific to mission control, not to a fullscreen layer surface. The app-grid overview captures fine with the same panel covering the screen. The difference is that mission control is the only surface that opens
ScreencopyViewsessions — so the hang correlates with live capture sessions existing, not with what is on top.Next:
capture_window_for/render_captureinwayland.rs, and what happens when several sessions are live at once. A capture that waits on a frame the render loop is not producing would look exactly like this.
Unpacked from the user (pending)
- Your list goes here.