Recover interrupted mobile voice transcripts privately #931

Closed
opened 2026-08-16 02:24:53 +00:00 by timmy · 0 comments
Owner

User problem

A final mobile voice transcript exists only in the New sheet DOM until the operator applies it. A reload, PWA eviction, or OS interruption during review loses captured field work.

Vertical slice

Persist only final transcript text in an account-bound private browser database; recover it on the same confirmed account after reload; let the operator explicitly apply or discard it; purge it after consumption and with all private-device/session purge paths. Never persist audio or interim speech.

Acceptance criteria

  • Final recognition segments are normalized, accumulated, and checkpointed up to the existing 10,255-character limit.
  • Reload/reopen restores a pending transcript only for the same confirmed account and labels it as recovered.
  • Existing typed title/note remain unchanged until explicit Append/Replace/Use.
  • Apply or Discard removes the checkpoint; errors/cancel keep it recoverable.
  • Unsupported browsers keep keyboard flow and create no voice storage.
  • Sign-out/revocation/private-device purge deletes voice checkpoints.
  • Behavioral tests cover persistence, account isolation, recovery, accumulation, consume/discard, and purge; rendered mobile controls remain usable.

Evidence / non-duplicate check

Current origin/main (4722092) stores final text only in frontend/voice-issue-capture.js DOM state. All 468 historical issue titles and recent commits were searched; #929/#930 introduced voice capture but did not add interruption recovery. No open PR or historical title implements this behavior.

## User problem A final mobile voice transcript exists only in the New sheet DOM until the operator applies it. A reload, PWA eviction, or OS interruption during review loses captured field work. ## Vertical slice Persist only final transcript text in an account-bound private browser database; recover it on the same confirmed account after reload; let the operator explicitly apply or discard it; purge it after consumption and with all private-device/session purge paths. Never persist audio or interim speech. ## Acceptance criteria - Final recognition segments are normalized, accumulated, and checkpointed up to the existing 10,255-character limit. - Reload/reopen restores a pending transcript only for the same confirmed account and labels it as recovered. - Existing typed title/note remain unchanged until explicit Append/Replace/Use. - Apply or Discard removes the checkpoint; errors/cancel keep it recoverable. - Unsupported browsers keep keyboard flow and create no voice storage. - Sign-out/revocation/private-device purge deletes voice checkpoints. - Behavioral tests cover persistence, account isolation, recovery, accumulation, consume/discard, and purge; rendered mobile controls remain usable. ## Evidence / non-duplicate check Current `origin/main` (`4722092`) stores final text only in `frontend/voice-issue-capture.js` DOM state. All 468 historical issue titles and recent commits were searched; #929/#930 introduced voice capture but did not add interruption recovery. No open PR or historical title implements this behavior.
timmy self-assigned this 2026-08-16 02:24:53 +00:00
timmy closed this issue 2026-08-16 02:42:03 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stackchain/stackchain-dashboard#931
No description provided.