Skip to content

Annotate: audio after 20 minutes is silently dropped, with no warning while recording #1795

Open

Description

@martinklepsch

Hex version

3.3.0, installed from the signed DMG (the limit is unchanged on main at 73e08ba)

Platform

macOS

System details

macOS 26.3.1, Apple M4, 16 GB

What happened?

We recorded an Annotate capture that ran past 20 minutes. Everything said after minute 20 is gone. The capsule gave no warning during recording, and nothing in the finished capture says audio was dropped. We only noticed afterwards, so the content is lost.

This wasn't a problem with Scrawl, where we regularly recorded hour-long sessions, so it's a regression for anyone who moved from Scrawl to Annotate.

The cause is a fixed limit in the capture host:

  • src/capture_host.rs:150: const MAX_CAPTURE: Duration = Duration::from_secs(20 * 60);, documented as "A capture keeps at most this much audio; the rest is recorded as a gap."
  • src/capture_host/timeline.rs, Timeline::append: once the limit is reached, it logs capture reached its length limit; dropping the rest of its audio and drops later samples. finish records the remainder as one GapSpan.

recording.mp4 has no audio track, so after the cutoff the speech is not stored anywhere. The limit has been there since the capture host was added (b93964d) and is also in 3.3.0 and 3.4.0.

Expected: a long capture keeps all of its audio. If a limit is needed, it should be shown clearly while recording, not discovered afterwards.

Ideas for a fix
  1. A countdown or warning in the capsule well before the limit (e.g. at 15 and 19 minutes).
  2. Stopping and finishing the capture at the limit (or starting a follow-on capture), rather than letting it run on while the audio is thrown away.
  3. Writing audio to disk as it is recorded instead of keeping it all in memory, so a long capture doesn't need a limit and a crash doesn't lose everything.

At minimum, a finished capture that hit the limit should say so in the capsule or history.

Steps to reproduce

  1. Enable Annotate (default settings, Parakeet transcriber).
  2. Start a capture and keep talking for more than 20 minutes.
  3. Stop the capture.
  4. Check ~/Library/Application Support/scrawl/captures/<id>.scrawl/audio.wav and the transcript: speech after minute 20 is missing, and no warning appeared while recording.

Additional context

Related but different: #1769 (the ~17.5-minute limit on hex transcribe, fixed in #1771) doesn't affect this Annotate limit.

Activity

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