Your own clock, out loud

Featurekamo-internal
Shipped
September 9, 2026 at 2:24 AM UTC
Author
Kamo
Commit
de4b415

A thirty-second clock a player is not watching is a hand lost to a timeout while reading an email, and the felt's draining bar only helps somebody already looking at it. A member asked for a beep that accelerates and then a flat tone at the end, which is exactly the right shape: the last ten seconds beat once a second, then twice, then four times, and then the beats STOP and one sustained note runs to zero. The change from a beat to a tone is the signal — a rate you have to measure to read is not a warning, but "the beeping has become one sound" needs no measuring at all. ONLY EVER YOUR CLOCK. Ten seats mean ten clocks, and a table that beeps for all of them is a table nobody can sit at. `hold` is the first sustained tone in the palette, and it is four overlapping layers rather than one long note because the engine's envelope always ramps a layer to zero across its duration — there is no sustain stage. Each layer's linear fall is covered by the next one's attack. It is also the one tone allowed past the library's second-and-a-half limit, and that limit is right for everything else: a tone ANNOUNCES something, and something that has arrived is over, so a tone that outlasts its own event turns a burst into a drone. This one does not announce, it MEASURES — its whole job is to occupy the two seconds the beats left behind. The exception is named and bounded in the test, so the next long tone has to come and argue with the comment. The beats go to `startRepeatingEventSound`, which commits them to the AudioContext's clock: a JavaScript timer is throttled to one wake-up a minute in a page hidden for five, measured, and that is precisely the situation a warning tone exists for. The timers here only decide WHEN THE RATE CHANGES, as absolute moments computed from the server's own deadline — the same deadline the bar drains against, so the sound and the picture cannot disagree about how long is left. A turn that arrives with four seconds on it starts at four seconds' worth of urgency rather than replaying the calm ones. The hook is not mounted yet: HoldemTool currently also carries a concurrent session's invite work, and that lands first.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing