Audio: 3 of 8 registered SFX have no call sites — coin_hit_shallow / kumbaya_whoosh / warbow_twang never played #108

Closed
opened 2026-05-01 15:23:22 +00:00 by Brouie · 3 comments
Brouie commented 2026-05-01 15:23:22 +00:00 (Migrated from gitlab.com)

P3-low audio gap: 3 of the 8 SFX registered in frontend/src/audio/sfxUrls.ts have zero playSfx / playGameSfx call sites in the codebase. Direct regression of #68 acceptance criterion 4 ("The eight *.wav above are used where the table says").

Inventory (all 8 SFX)

SFX In sfxUrls.ts Prefetched (AudioEngineProvider.tsx:71-80) Direct playSfx Via playGameSfx* Played?
ui_button_click ✓ ✓ — 2 sites (AudioEngineProvider.tsx:130, 137) ✓
charmed_confirm ✓ ✓ — 1 site (AudioEngineProvider.tsx:17) ✓
peer_buy_distant ✓ ✓ WebAudioMixer.ts:315 playGameSfxPeerBuyThrottled ✓
timer_heartbeat_calm ✓ ✓ WebAudioMixer.ts:322 playGameSfxTimerCalmThrottled ✓
timer_heartbeat_urgent ✓ ✓ WebAudioMixer.ts:329 playGameSfxTimerUrgentThrottled ✓
coin_hit_shallow ✓ ✓ — 0 sites ✗
kumbaya_whoosh ✓ ✓ — 0 sites ✗
warbow_twang ✓ ✗ not prefetched — 0 sites ✗

Repro

$ grep -rEn 'playSfx\("|playGameSfx\(' frontend/src --include='*.ts' --include='*.tsx'
# Returns only: peer_buy_distant, timer_heartbeat_calm, timer_heartbeat_urgent, charmed_confirm, ui_button_click
# coin_hit_shallow, kumbaya_whoosh, warbow_twang absent

Spec impact

Dev's 54ba8cd commit notes claim:

"TimeCurve Simple: coin_hit_shallow after buy tx submit; charmed_confirm on receipt and on redeemCharms receipt; kumbaya_whoosh on CL8Y/ETH/USDM pay-mode change"

Neither of those wirings is present in the code today on 243e2a0. warbow_twang is the most-orphaned: not even prefetched.

Severity

P3-low. Audio polish, not security or correctness. But:

  • Spec line item silently regressed (acceptance criterion 4 was meant to prevent exactly this)
  • The 3 WAVs ship in frontend/public/sound-effects/ and add to bundle / asset payload size with no payoff
  • warbow_twang belongs to WarBow PvP — should probably fire on Steal / Guard / Revenge submits per the WarBow hero work in #101

Suggested fix

Three small wirings:

  1. coin_hit_shallow — call after writeContractAsync submit on the buy paths (useTimeCurveSaleSession.ts / Arena buy)
  2. kumbaya_whoosh — call inside the pay-mode setter callback in TimeCurveSimplePage.tsx (CL8Y / ETH / USDM toggle)
  3. warbow_twang — call in runWarBowSteal / runWarBowGuard / runWarBowRevenge in useTimeCurveArenaModel.tsx after their respective writeContractAsync calls; also add to the prefetchCommonSfx list in AudioEngineProvider.tsx:71

Acceptance

  • All 8 registered SFX have at least one call site (grep -rE 'playSfx\("|playGameSfx\(' src returns hits for each).
  • warbow_twang added to the prefetchCommonSfx list.
  • No regression on the 5 currently-wired SFX.

cc @PlasticDigits

