Skip to content

feat(desktop): add shared output routing and Web adapters - #575

Merged
grazzolini-mu merged 1 commit into
mainfrom
feat/shared-output-routing
Oct 1, 2026
Merged

grazzolini-mu merged 1 commit into
mainfrom
feat/shared-output-routing

Conversation

@grazzolini

Copy link
Copy Markdown
Owner

Summary

  • Add installation-local output routing preferences for project audio, stable stems, and cues. Refined drum parts inherit the Drums route unless overridden. Selections distinguish Inherit, System Default, and an explicit device.
  • Keep native and browser device identities separate; Android explicit IDs last only for the process. Preserve saved preferences while exposing effective destinations and fallback state.
  • Connect the shared model to native routing and capability-gated Web sinks. Followed metronome clicks stop with project playback; independent Tools playback stays available.
  • If selected and System Default outputs both fail, playback stops while retaining position and route preferences.

Motivation

Refs #505. Layer 2 of a three-PR review stack, based on #574. The complete stack is the runnable acceptance target; Playback and Project Studio controls, docs, and release media follow in layer 3. Device-clock synchronization, drift and latency correction, and per-output volume controls remain deferred.

Testing

  • Focused routing and metronome suites: 99 passed:
    pnpm --filter @tuneforge/desktop exec vitest run src/lib/audioOutput.routing.test.ts src/lib/outputRouting.test.ts src/lib/AudioOutputProvider.test.tsx src/features/projects/playback.race-regressions.test.tsx src/App.tools-metronome.test.tsx src/App.tools-chord-dictionary-responsive.test.tsx
  • Project playback integration suites: 105 passed:
    pnpm --filter @tuneforge/desktop exec vitest run src/features/projects/playback.test.tsx src/App.project-precount.test.tsx src/App.project-media-controls.test.tsx src/App.project-playback-stems.test.tsx
  • pnpm typecheck, scoped ESLint on changed desktop files, and git diff --check passed.
  • Complete-stack validation follows after all three PRs are open: pnpm lint, pnpm typecheck, pnpm test, native/platform checks, Android and Linux builds, hardware routing, and node scripts/capture-release-media.mjs --run.

Checklist

  • Conventional title; focused tests and review complete
  • No secrets or copyrighted audio added
  • Complete-stack integration and platform validation
  • UI, docs, changelog, and release media in layer 3

@grazzolini
grazzolini added this pull request to stack #576 September 29, 2026 13:33
@grazzolini
grazzolini marked this pull request as ready for review September 29, 2026 13:36
@grazzolini
grazzolini force-pushed the feat/shared-output-routing branch from 6993ff0 to 1045350 Compare September 29, 2026 14:03
@grazzolini grazzolini mentioned this pull request Sep 29, 2026
3 of 5 tasks
grazzolini-mu
grazzolini-mu previously approved these changes Oct 1, 2026
Base automatically changed from feat/native-output-routing to main October 1, 2026 19:01
Keep project routes local and connect native and browser output routing. Refs #505
@grazzolini
grazzolini dismissed grazzolini-mu’s stale review October 1, 2026 19:01

The merge-base changed after approval.

@grazzolini
grazzolini force-pushed the feat/shared-output-routing branch from 1045350 to d3db973 Compare October 1, 2026 19:01
@grazzolini-mu
grazzolini-mu merged commit c33a6ab into main Oct 1, 2026
16 checks passed
@grazzolini-mu
grazzolini-mu deleted the feat/shared-output-routing branch October 1, 2026 19:07
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