• src/doors/syncdoom/syncdoom.c src/doors/syncduke/syncduke_io.c

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Wednesday, July 01, 2026 23:24:33
    https://gitlab.synchro.net/main/sbbs/-/commit/76dcea9e1900d1f06c00e09b
    Modified Files:
    src/doors/syncdoom/syncdoom.c src/doors/syncduke/syncduke_io.c
    Log Message:
    syncdoom/syncduke: name the frame image-cache slot per-door

    The SyncTERM APC cached-image Store used a shared "d.jxl"/"d.ppm" filename, so both doors reused the same client-side cache slot and it was opaque in SyncTERM's
    on-disk cache. Name it per-door instead: syncduke_frame.jxl and syncdoom_frame.{ppm,jxl} -- self-descriptive and no longer colliding across doors. Still a single reused per-tier slot (re-Stored every frame), so no cache growth.

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Saturday, July 04, 2026 00:42:13
    https://gitlab.synchro.net/main/sbbs/-/commit/3cd36459f8ead141a6ce36fe
    Modified Files:
    src/doors/syncdoom/syncdoom.c src/doors/syncduke/syncduke_io.c
    Log Message:
    syncduke/syncdoom: sixel image centering + full-res sixel option

    Two SyncTERM sixel improvements, tested live:

    Centering (SyncDuke): the sixel image hugged the left edge on SyncTERM while SyncDOOM centered. Cause -- SyncTERM answers the graphics-canvas probe
    (?2;1S) but not the cell-size probe (ESC[16t), so syncduke_term_cell_w()
    stays 0 and termgfx_geom_center() can't turn the centered pixel offset into a text column, falling back to column 1. Give the centering the same 8x16 cell-size fallback the bottom-row reserve already uses (SyncDOOM always has), so the image centers; also drop the stale is-SyncTERM special case in the mouse-steer center (SyncTERM honors the sixel cursor like other terminals).

    Full-res sixel (both doors): the default sixel encodes at half the display
    size and lets SyncTERM nearest-neighbor-double it -- lean on the wire but
    soft. Add a "sixel-full" tier that encodes 1:1 at the display size on
    SyncTERM too (it was gated to non-SyncTERM), for a sharper image at ~4x the bytes. In SyncDOOM the JXL-start F4 cycle now offers both the half- and full-res sixel stops, so "sixel-full" is actually reachable.

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

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