Keep long recordings: spool, retry, chunked upload, progress ring

A long clip used to die on a fixed 30 s timeout and the audio went with it.
Now every conditioned clip is written to spool/ before upload and only
removed once its text is on the clipboard; failures keep it, and a tray item
retries spooled clips (copied together, never dispatched). Requests the API
rejects outright (4xx other than 408/429) are not kept.

Timeouts scale with the audio (30 s + 30 s/min, capped at 5 min). Clips over
5 min are cut inside pauses into ~4 min chunks uploaded three at a time and
stitched in order; failed chunks are spooled individually and the partial
transcript is copied with a gap marker. The tray disc fills clockwise as
chunks return.

mic_check.py passes the new timeout tuple.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016rLFNPygDpRkRwPQakdmYh
This commit is contained in:
2026-09-05 19:03:50 -04:00
co-authored by Claude Fable 5.1
parent 6ad8526920
commit 82bc350521
4 changed files with 625 additions and 70 deletions
+3
View File
@@ -9,3 +9,6 @@ __pycache__/
model.txt
language.txt
device.txt
# Clips awaiting (or retrying) transcription
spool/