• src/doors/syncretro/syncretro_input.c syncretro_io.c

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Mon Jul 13 01:09:59 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/37fbd195d6d588fb6d1560a4
    Modified Files:
    src/doors/syncretro/syncretro_input.c syncretro_io.c
    Log Message:
    syncretro: one F4 keypress, one tier -- and give the bottom row back

    TWO TIERS PER PRESS. With the kitty protocol negotiated the door asks for
    event types, so F4 arrives TWICE for one keypress: a bare "CSI S" going down and "CSI 1;1:3S" coming up (the ":<n>" sub-parameter is the event -- 1
    press, 2 repeat, 3 release). The cycle fired on both, stepped two tiers, and looked like it was skipping them. Gate it on the press, which is what SyncConquer did when it hit the same thing in the same protocol
    (5ff3d05955). A legacy terminal sends no event sub-parameter at all, and termgfx's decoder reports that as a press -- which it is. The ESC[14~
    spelling had the same hole.

    Verified by feeding the two halves of the keypress separately: the press switches one tier, the release switches nothing, and a whole press-and-
    release moves exactly one.

    THE STATS STRIP VANISHED FOR A SECOND ON EVERY SWITCH, and the tier toast
    that was supposed to announce the new tier often never appeared at all. A
    tier switch forces a repaint, a forced repaint emits ESC[2J, and ESC[2J
    erases the whole page -- the reserved bottom row with it. The strip only
    ever repaints when its TEXT changes, so after the clear it stayed blank
    until the frame counter ticked over: about a second of nothing.

    The sixel path had half a fix for this (it redrew the strip after every
    frame); the text path, added last week, had none of it, and neither path
    ever put the TOAST back. Both now hand the bottom row back through one function: after a frame that cleared the screen, whatever owns that row -- a toast still inside its moment, else the strip -- is redrawn on top of the
    fresh frame.

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