P3-low audio gap: 3 of the 8 SFX registered in `frontend/src/audio/sfxUrls.ts` have **zero `playSfx` / `playGameSfx` call sites in the codebase**. Direct regression of [#68](https://gitlab.com/PlasticDigits/yieldomega/-/issues/68) acceptance criterion 4 ("The eight `*.wav` above are used where the table says"). ### Inventory (all 8 SFX) | SFX | In `sfxUrls.ts` | Prefetched (`AudioEngineProvider.tsx:71-80`) | Direct `playSfx` | Via `playGameSfx*` | Played? | |---|---|---|---|---|---| | `ui_button_click` | ✓ | ✓ | — | 2 sites (`AudioEngineProvider.tsx:130, 137`) | ✓ | | `charmed_confirm` | ✓ | ✓ | — | 1 site (`AudioEngineProvider.tsx:17`) | ✓ | | `peer_buy_distant` | ✓ | ✓ | `WebAudioMixer.ts:315` | `playGameSfxPeerBuyThrottled` | ✓ | | `timer_heartbeat_calm` | ✓ | ✓ | `WebAudioMixer.ts:322` | `playGameSfxTimerCalmThrottled` | ✓ | | `timer_heartbeat_urgent` | ✓ | ✓ | `WebAudioMixer.ts:329` | `playGameSfxTimerUrgentThrottled` | ✓ | | **`coin_hit_shallow`** | ✓ | ✓ | — | **0 sites** | **✗** | | **`kumbaya_whoosh`** | ✓ | ✓ | — | **0 sites** | **✗** | | **`warbow_twang`** | ✓ | **✗ not prefetched** | — | **0 sites** | **✗** | ### Repro ``` $ grep -rEn 'playSfx\("|playGameSfx\(' frontend/src --include='*.ts' --include='*.tsx' # Returns only: peer_buy_distant, timer_heartbeat_calm, timer_heartbeat_urgent, charmed_confirm, ui_button_click # coin_hit_shallow, kumbaya_whoosh, warbow_twang absent ``` ### Spec impact Dev's `54ba8cd` commit notes claim: > "TimeCurve Simple: **`coin_hit_shallow` after `buy` tx submit**; `charmed_confirm` on receipt and on `redeemCharms` receipt; **`kumbaya_whoosh` on CL8Y/ETH/USDM pay-mode change**" Neither of those wirings is present in the code today on `243e2a0`. `warbow_twang` is the most-orphaned: not even prefetched. ### Severity P3-low. Audio polish, not security or correctness. But: - Spec line item silently regressed (acceptance criterion 4 was meant to prevent exactly this) - The 3 WAVs ship in `frontend/public/sound-effects/` and add to bundle / asset payload size with no payoff - `warbow_twang` belongs to WarBow PvP — should probably fire on Steal / Guard / Revenge submits per the WarBow hero work in [#101](https://gitlab.com/PlasticDigits/yieldomega/-/issues/101) ### Suggested fix Three small wirings: 1. **`coin_hit_shallow`** — call after `writeContractAsync` submit on the buy paths (`useTimeCurveSaleSession.ts` / Arena buy) 2. **`kumbaya_whoosh`** — call inside the pay-mode setter callback in `TimeCurveSimplePage.tsx` (CL8Y / ETH / USDM toggle) 3. **`warbow_twang`** — call in `runWarBowSteal` / `runWarBowGuard` / `runWarBowRevenge` in `useTimeCurveArenaModel.tsx` after their respective `writeContractAsync` calls; also add to the `prefetchCommonSfx` list in `AudioEngineProvider.tsx:71` ### Acceptance - [ ] All 8 registered SFX have at least one call site (`grep -rE 'playSfx\("|playGameSfx\(' src` returns hits for each). - [ ] `warbow_twang` added to the `prefetchCommonSfx` list. - [ ] No regression on the 5 currently-wired SFX. cc @PlasticDigits
Brouie commented 2026-05-01 15:29:45 +00:00 (Migrated from gitlab.com)

mentioned in issue #68

mentioned in issue #68
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-05-02 04:41:42 +00:00
PlasticDigits commented 2026-05-02 04:41:43 +00:00 (Migrated from gitlab.com)

Duplicate of #68

Duplicate of #68
PlasticDigits commented 2026-05-02 05:11:32 +00:00 (Migrated from gitlab.com)

mentioned in commit ae72b9d016

mentioned in commit ae72b9d01667b2e0aee5aac7b461f74ff364b220
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
code/yieldomega#108
No description provided.