Dated proposal · #277 · 2026-09-03 · hand-written and frozen, not a description of shipped behavior

Buddy Cues

Five cues for #277, one per interaction. Click, double-click, right-click, and drag BMO on the desk below. The Summon cue cancels a Poke still in flight; a fast release is a Throw. Every stroke is white on ink, the same pair the speech bubble already uses, so nothing new is introduced to the overlay.

Try each gesture on BMO. The wallpaper changes to check that the cues read on any desktop.
BMO
Waiting for the first click.

The set

PokeLeft click
Ring, outward. One ring grows from the sprite's centre, 24 to 82 px, and fades. 260 ms.
Tap. Sine 660→600 Hz, 4 ms attack, 140 ms decay. A fingertip on a box.
SummonDouble click
Two rings, inward. Poke played backwards, twice, 90 ms apart — the double, and a pull toward the sprite. 430 ms.
Call. Two triangle notes, C5 then G5, 130 ms each, the second at 110 ms. Rises, like asking.
MenuRight click
Filled sweep. A thin dark ring segment, 4.5 px in a 58 px circle, sweeps the whole way round from twelve and fades — a radial menu's silhouette. Conic gradient, no SVG stroke, so it is crisp at any DPI. 240 + 150 ms.
Latch. Two square-wave ticks, 320 Hz then 240 Hz, 35 ms each through a low-pass. Mechanical, unlike Poke's soft tap.
PickupDrag begins
Dashes, upward. Four short dashes leave the feet and rise 30 px, staggered 25 ms. The ground letting go. 320 ms.
Lift. Sine sweep 280→720 Hz over 140 ms. Up, the direction the sprite went.
DropDrag ends, still
Puff, sideways. A flat ellipse at the feet spreads to 92 px wide and fades. Dust on landing. 280 ms.
Thud. Sine 160→55 Hz over 120 ms, 160 ms decay. Down, and heavier than anything else in the set.
ThrowDrag ends, moving
Drop, harder. Same puff, 130 px wide, 340 ms. Not a sixth shape — the same shape with more force behind it.
Thud, harder. 220→55 Hz, 1.6× the gain, 200 ms decay.
Master gain is 0.5. Timings are the proposal, not the ceiling — every number here is a knob.