fix(onboarding): midi-input multi-provider discovery + home-tour lifecycle (#568)

Addresses Codex review of #526/#528:
- midi-input discover(): one provider's enumerate() rejection no longer aborts
  the whole discovery — other providers (e.g. a native/desktop MIDI provider)
  are still queried; denial is only reported when NO provider enumerates.
- Home tour now waits for a 'v3:dashboard-rendered' event (dashboard.js emits
  it after the #v3-home innerHTML swap) before attaching Shepherd, instead of a
  single animation frame that could latch onto pre-render nodes the async
  dashboard render then replaces.
- "Play it now" onboarding now arms the tour (armPendingFirstRun) to run the
  first time the user returns to v3-home, instead of silently never showing it.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Byron Gamatos
2026-06-22 14:06:28 +02:00
committed by GitHub
co-authored by Claude Opus 4.8
parent 820a18648a
commit 5d0229fc82
4 changed files with 70 additions and 9 deletions
+6
View File
@@ -520,6 +520,12 @@
if (!editing && !finishOpts.launchingSong &&
window.v3OnboardingTour && typeof window.v3OnboardingTour.startFirstRun === 'function') {
try { window.v3OnboardingTour.startFirstRun(); } catch (e) { /* never block onboarding */ }
} else if (!editing && finishOpts.launchingSong &&
window.v3OnboardingTour && typeof window.v3OnboardingTour.armPendingFirstRun === 'function') {
// "Play it now" navigates straight to the player, so the home
// tour can't run now — arm it to fire the first time the user
// returns to home, instead of silently never showing.
try { window.v3OnboardingTour.armPendingFirstRun(); } catch (e) { /* never block onboarding */ }
}
}