Subj : src/syncterm/scripts/auto/connected/keys_default.wren status_default.w To : Git commit to main/sbbs/master From : Deucе Date : Sun May 03 2026 21:13:41 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 .