M2-06: Collect location while a recording runs #33
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#33
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?
Start a
CLLocationManagerwhen a recording starts, stop it when the recording stops, and hold thepoints in memory. Nothing is written yet.
The rule that defines this issue
Nothing is written to disk unless a recording is running. Collection is tied to the recording
lifecycle, not to the app being open, not to the toggle being on. The toggle (M2-04) says may; a
running recording is what says now.
Wes: "collect only while recording a memo."
One named exception, added 2026-08-09. M2-10's heat map takes a location fix to centre itself,
only while that view is on screen, never written anywhere. That is a centring aid rather than
tracking, and it is the complete list of exceptions — if a second one is ever proposed, treat that
as the signal this rule is being eroded rather than extended.
Scope
paths that end a recording without the stop button — the Live Activity stop, and a crash.
allowsBackgroundLocationUpdatesso points keep arriving with the phone locked. This is thebehaviour that matters; a track that stops the moment the screen locks is worthless for a walk.
harness already reports what it just did. That is how this issue gets tested without a writer.
forty-minute memo and finer than a route needs.
What a point carries
Decided 2026-08-08: coordinates, time, horizontal accuracy, altitude, speed and course. All of
it comes free from
CLLocationand none of it is recoverable once discarded, so nothing isfiltered at capture — consumers filter on accuracy downstream if they want to.
Time is the absolute instant of the fix, which is what GPX stores natively (decided 2026-08-09,
see #34). Alignment with VTT cue times is derived by subtracting the recording start rather than
stored, so there is no second copy of the same fact to disagree with itself.
What has to not happen
A location failure must never affect the recording. No authorization state, no
CLError, noabsence of signal in a valley may stop, pause or degrade audio capture. The memo is the product;
the track is an annotation on it. If that separation cannot be held, say so and stop.
Done when
Milestone 2 of the Stash v3 rebuild. M2 is still app-side — no sync, no account, no server. It
turns a list of memos into something you can open, listen to, read and see the route of. Sync
arrives in M3. There is no
milestone/M2label yet (creating org labels needs owner rights), sothe title carries the milestone.
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.