• src/syncterm/scripts/auto/connected/keys_default.wren status_default.w

    From Deuc¨@VERT to Git commit to main/sbbs/master on Sun May 3 21:13:41 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/b6aa4e17a78368397616d347
    Modified Files:
    src/syncterm/scripts/auto/connected/keys_default.wren status_default.wren src/syncterm/scripts/syncterm.wren src/syncterm/wren_bind.c wren_bind_conn.c wren_bind_conn.h wren_host.c
    Log Message:
    SyncTERM: fix and polish the Wren-driven status bar

    A handful of bugs in the initial cut, plus a layout rework in
    response to first impressions.

    Bugs:
    * wren_status_render gated surface-class capture on
    `wrenGetSlotType != WREN_TYPE_UNKNOWN`, which is exactly the case
    the API returns for class objects -- so the handle was never
    cached and every render fell through to the C blank fallback,
    leaving an empty blue row.
    * BBS.connTypeName / BBS.elapsedSeconds were registered in
    BINDINGS but had no `foreign static` declaration on the BBS
    class, so the script crashed at first read.
    * keys_default.wren had `;` separators inside its single-line
    Hook.onKey block bodies (Wren rejects ';' as a token), and used
    `return` inside single-line `{ ... }` blocks (which are
    expression-mode and reject statements).
    * status_default.wren had the same `;` issue inside writeSep_.
    * throttle_step_'s ALT-Up path guarded `if (next != 0)`, dropping
    the rates[] sentinel that doubles as "unthrottled". ALT-Up from
    115200 now correctly cycles back to 0 (matching ALT-Down from 0
    wrapping to 115200).

    Layout rework:
    * Right-anchored: name field expands so "ALT-Z menu" ends one cell
    from the right edge, instead of trailing 4 cells of dead space.
    * "Connected: " label restored. Dropped only when keeping it
    would force the BBS name to truncate -- the label is decoration,
    the name is information.
    * Speed back inline with the name, matching the C original's flag
    order (SAFE, Logging, (speed), DrWy, OOTerm*, INV). The
    per-slot "115200 bps" rendering was an unnecessary divergence.
    * Indicator block (log , SFTP , SFTP , mouse M) painted at the
    right end of the name area instead of fixed columns 27..30, so
    it doesn't waste 3-4 cells of name space when the name area is
    wider than the original avail=30 cap. Mouse 'M' sits one cell
    in from the name-area edge so a padding space buffers it from
    the " ³ Conn " separator.
    * REPL log indicator wired up via new Host.logUnread /
    Host.logUnreadError bindings (the original C wires were
    unbound; the indicator was permanently blank).

    The Status callable now also reads the live CTerm.throttleSpeed
    that Alt-Up/Down adjusts, instead of the static BBS.bpsRate.

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