M1-10: Finalization and crash recovery #10
Labels
No labels
area/agent
area/capture
area/editor
area/geo
area/security
area/sync
area/transcription
area/ui
area/vault
area/voice-memos
blocked
milestone/M1
milestone/M2
milestone/M3
milestone/M4
needs-decision
needs-hardware
p0
p1
p2
type/bug
type/enhancement
type/feature
type/idea
type/infrastructure
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Stash/stash-ios#10
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
On stop, turn the in-flight state into the two artifacts of record, and recover
cleanly when the app died before it could.
The output contract
Every completed capture is exactly two files:
Wes: "I want the output to be a VTT file and the audio file."
On stop
.parts/*.vttinto the single transcript — strip theWEBVTTheader from parts2..n and concatenate. Absolute timestamps mean nothing needs recomputing.
The phone assembles, not the sync tool
Considered having the sync tool concatenate, which would avoid re-sending data. Rejected: a
45-minute transcript is roughly 30 KB, so the duplicate transfer costs nothing, while
assembling on the device means one assembler in one place rather than the same logic
reimplemented in every client. This is the reliability-over-cleverness call, and it is the
kind of duplication that produced v2's byte-identical-copy-paste problem.
Crash recovery
On launch, find any
.parts/folder with no corresponding final transcript and finish thejob: assemble what exists, pair it with whatever audio survived, and surface the memo. A
recording interrupted by a crash must still appear in the list as a usable memo, not vanish
and not appear as a corrupt entry.
Done when
Milestone 1 of the Stash v3 rebuild, scoped 2026-08-06. M1 is a functioning iOS app on Wes's
phone with no sync at all — the entire goal is recording voice memos reliably and getting
them off the device by hand. Sync arrives in M3.
Working agreement for every issue in this repo: feature branch, tested before the PR opens
(on-device where the label says so), then Wes reviews the PR and we walk the code together.
Docs update in the same commit. A PR that takes more than 20 minutes to review is too big —
say so and split it.