• src/doors/syncrpg/door/he

    From Rob Swindell (on Windows@VERT to Git commit to main/sbbs/m on Thursday, July 23, 2026 02:11:00
    https://gitlab.synchro.net/main/sbbs/-/commit/84f78b99fc596f30ecf1d868
    Added Files:
    src/doors/syncrpg/door/help_term.cpp help_term.h syncrpg_version.h Modified Files:
    src/doors/syncrpg/CMakeLists.txt PROVENANCE.md src/doors/syncrpg/door/input_term.cpp syncrpg.cpp ui_term.cpp src/doors/syncrpg/easyrpg/src/scene_logo.cpp
    Log Message:
    syncrpg: show the door's version, and add a help page

    Nothing in SyncRPG identified the door, or which build of it a caller
    was running, and nothing told them the controls -- Yume Nikki has no
    menu of its own that could host either.

    Wire up synchronet_gitinfo() (syncrpg had none, unlike the four sibling
    termgfx doors) and add syncrpg_version_line(): version, short git hash
    and build date -- the stamp SyncDOOM's m_menu.c, SyncDuke's menues.c, SyncRetro's main.c and syncmoo1's sm_door_version_line() already paint.

    It surfaces in two places:

    * The EasyRPG startup splash, in the right-hand slot of the single
    text row it draws (scene_logo.cpp -- this door's FIRST vendored
    source edit, recorded in PROVENANCE.md's new "Local patches"
    section). EasyRPG's own version keeps the left slot; easyrpg.org
    yields the right one but is still shown in the engine's
    Settings > About, so no attribution is lost. The two share that row
    because there is no second one to be had: it already runs to y=231
    of a 240px screen. Single-spaced, unlike the siblings' double, to
    fit the 48 characters the row holds.

    * A door-drawn help page, since the splash flashes past. Opened with
    F1 or the termgfx GMM hotkey (Ctrl+<letter>, syncrpg.ini "[input]
    menu_key", default Ctrl-G -- same key and spellings as syncscumm,
    so a sysop learns one convention); any key closes it. Composited
    onto the engine's display surface in the game's own font from
    UpdateDisplay(), which makes the engine's own per-frame repaint of
    main_surface the restore path -- no ANSI overlay, no suppressed
    presents, no new termgfx entry points, and nothing fighting the
    present path's whole-frame de-dupe to get the screen back.

    EasyRPG's own about page was tried first and rejected: F1 opens
    Scene_Settings, which also carries video/audio/input settings, key
    rebinding, and a config write to a SYSTEM-WIDE profile directory that
    escapes the door's per-user sandbox. F1 stays unforwarded to the
    engine, and input_term.cpp records why so it is not re-litigated.

    Both triggers are explicit rather than "any unmapped key": the door's
    unmapped bucket is not all keypresses (unrecognized CSI sequences,
    terminal replies, stray bytes), and Ctrl+<letter> is indistinguishable
    from the bare letter at that layer, so Ctrl-A would be the WASD A.

    The help page lists Insert ahead of Escape for Cancel -- Escape works
    now, but Insert survives every terminal and keyboard-protocol
    combination the door supports -- and omits a bare 'q', which quits on
    the legacy byte path but reaches the game as a letter under kitty and
    evdev. That inconsistency is noted in help_term.cpp and is worth
    settling in termgfx itself.

    Verified live on SyncTERM against the Win32/MSVC build; not yet
    compiled under GCC/Clang.

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

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Friday, August 07, 2026 01:29:00
    https://gitlab.synchro.net/main/sbbs/-/commit/8bc038160c4f31ae69d9053e
    Modified Files:
    src/doors/syncrpg/door/help_term.cpp src/doors/syncscumm/door/help_term.cpp src/doors/termgfx/termgfx_termio.c src/doors/termgfx/test/test_termgfx_termio.c test_termgfx_termio_input.c
    Log Message:
    termgfx: reserve Ctrl-Q, not a bare 'q', on the legacy key path

    The raw-byte path took 'q' and Ctrl-C as its quit keys and never Ctrl-Q, so
    on a terminal that negotiates neither kitty CSI-u nor SyncTERM's evdev
    reports -- SyncTERM 1.9 and older -- Ctrl-Q arrived as an ordinary byte and
    did nothing, while an unmodified 'q' quit the door instead of reaching the game.

    The other two key paths already do the opposite, and deliberately: only the CTRL form quits, so a bare 'q' can be typed into a ScummVM save name. Both doors' help screens advertise Ctrl-Q, and both carried a comment explaining that a bare 'q' would not be advertised because it quits on some clients and types on others. The raw-byte path was the one that disagreed.

    0x11 is XON, which is not used for flow control on these connections.

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

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