qemu: tee the UI log to the console

A scenario driving the VM from outside can only see the console, and the UI's
own log was going to a file inside the guest -- reachable only after the
process exited. That made a whole class of question unanswerable while the UI
was still running: what the UI thought it was doing at the moment a screenshot
looked wrong.

It paid for itself immediately: a dashboard fullscreen that kept reverting was
a full UI rebuild firing 553 ms after the tap, which the console showed
outright (flare-edge: the applier's first-tick rebuild).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T2D2KtdgwbhbF6Mo64eUrn
This commit is contained in:
Noah
2026-09-03 14:25:24 -06:00
co-authored by Claude Opus 5
parent f245917570
commit 7b395da7de
+5 -1
View File
@@ -106,7 +106,11 @@ if [ -x /usr/bin/warden-ui ] && [ -c /dev/fb0 ]; then
# is one grep away for any scenario driving the VM from outside, and the # is one grep away for any scenario driving the VM from outside, and the
# signal or status that caused it is on the line. # signal or status that caused it is on the line.
( (
/usr/bin/warden-ui > /tmp/warden-ui.log 2>&1 # tee, not a plain redirect: the UI's own log (LV_LOG_USER and friends)
# is the most useful thing there is when a scenario does not do what it
# should, and a scenario driving the VM from outside can only see the
# CONSOLE. The file is kept as well so the exit dump below still works.
/usr/bin/warden-ui 2>&1 | tee /tmp/warden-ui.log
rc=$? rc=$?
echo "init: warden-ui EXITED rc=$rc" echo "init: warden-ui EXITED rc=$rc"
# 128+n is a signal death (139 = SIGSEGV); dump the tail so the # 128+n is a signal death (139 = SIGSEGV); dump the tail so the