Skip to content

History / Collision Detection Developer Guide

Revisions

  • Collision detection (#934): user page + developer guide A proper pair this time — unlike snooze, there is real user-facing behaviour to explain: what the two states mean, and why the thing deliberately doesn't stop you sending. Collision-Detection.md — what you see, the reply-window warning, why it warns and never blocks, and what it deliberately isn't (it is NOT a record of who read what; that information is overwritten every few seconds and thrown away). Collision-Detection-Developer-Guide.md — the table and the three decisions behind it (the unique key that makes the heartbeat an upsert; why ON DELETE CASCADE is right here when it is wrong almost everywhere else in this schema; ordering in freeitsm.sql), heartbeat- not-session with a table of what happens on a crash / dropped network / lost leave, why heartbeat and read are one endpoint, the three client details that are easy to get wrong (hidden tabs, the late response that must not paint, composing beating immediately), why a lock would be the wrong design, how it was verified, and how to extend it. Also records the two testing traps that cost the most time: a virtual-time browser races its timers ahead of external curl, so timing tests must observe in page time; and contentWindow.someLet is undefined because top-level let never lands on window. Tickets.md gains a short section pointing at both, and _Sidebar.md lists them under Tickets.

    @edmozley edmozley committed Jul 28, 2026