• docs/dropfile_ini.md

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Friday, September 25, 2026 22:20:36
    https://gitlab.synchro.net/main/sbbs/-/commit/8afe199205d8d5a0e49866e3
    Added Files:
    docs/dropfile_ini.md
    Log Message:
    docs: add DROPFILE.INI draft specification

    A draft of a new door drop file: named KEY=value lines in INI sections, readable by a DOS door in a dozen lines of C, Turbo Pascal or QBasic and
    by the Win32 and Python INI APIs. It carries what doors commonly read
    from DOOR.SYS, DOOR32.SYS and DORINFO1.DEF, plus user preferences (sound
    muted, screen pause, mouse hot-spots) and detected terminal capabilities (Sixel, JPEG XL, CTerm features, kitty and evdev key reports, color
    depth), so a door needs no other drop file and no terminal probing of its
    own.

    The draft also specifies what the older formats leave unsaid: how the
    path reaches the door (DROPFILE_INI or the command line), per-node file placement, the rules for an inherited socket or serial handle (blocking
    mode, socket options, no shutdown()), text encoding, and vendor-prefixed extension keys.

    Non-normative notes describe how Synchronet would write the file,
    including X_SBBS_* keys for doors that use MODUSER.DAT, and list the
    Synchronet work needed first. Open questions and a list of reviewers
    close the document.

    Co-Authored-By: Claude Opus 5.5 <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, September 26, 2026 12:37:53
    https://gitlab.synchro.net/main/sbbs/-/commit/7022cd5556eef105dd30b836
    Modified Files:
    docs/dropfile_ini.md
    Log Message:
    docs: DROPFILE.INI draft 0.2

    Changes since draft 0.1 (8afe199205, schools-20-cars, 2026-09-25):

    - The file may be written by a BBS or any other system that runs doors,
    so the spec now calls the writer the "host", defined once in the
    introduction.
    - The [bbs] section is now [system], with its keys renamed to match:
    SYS_SOFTWARE, SYS_NAME, SYS_OP, SYS_NODE_NUM, SYS_NODE_COUNT,
    SYS_QWKID, SYS_VENDOR and SYS_VERSION. SYS_NODE_NUM and
    SYS_NODE_COUNT replace the one-letter-apart BBS_NODE and BBS_NODES,
    and SYS_QWKID says plainly what the ID is.

    Co-Authored-By: Claude Opus 5.5 <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, September 26, 2026 16:08:29
    https://gitlab.synchro.net/main/sbbs/-/commit/e7a825704ef5329c7ef84087
    Modified Files:
    docs/dropfile_ini.md
    Log Message:
    docs: DROPFILE.INI draft 0.3

    Changes since draft 0.2 (7022cd5556, suppliers-28-info, 2026-09-26):

    - New host keys in [system]: SYS_HOSTNAME (public Internet host name),
    SYS_FTN_ADDR (primary FidoNet address, for inter-BBS games),
    SYS_LOCATION, SYS_OP_AVAILABLE (whether the sysop can be paged) and
    SYS_DATE_FORMAT (mdy, dmy or ymd). SYS_OP now allows any name the
    sysop is configured with, not only an alias.
    - New user keys in [user]: USER_EMAIL (the user's address on the host),
    USER_NETMAIL (the user's forwarding address, Internet or FidoNet) and
    USER_PROTOCOL (how the caller connected: telnet, rlogin, ssh, raw,
    websocket or serial). USER_ROLE gains guest, so doors can avoid
    saving progress for a shared account. USER_HANDLE may be an amateur
    radio call sign.
    - TERM_BACKSPACE (8 or 127, the byte the Backspace key sends) replaces
    TERM_SWAP_DELETE, which door authors had to decode.
    - Phenom Dropfile, a JSON drop file for Mystic BBS, is cited as related
    prior art, and its author added to the reviewers.

    Co-Authored-By: Claude Opus 5.5 <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 Wednesday, September 30, 2026 19:08:47
    https://gitlab.synchro.net/main/sbbs/-/commit/ae6931740a8469bf72584107
    Modified Files:
    docs/dropfile_ini.md
    Log Message:
    docs: DROPFILE.INI draft 0.4

    Changes since draft 0.3 (e7a825704e, mode-3-declare, 2026-09-26):

    - The bool type is now 0 (false) or any other unsigned decimal (true),
    so a key can later define values above 1 that mean true plus more
    detail, the way TERM_RIP grew from a yes/no into a version. Consumers
    test nonzero and must not compare against 1; producers write only 0
    or 1 unless the key defines another value; a value above 1 must be a
    refinement of true, so a door that treats it as 1 still works.
    - TERM_MOUSE is the first key to use that: 1 = cell reports, 2 = pixel
    reports too (SGR-Pixels, mode 1016). The termgfx doors latch pixel
    mode today only from a DECRPM reply some terminals never send, or
    from a report that lands past the text grid; 2 closes that window.
    Source adds DECRQM requests for modes 1006 and 1016 on non-CTerm
    terminals, which report a mode without changing it.
    - PREF_MOUSE now means consent, not a hot-spot wish: 0 = the user has
    turned mouse use off, so a door must not enable reporting for
    hot-spots, menus or scrolling. A pointer-driven door (steering,
    aiming) may still capture the pointer and then offers its own switch.
    Synchronet has no per-user hot-spot setting; its MOUSE setting is the
    user's answer to "Does your terminal support mouse reporting".
    - Synchronet notes: TERM_MOUSE from per-session detection, falling back
    to the user's setting when detection was silent; PREF_MOUSE=0 when
    the setting is off. New to-do: keep the detected capability on the
    Terminal object, never in autoterm, because Terminal::get_flags()
    ORs the user's manual flags into the detected ones, so a detected
    MOUSE would override a user's "no"; the MOUSE setting then means
    consent and its question is reworded and defaulted from detection.
    - The forked-CTerm to-do is ticked (done in 45d5185bdb, lens-28-were,
    2026-09-30).

    Co-Authored-By: Claude Fable 5.1 <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 Wednesday, September 30, 2026 20:48:07
    https://gitlab.synchro.net/main/sbbs/-/commit/ab8af28788a4540a7bad0a68
    Modified Files:
    docs/dropfile_ini.md
    Log Message:
    docs: DROPFILE.INI draft 0.5

    Incorporate NuSkooler's review of draft 0.3 (FSX BBS, 2026-09-30):

    - U+2028/U+2029 and the bidirectional format characters count as control
    characters, closing a key-injection hole in readers that split on them
    - USER_KEY starts with a letter or digit; doors prefix or hash it before
    using it in a path, so a device name or ".." can't reach the file system
    - Security: the file is only as trustworthy as whoever can write it; the
    host should make it writable only by itself; personal details should be
    a per-door sysop choice
    - Hosts keep other sessions' handles out of the door (handle list on
    Windows, close-on-exec on POSIX)
    - Unknown token values read as the key's default, never a more privileged
    one; LF-splitting readers strip the trailing CR
    - New TERM_TERMINFO key for the Telnet/SSH/RLogin terminal type name;
    TERM_NAME names its source
    - Screen size is a snapshot; a door that cares re-queries the terminal
    - SYS_FTN_ADDR lists every address, primary first, with optional @domain
    - New path type: file system bytes, never converted or cut; non-text
    values that don't fit are left out rather than cut
    - TERM_TYPE gains avatar, for converters from DORINFO1.DEF
    - FILE_CHARSET and ATASCII declined for now; SESSION_ID, connect-back
    doors, test files and message editor keys recorded as open questions

    Looking the file up by name in a directory is allowed but discouraged:
    the door is always given the full path, and a door that looks by name
    must ignore case.

    Add a coverage audit against the older drop files (DOOR.SYS, DOOR32.SYS, DORINFO1.DEF, CHAIN.TXT, CALLINFO.BBS, SFDOORS.DAT, TRIBBS.SYS,
    PCBOARD.SYS, DOORFILE.SR, BBSDEV.DRP, XTRN.DAT, Phenom Dropfile and
    DTS-0001), listing each field with no key and why, with proposals for
    the real gaps (phone, logons, last call, transfer totals, time used).

    Fix the DOOR.SYS citation: DTS-0001 is not DOOR.SYS but a 1992 proposal
    for a named-value DROPFILE.###, now cited as prior art; DOOR.SYS cites
    the Synchronet wiki page.

    Co-Authored-By: Claude Fable 5.1 <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 Wednesday, September 30, 2026 22:24:12
    https://gitlab.synchro.net/main/sbbs/-/commit/0fc16673770510a82ed4e737
    Modified Files:
    docs/dropfile_ini.md
    Log Message:
    docs: DROPFILE.INI draft 0.6

    Looking the file up by name in a directory is allowed but discouraged:
    the door is always given the full path, and a door that looks by name
    anyway must ignore case and still accept a full path.

    Audit of Synchronet's external program options against the file:

    - New IDLE_LIMIT key in [session]: seconds without caller input before
    the host ends the session, so a door can warn the user or run its own
    idle timer
    - New [door] section with DOOR_CODE and DOOR_NAME, the configured entry
    that launched the program, for a program installed under several
    entries
    - TIME_LEFT mapping includes the door's extra time and maximum time;
    for a free-time door it is the lesser of the maximum time and the
    time until the next event, else omitted
    - Standard-I/O echo conflict noted: stdio requires no echo, so
    Synchronet treats the no-echo option as set for this drop file type
    - New X_SBBS_SECTION vendor key: the internal code of the external
    program section the door entry belongs to
    - To-dos for the "Use Real Name" option (gate USER_REALNAME, never
    alter USER_ALIAS) and WWIV color codes

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

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