Skip to content

Pure single-button transport gesture (TAP/HOLD) — ESP-045 core - #140

Merged
Skeyelab merged 2 commits into
masterfrom
feat/esp-045-button-gesture
Jul 17, 2026
Merged

Skeyelab merged 2 commits into
masterfrom
feat/esp-045-button-gesture

Conversation

@Skeyelab

Copy link
Copy Markdown
Member

The Mini's one physical button needs two gestures (ESP-045): short press = play/stop,
hold = realign. This lands the pure, host-tested decoder for that split.

  • KitchenSync/main/transport_button.{h,c} — transport_button_update(raw, now) returns
    TAP (short, on release) or HOLD (held ≥600ms, fired once while down; release then
    silent). Composes buttons.c debounce; no intent/launch-state dependency — glue maps
    TAP→play/stop toggle, HOLD→realign.
  • Placed on the KitchenSync side (transport is a KitchenSync concept, not X32Link).
  • TDD: test/test_transport_button.c — tap, hold-once-then-silent-release, back-to-back
    reset. All host suites green.

Remaining ESP-045 (separate glue, not this PR): GPIO read + HAS_TRANSPORT_BUTTON wiring
and on-hardware verification on the Super Mini.

https://claude.ai/code/session_01F7YsQgso3KNpeXbP5vNVj6

…P-045)

The Mini's one live button needs two gestures: short press = play/stop, hold = realign.
transport_button_update() splits a debounced press into TAP (on release) or HOLD (fired
once at a 600ms threshold, while still down; the release then stays silent). Pure timing
over buttons.c debounce — the glue owns only the pin read and mapping TAP->toggle /
HOLD->realign, so the short-vs-long decision is host-tested.

Lives in KitchenSync/main/ (transport is a KitchenSync concept, not X32Link). TDD:
test_transport_button.c — tap, hold-once-then-silent-release, and back-to-back
gesture reset. All host suites green.

Claude-Session: https://claude.ai/code/session_01F7YsQgso3KNpeXbP5vNVj6
@Skeyelab
Skeyelab enabled auto-merge (squash) July 17, 2026 05:06
@Skeyelab
Skeyelab merged commit 02dcd7c into master Jul 17, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants