• src/syncterm/scripts/auto/connected/disconnect_flow.wren music_menu.wr

    From Deuc¨@VERT to Git commit to main/sbbs/master on Mon May 4 13:42:22 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/7afd5a9324163e299419def8
    Added Files:
    src/syncterm/scripts/auto/connected/disconnect_flow.wren music_menu.wren online_menu.wren
    Modified Files:
    src/syncterm/Wren.adoc menu.c menu.h src/syncterm/scripts/auto/connected/keys_default.wren src/syncterm/scripts/syncterm.wren src/syncterm/term.c term.h wren_bind.c wren_bind_conn.c wren_bind_conn.h
    Log Message:
    SyncTERM: move Alt-Z / Ctrl-S online menu to Wren

    The Alt-Z / Ctrl-S syncmenu dispatch in term.c, and the syncmenu()
    function it called, are gone. In their place: online_menu.wren
    registers Hook.onKey(Key.altZ) (always) and Hook.onKey(Key.ctrlS)
    (text-mode only) and drives an App + Pane + ListView modal that
    dispatches the selection back into Wren primitives Ä Conn.scrollback, Conn.upload / download, CaptureMenu.run, MusicMenu.run,
    Host.fontControl, Host.editBBSList, WrenConsole.run, etc. The
    Output Rate and Log Level entries chain into a sub-list before
    closing. Disconnect / Exit selections call Conn.endSession directly
    (no Confirm popup Ä the menu pick is itself the confirmation; the
    hot-key paths still go through DisconnectFlow).

    Selected actions run AFTER the menu's Screen.modalRun returns and
    the screen snapshot has been restored, so viewscroll()'s bottom-row
    capture sees the live terminal contents instead of menu pixels.
    The two sub-flows wrap themselves in their own Screen.modalRun.

    DisconnectFlow lifted out of keys_default.wren into its own module
    so online_menu can reuse it. MusicMenu likewise extracted from the
    inline Alt-M handler.

    New foreigns:
    Conn.upload(), Conn.download()
    CTerm.doorwayMode=, CTerm.ooiiMode (get/set), CTerm.throttleSpeed=
    Host.outputRates / outputRateNames
    Host.logLevel (get/set) / logLevelNames
    Host.fontControl(), Host.editBBSList()
    Host.haveOOII, Host.maxOOIIMode

    Removed (now-dead with syncmenu gone):
    syncmenu() and enum SM_* in menu.c / menu.h
    music_control() and capture_control() in term.c (orphans from the
    Alt-M / Alt-C migrations whose only caller was syncmenu)

    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net