ZComms 0.1.11
Three fixes from a day of live use: the panel talks about people instead of channel numbers, EDIT TALENT reaches the whole channel bank, and a hang now writes down what it was.
A destination is a person, not a number
The v0.1.10 feeds form asked you to pick INTO [CH 1..CH 16] — making you translate a slot number back into a name the panel already knew. It now reads HEARD BY, grouped into who is on a channel now (André Doelle | Berlin · ch 1) over spare channels (ch 12 — nobody on it yet, still selectable, because a feed can be latched where nobody is yet). Feed rows lead with the person over a dim source line. Slot numbers stay where they are the honest identifier: the ops log and the verbs.
EDIT TALENT reaches every channel
Assignment was never broken — the panel just never offered most of it. Chips were rendered for the channels in use plus one spare, so with six people auto-assigned to CH 1–6 you got seven chips over a sixteen-channel bank and no way to put anyone on CH 12. All sixteen render now; a channel someone else is on stays clickable, because a channel takes ten.
People on the Zoom web client cannot receive talkback at all (IsSupportTalkback is false), and used to appear as a dead row with a bare NO TALKBACK tag. They now say why, and what to do: on the Zoom web client — ask them to rejoin in the desktop app.
An AppHangB1 that names itself
v0.1.10 hung on the owner's machine and left zero trace, because a run launched from a shell inherited stdout and the log file was never opened at all. Root cause, since proven with a captured stack: when stdout is a pipe nobody drains, the app's own status output fills the 64 KB buffer and the main thread blocks forever inside printf → WriteFile, in the CRT stdout lock — a hang the old watchdog could not even report, because it reported by calling printf. Launching from Explorer or the Start Menu was never affected.
Now: the log is written unconditionally, opened with full sharing so it can be read while the app runs, size-capped and rotated. Console writes sit behind a bounded queue on their own thread that drops rather than blocks. Both the main loop and the UI message pump are watched, and a stall names the thread, the duration and what the main loop was doing — through a path that takes no CRT lock and no pipe. --selftest-hang <ui|main> <seconds> proves it on any machine.
Install
ZComms-Setup-0.1.11.exe — per-user, no UAC. The Zoom SDK runtime ships inside the app. Still unsigned; SmartScreen will warn.
Full changelog: v0.1.10...v0.1.11