u64deck v1.9.0 — Release Candidate 18.
Pre-releaseu64deck v1.9.0 Release Candidate 18
v1.9.0 · Release Candidate 18 · 0118f1c
RC18 is a tightly scoped correction to the RC17 desktop-exit release. It fixes the two issues confirmed during Windows field testing: the frozen executable console could remain after the dedicated Edge app closed, and the generated executable had no embedded u64deck icon.
Changes
Frozen executable exits completely
- The local Exit u64deck endpoint still returns its successful response before shutdown begins.
- Uvicorn still performs its normal lifespan shutdown and existing resource cleanup first.
- A frozen PyInstaller build now starts a bounded, non-daemon exit watchdog.
- The watchdog waits for an explicit cleanup-complete marker and then retires the frozen process with a zero exit code.
- If graceful cleanup does not finish within the bounded deadline, the frozen process is still terminated with a non-zero exit code rather than leaving a resident console indefinitely.
- This guarantees that a normally launched
u64deck.exeand its associated console disappear after Exit u64deck.
The source version continues to exit naturally after Server.run() returns.
Embedded Windows icon
- The canonical multi-resolution
u64deck.ico(16, 32, 48, 64, 128 and 256 pixel images) is now embedded in the executable. - Updated
u64deck.specfromicon=Nonetoicon="u64deck.ico". - The Windows workflow now inspects the built PE and requires both
RT_ICONandRT_GROUP_ICONresources before publication.
Source launcher correction
start.batno longer ends with an unconditionalpauseafter a successful exit.- A normal source shutdown now returns to an existing terminal or closes a double-clicked launcher window.
- Non-zero exits still display the error code and pause for troubleshooting.
Stronger Windows executable test
The GitHub workflow now launches the executable through the normal dedicated Edge app path rather than using --no-browser. It verifies:
- the local UI becomes available;
- the dedicated Edge profile process is observed;
- the exit endpoint returns successfully;
- the dedicated Edge process closes;
u64deck.exeterminates;- the executable returns exit code 0;
- the frozen console cannot remain attached to a live u64deck process.
Preserved behaviour
RC18 retains RC17's loopback-only exit endpoint, confirmation header, idempotency, response-before-shutdown ordering and local/remote UI handling.
No Finder, discovery, connection routing, Mount & Run, SID, streaming, recording, storage, settings, indexing, disk-swap, keyboard-input or Ultimate machine-control behaviour changed.
Both canonical dual-interface best-effort README warnings remain verbatim in their required positions. The Screenshots section and gallery ordering are unchanged.
Validation
- 255 tests passed from the RC18 source tree.
- 255 tests passed again from the extracted release ZIP.
- Python compilation checks passed.
- JavaScript syntax checks passed for
app.jsandhelp_content.js. - Source-tree and extracted-ZIP startup/exit smoke tests both returned the exit response and terminated with exit code 0.
- The frozen-process watchdog, cleanup-complete marker, icon contract, launcher behaviour and Windows workflow assertions have dedicated regression tests.
- The extracted API reports the expected version, release label and build ID.
- In the tagged CI run, the PE icon-resource check confirmed
RT_ICONandRT_GROUP_ICONare embedded in the builtu64deck.exe, and the Edge-app exit smoke test passed on the Windows runner: the executable started with its dedicated Edge app window, accepted the confirmed local exit, closed the dedicated Edge process, and terminated itself with exit code 0. - The README screenshot gallery gate passed in CI against the repository's
docs/screenshot set; the Screenshots section, filenames and gallery ordering were not changed. - ZIP integrity and path-safety checks passed.
- Archive contains 36 files plus five directory entries: the RC17 manifest plus
u64deck.ico. - No
config.json, SQLite databases, WAL/SHM files, caches, bytecode, Git metadata or personal runtime files are present.
Deferred to v1.9.0 final
The five non-blocking observations recorded at RC17 (IPv4-mapped IPv6 loopback handling, exit-scheduling idempotency hardening, explicitly disabling proxy-header trust, hiding the Exit button by default until local availability is confirmed, and rejected-request coverage in the executable smoke test) remain deferred to the final release. None affects the shipped default configuration.
SHA-256
41dc3cd38a55b8f0a7b0ddce0cb20fd6ce97a83813e05dfbe79cbb273faab514