OpenSplit v26.8.15 — GLM 5.3 assist Fix Summary
Commit: 0dfc8fc on main · Verified with cargo check, cargo test (3/3), and svelte-check (0 errors)
1. Terminal freeze (main bug)
Heavy commands (pane_foreground_info, resolve_split_spec, detect_tools,
get_startup_action, get_shell_spec, spawn_pane) now run on Tauri's async
runtime instead of the UI thread.
- Sync Tauri commands execute on the main thread, so the full process-table
sweep done on every right-click was blocking keystrokes, output delivery,
and context-menu actions — the exact "dead terminal, nothing responds" bug. - Slimmed the sysinfo refresh to just
exe/cmd/cwd(previously collected
unused per-process envs and disk counters). - Config read lock is now dropped before the process sweep, so
set_*
commands no longer block behind it.
2. Close Pane race
performClose now marks the pane as intentionally closed before killing it,
so the pane:exit handler can't respawn a fresh shell over the leaf you just
asked to close.
3. Output event flooding
PTY output now flows through a coalescing emitter thread (max one pane:data
event per 4 ms / 256 KB batch), so heavy output can no longer flood the
UI-thread event queue and degrade the app over long sessions.
4. UTF-8 corruption
Partial multi-byte characters split across read boundaries are now held back
and completed by the next chunk, instead of turning into � (this affected
box-drawing chars common in TUI tools). Covered by 3 unit tests.