• docs/superpowers/plans/2026-07-21-door-idle-detection.mddocs/superpowe

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Tuesday, July 21, 2026 21:53:27
    https://gitlab.synchro.net/main/sbbs/-/commit/954bdb7c6ffed676e34762d9
    Added Files:
    docs/superpowers/plans/2026-07-21-door-idle-detection.md
    Modified Files:
    docs/superpowers/specs/2026-07-21-door-idle-detection-design.md
    Log Message:
    doors: implementation plan for idle detection; -i/.ini as base contract

    Adds the phase-1 plan: the shared termgfx/idle clock with its unit test, the game_lobby.js parse_duration() default-unit argument, and adoption in two reference doors -- syncretro for the lobby path and syncconquer for the lobby-less one. The remaining three doors and syncscumm get their own plans; syncscumm needs both a session-deadline concept and an overlay primitive
    built in shared termio code, which is not a task so much as a project.

    Also corrects how the spec framed configuration. The first draft made the
    JS lobby the primary source of the timeout and the door's own ini a
    fallback for lobby-less doors. That is wrong for these doors: they run
    under other BBS software via DOOR32.SYS, where no Synchronet JS exists at
    all, so -i and the [idle] ini section have to be the base contract on every door and the lobby an additional Synchronet-only layer whose one added
    value is evaluating the exempt ARS.

    The distinction has teeth for testing. A lobby always emits -i, including
    -i0 for an exempt user, so on a Synchronet install the ini fallback is
    never exercised -- a broken fallback would leave every non-Synchronet
    install silently without a timeout and nothing on the lobby path would
    reveal it. The plan therefore verifies the no-lobby launch explicitly, and records the ordering requirement that a door must read its ini before it
    arms the clock.

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