Subj : src/syncterm/Wren.adoc src/syncterm/scripts/auto/connected/keys_defaul To : Git commit to main/sbbs/master From : Deuc¨ Date : Mon May 04 2026 13:07:23 https://gitlab.synchro.net/main/sbbs/-/commit/9480df8001d2548b3d9bbf0b Modified Files: src/syncterm/Wren.adoc src/syncterm/scripts/auto/connected/keys_default.wren src/syncterm/scripts/syncterm.wren ui_popup.wren src/syncterm/syncterm.c term.c wren_bind.c wren_bind_conn.c wren_bind_conn.h wren_host.c wren_host.h wren_host_internal.h Log Message: SyncTERM: move disconnect cluster (Alt-X / Alt-H / Ctrl-Q / [X]) to Wren The four hangup-and-quit keys are now driven from keys_default.wren via a new DisconnectFlow helper that raises a Confirm popup ("Disconnect... Are you sure?") and, on yes, calls Conn.endSession(exitApp). doterm() picks the request up at the top of its next iteration, runs the (UI-free) C cleanup, and either returns to the bbslist (Alt-H / Ctrl-Q) or exits syncterm (Alt-X / window-close). Ctrl-Q is gated to text-mode terminals (curses / ANSI) at module- load time via the new Host.textTerminal predicate; graphical backends keep Ctrl-Q as a normal control byte. C-side check_hangup is now pure cleanup Ä the confirm popup and screen save/restore moved to Wren, the only caller was doterm, and the syncmenu's SM_DISCONNECT / SM_EXIT cases are now deduped onto the same primitive. check_exit keeps its UIFC "Are you sure you want to exit?" popup because bbslist + menu.c ESC handlers reach it from outside the disconnect-cluster path where Wren has already asked. Wren bindings: Conn.endSession(exitApp), Host.textTerminal, Key.ctrlA..Key.ctrlZ (full set; not just the two I happened to need), Popup.onDismiss=(fn) so a fresh App can drive a standalone Confirm without an enclosing run loop. Pending-disconnect drain runs at the top of the doterm outer loop after wren_result_drain Ä the parked DisconnectFlow fiber resumes during the result drain and calls Conn.endSession from there, not from a wren_host_dispatch_key frame, so a single post-drain check is what makes the hangup land in the same iteration as the user's Yes click. Co-Authored-By: Claude Opus 4.7 (1M context) --- þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net .