Skip to content

Failed voice-note playback leaves share-page controls stuck #3155

Closed

Description

@AksharP5

Description

A voice note that cannot start playing leaves the share-page controls stuck. The button says Pause voice note, the main video stays paused, and the note's progress loop keeps running even though no audio is playing.

The component claims playback and pauses the main video before calling audio.play(), but does not handle rejection. Retrying an already-failed note also exposes a queued media-event race when returning playback to the main video.

Reproduction

  1. Open a share page containing a voice note and start the main video.
  2. Make the note's media unavailable in a test environment, for example by blocking its request.
  3. Click Play voice note and let the playback attempt fail.

Expected: the note returns to Play, its progress updates stop, and the main video resumes if it was playing before the attempt.

Actual: the note stays on Pause and the main video remains paused. The viewer must recover manually. An initially paused main video should remain paused.

Additional Context

  • Baseline main: 77eaba5dcbad022a40cd7f51e832996f1f00c6ce; affected source remains unchanged on the implementation base.
  • Native browser proof uses actual component, registry and playback store with real HTML media playback. A revoked object URL from a valid silent WAV supplies the unavailable-resource case; the live URL with identical bytes is the valid control. This tests client recovery, not a live storage endpoint or production failure frequency.
  • Before: stuck Pause, one scheduled progress frame and no main-video resume. The focused correction handles rejection and consults the main element's actual paused state when releasing playback, including immediate rejection before queued media events.
  • Unit verification has three failures on baseline and all 18 checks passing after the correction, including 12 existing video-comment cleanup checks. Independent Astra HIGH review approved the fix after verifying native retries, waveform preload, manual pause, playback takeover and queued media-event ordering.

Activity

  1. linear commented on Oct 24, 2026

    @linear
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions