https://gitlab.synchro.net/main/sbbs/-/commit/fbdff744f0b711125545a224
Modified Files:
docs/superpowers/specs/2026-07-21-door-idle-detection-design.md
Log Message:
doors: extend the idle-detection spec to all six graphical doors
Surveying the other five doors turned up a constraint the first draft did
not account for: only half of them have a JS lobby. syncretro, syncduke and syncdoom build their command lines in JS and so can evaluate an exempt ARS
at launch; syncscumm, syncconquer and syncmoo1 are static xtrn.ini entries
with nowhere to run that check. DOOR32.SYS cannot close the gap either --
it carries no exempt flags, and termgfx's parser does not even extract the security level.
So the spec now describes two launch shapes. Lobby doors evaluate
exempt_ars and pass -i<seconds>; the other three take the same [idle] keys
from their own ini and additionally honor -i on the static command line.
The resulting exemption asymmetry is recorded as an accepted consequence
rather than left to be discovered, along with what it would take to close.
Also captured per door: the activity hook sites, the mouse hook, the exit
check and the warning renderer. Two doors grew parallel key dispatchers and need multi-site hooks; hooking their deeper common point is rejected
because synthetic key-up expiry timers also call it, which would forge
activity for a user who has left. Mouse motion needs the report handler
rather than the event queue everywhere except syncscumm, the only door that queues a motion event.
Three doors need more than a hook. syncscumm has no session time limit at
all -- termio reads the drop file's limit and discards it -- and no
transient overlay; both get built in termgfx_termio so syncrpg inherits
them. syncmoo1 has no overlay either. syncduke has no unified exit check. syncconquer is the cheapest and is proposed as the first target: its
time-limit function is already a warn-only stub whose own comment invites
this escalation.
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net