• src/doors/syncconquer/door/door_io.c src/doors/termgfx/term.c term.h

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Wed Jul 8 02:41:47 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/b454a7de6ceaefa915be41a3
    Modified Files:
    src/doors/syncconquer/door/door_io.c src/doors/termgfx/term.c term.h Log Message:
    syncalert: hide the SyncTERM status line for a true 640x400 canvas

    SyncTERM defaults to an 80x24 / 640x384 drawing area (its status line takes
    the 25th row), so a 640x400 game fractionally downscales 0.96x and RA's single-pixel vertical bars drop -- text and gauges look degraded; it's
    crisp only at a real 640x400.

    Hide the status line at entry with DECSSDT (CSI 0 $ ~ = "no status
    display"), emitted BEFORE the canvas probe so the probe reports the
    reclaimed 640x400 and every image tier then renders 1:1. The client's
    current setting is queried first with DECRQSS (DCS $ q $ ~ ST); door_io_
    pump() captures the reply (a raw-byte scan, since the DCS reply is
    otherwise swallowed) and door_term_restore() puts it back on exit -- or the usual "indicator" default if the terminal doesn't answer the query.
    Terminals with no status line / no DECSSDT ignore all of it.

    Added to termgfx as a reusable feature (term.c/term.h): the termgfx_term_status_off string, termgfx_term_status_set() restore builder,
    and termgfx_term_parse_status() reply parser -- so SyncDuke/SyncDOOM can reclaim the row the same way.

    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

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