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