| Item |
Value |
| Date |
2026-09-24 |
| Environment |
WSL 2 Debian 13 (trixie) x86_64; kernel 6.18.33.2-WSL2; 869 GiB free; WSLg available, WAYLAND_DISPLAY=wayland-0 |
| Tools |
Node v24.21.0 official tarball installed in user directory, matching Windows; preinstalled rustup Rust 1.98.1 vs Windows 1.98.0; npm 11.19.0 vs Windows 12.0.2, difference recorded |
| Code revision |
Copy of Windows working tree at ~/llm-usage-m0/; tar excludes node_modules/dist/target/gen; 576 KiB |
| Design reference |
platform-ci.md, local WSL execution sequence |
Commands and results
| # |
Command (WSL ~/llm-usage-m0) |
Exit |
Time/result |
| 1 |
Environment discovery: uname/os-release/df/WSLg |
0 |
Above |
| 2 |
Install Node tarball at ~/.local/node-v24.21.0 |
0 |
19 s |
| 3 |
apt download 674 Tauri dependency packages; dpkg-deb -x into ~/.local/m0-sysroot, 2.2 GiB |
0 |
183 s; sudo password locked; no root used, user-space sysroot instead |
| 4 |
npm ci (desktop/) |
0 |
52 packages, 3 s |
| 5 |
npm run check |
0 |
svelte-check: 0 errors/warnings |
| 6 |
npm run build |
0 |
vite 8.3.0; JS 517.92 KiB |
| 7 |
cargo generate-lockfile |
0 |
Cargo.lock SHA-256 matches Windows |
| 8 |
cargo build –release |
0 |
93 s; stripped ELF 4,622,184 bytes |
| 9 |
npx tauri build without bundle arguments |
0 |
39 s; binary only, no package: nsis-only configuration did not apply to Linux; fixed below |
| 10 |
npx tauri build –bundles deb,appimage |
1 |
deb succeeded; AppImage failed as described below |
| 11 |
Manual AppImage linuxdeploy with GTK plugin removed |
0 |
extract-and-run survived 8 s |
Sysroot versions: webkit2gtk-4.1 2.52.6, gtk+-3.0 3.24.49, libsoup-3.0 3.6.5,
ayatana-appindicator3 0.5.94, librsvg 2.60.0 and glib 2.84.4.
Outputs (SHA-256 in build/m0-wsl-linux/REPORT.md)
| Output |
Size |
Notes |
| llm-usage-m0 ELF |
4,622,184 bytes |
Release executable |
| llm-usage-m0_0.1.0_amd64.deb |
2,105,848 bytes |
Depends structure verified; not installed without root |
| llm-usage-m0-x86_64.AppImage |
102,189,560 bytes |
Experimental: GTK runtime hook removed; embedded libraries patched with local paths |
| Windows comparison |
EXE 4,244,480 bytes; NSIS 1,751,286 bytes |
Windows baseline |
WSLg smoke checks
The sysroot WebKit helper contained a system /usr/lib/… path absent on this machine.
An equal-length rodata path replacement used /tmp/wkgtk41 symlinks, with originals backed
up as .m0-orig. Three checks survived 12/53/90 s: visible window, Rust IPC returned
sqlite 3.53.2 · rows=2, and ECharts rendered. Screenshot: build/m0-wsl-linux/smoke-wslg.png.
This was a local experiment without root and does not establish clean-machine behavior.
Failures and unexecuted checks
| Item |
Status |
Cause/next step |
| Single-command AppImage packaging |
Failure causes identified |
trixie removed libfuse2, causing runtime dlopen failure; after bypassing extraction, GTK plugin assumed system GTK/GI. Recheck clean paths with root; not counted as passing |
| deb installation |
Not tested |
No root |
| Cross-platform outputs from plain npx tauri build |
Fixed |
tauri.conf.json targets now [nsis,deb,appimage,app]; CI explicitly chooses –bundles by OS. Windows NSIS rebuild passed, 1,751,735 bytes, exit 0 |
| Native Linux desktop acceptance |
Not tested |
Existing requirements distinguish WSL/WSLg from native acceptance |
Validation files
Ignored build/m0-wsl-linux/ contains REPORT.md, smoke-wslg.png and 21 execution scripts.
WSL retains ~/llm-usage-m0/, ~/.local/m0-sysroot, ~/.local/node-v24.21.0 and ~/.cache/tauri/
for review. wsl –shutdown was not run; all task processes stopped.