Alice 0.23.2 fixes four reported desktop issues: the Windows boot hang, the empty project tree after session switches, computer-use on pure-Wayland sessions, and session-list refresh churn.
Desktop boot (Windows stuck at "Starting Alice" 100%)
- The backend env now sets
PYTHONUNBUFFERED=1so theport=NNNNannouncement is never trapped in the Windows stdout buffer — the #1 cause of the eternal spinner. - A bounded (15s)
serve --helpprobe falls back to the legacydashboard --no-opensubcommand for managed installs that predateserve, instead of dying on argparse exit(2) before ever announcing a port. - New
alice:boot-progressandalice:backend:exitWails events: the renderer gets a real boot bar (spawn 20% -> ready 60%), and when the backend dies it now sees the exit code plus the last 8KB of stderr — an error screen, not an idle loader. The renderer-sideonBackendExit/onBootProgresshandlers were no-op stubs; they are wired now. GetBootProgressRPC + regenerated bindings committed (a fresh clone can reproduce the exe).- Dropped the orphan second
PythonManagerinstance the update service was creating (stale backend PID tracking).
Session switching (project tree empty/stale)
- The warm fast-path now restores
cwd/branchalongside the transcript, so the right sidebar file tree follows the switch immediately. - Cold resumes paint the stored
cwd/git_branchin the loader frame; the livesession.infore-syncs when the resume resolves. - A broadcast
session.infocarrying the runtime id you just switched to is no longer discarded (switch-race hole).
computer-use on pure-Wayland
capture()fails fast with actionable guidance when window enumeration only sees the compositor XWayland anchor (null pid, ~10x10) — previously it returned a blank screenshot and an empty tree while appearing to work.alice computer-use doctornow runs a reallist_windowsprobe after the driver health report and downgrades the verdict tofailedwith workarounds (GDK_BACKEND=x11 / --ozone-platform=x11). On a pure-Wayland host it used to report OK.pid: nullno longer crashes the window deserializer.
Session list churn
refreshSessionscoalesces concurrent callers into one in-flight fetch with a 2s freshness window (boot + reconnect + route effects were triple-firing 4 round-trips each).emptyOutDirpinned in the desktop vite config: stale hashed chunks from previous builds no longer ride intogo:embed.
Validation
go build/go vet/ fullgo testsuite green (the boot E2E test caught — and led to fixes for — a probe timeout and a self-deadlock under the StartGateway lock before shipping).- 15 new tests covering the Wayland guard, capture fail-fast, and doctor probe; python suite 39/39 via
scripts/run_tests.sh. - tsc: zero new errors; vitest 149/150 in touched files (the one failure reproduces on unmodified main).
Full changelog: v0.23.1...v0.23.2