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) <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net