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

Fidget 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. Hover and stay 1.5s for the quick-message pill. The wallpaper changes to check that the cues read on any desktop. A throw or a drop can perch on the window.
BMO
Waiting for the first click.

Hover BMO and stay for 1.5s.

Quick message

Hover BMO for 1.5 seconds and a pill appears over the sprite, the field focused. Empty, it says talk to me. Send is an accent disc, #5cc9b5, with a dark triangle — not a link. The box is the speech bubble's chrome and it has no tail. Appear and dismiss fade over 180ms. The caret is that same accent. The same pill on a light, a dark and a busy desktop is Fidget Bubble.

Leave during the 1.5s and the pill never appears. Leave after it is up and it stays. It goes away on a click outside the sprite and the pill, a drag of the pet of at least 4px, or a double-click. The double-click is still Summon. A poke still plays and does not dismiss. A drag that starts in the field selects text; it does not grab the pet and does not dismiss. Escape does not dismiss. Enter sends.

While the caret is in the field the stroll holds in place. This desk has no walk-cycle frames, so the slide stands in for the Engine's walk. Idle is the sprite at rest, which stays. A jump is not drawn here; the Engine still lets one leave. Release the caret blurs the field without a dismiss, which is when the stroll resumes and the pill remains. The stroll pauses while the pointer is on the sprite, so a still cursor can finish the dwell — on the desktop the pet can keep walking through that wait.

When nothing can answer, the field is disabled and the draft is cleared so the sentence shows. That is Nothing can answer yet, or Starting Hermes… while a harness is still coming up. Send is the dim disc #2c3340, not the accent.

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 at the feet, where the hand opens. 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.