If you teach with Wobble, you might have noticed something annoying recently. You'd start a ten-minute reading timer for the class, walk over to help one child, and find that another child's screen still said "10:00." The timer hadn't been ignored, it had been quietly restarted every time they tapped a button or changed pages.
what was actually wrong
When the teacher device broadcasts "start a 10-minute timer," each pupil device picks up the command and computes an end time. Our old code computed that end time as "now plus ten minutes," using the pupil device's local clock at the moment it processed the command. Most of the time that was fine. But the command could resurface (after a reconnect, a refresh, or a re-render) and each resurface meant a new "now," which meant the countdown started over from full.
what we changed
- End times are now anchored to the command's original timestamp, not the moment the device happens to read it. Re-processing the same command produces the same end time, every time.
- Each device remembers the IDs of commands it has already applied and skips duplicates, so a re-broadcast can never restart a running clock.
- Stopping a timer still works instantly, that path was never the problem.
There's no new setting to tick and nothing to update on the teacher side. Start a timer, and it stays started, even if a child taps every button on their screen.
Most of the fixes that matter in a classroom are invisible. The class doesn't celebrate a timer that works. They just stop noticing the one that didn't.