fix(core,studio): silence hidden audio in preview, and call it mute - #3275
Open
vanceingalls wants to merge 1 commit into
Open
fix(core,studio): silence hidden audio in preview, and call it mute#3275vanceingalls wants to merge 1 commit into
vanceingalls wants to merge 1 commit into
Conversation
Preview scheduled every audio[data-start] regardless of data-hidden, so a hidden audio track was silent in the export but audible in preview — render was already correct, this was a preview-only parity bug. Web Audio scheduling now skips (and re-syncs on toggle) any audio clip under a data-hidden ancestor; the HTMLMedia per-tick volume path folds the same check into effectiveVolume without touching el.muted (transport-owned). Ships unflagged since it's a bugfix restoring parity. Also relabels the eye as Mute/Muted on audio-only track rows (icon, strikethrough label, undo-history copy), gated behind the new audio-track-mute canary — the relabel is a copy/UX change, kept separate from the behavior fix above. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
audio[data-start]regardless ofdata-hidden, so a hidden audio track was silent in the export but audible in preview — render was already correct (isHiddeninaudioMixer.ts); this restores parity. Ships unflagged since it's a bugfix, not a new behavior.scheduleWebAudioForActiveClipsininit.ts) now skips any audio clip under adata-hiddenancestor, and re-syncs (batched, one call per visibility pass) when the attribute flips mid-playback.media.ts) folds the same check intoeffectiveVolume—el.mutedis untouched, since that flag is the transport's playback-ownership signal, not author intent.audio-track-mutecanary (0%) since it's a copy/UX change, kept separate from the unflagged behavior fix above.Depends on
Stacks on #3274 (A1) — review/merge that first.
Test plan
bun run build(core changed)cd packages/core && bun run test— 2339/2339 passcd packages/studio && bun run test— 4244/4244 passbunx oxfmt/bunx oxlintclean on changed filesinit.test.ts);effectiveVolumezeroed underdata-hiddenwithout touchingel.muted(media.test.ts); audio-only track gets Mute/Unmute labels, mixed track keeps Hide/Show (timelineTrackVisibility.test.ts)hyperframes previewa composition with music, hide the music track, press play — silence in preview; toggle the eye mid-playback and confirm it silences without the transport restarting🤖 Generated with Claude Code