M2-08: The route on a map #51
No reviewers
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!51
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "m2-08-route-map"
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?
Closes #35.
A route section on the memo detail screen: the walk as a line, start and end flagged, a marker that
follows the playhead and lands on the right stretch after a transcript seek, and a tap that opens
the map full size. Most memos have no track and show no section at all.
The three decisions worth reviewing
The map shares the track's strict parser. The transcript's rule is the opposite — a file going
on screen is read leniently, because refusing a whole transcript over one bad cue shows somebody an
empty screen where their words should be. A route is not a list of independent claims. Drop a point
out of the middle and the line does not get shorter, it moves, straight through whatever lies
between the two points either side of the hole — drawn with exactly the confidence of the parts that
are real. A track that will not parse is reported instead.
The marker is absent rather than wrong. Nothing before the first fix, on another memo's player,
at a standing zero, or without a recording start. Nothing past thirty seconds of a fix either, which
covers a missing part, a tunnel, and a route that ends before its audio. And nothing when the two
clocks are known to disagree: an interruption is spliced out of the audio and not out of the route,
so a memo interrupted by a call is shorter than the walk it describes. The track file records no
mapping between wall time and audio time, so that cannot be corrected — but a route spanning more
time than its memo can be recognised. Correcting it is #50.
The opt-in copy changed, and the security review is why. It promised the route "is not sent
anywhere", which was true of every build until this one. A map view is a network client: Apple Maps
is sent the area on screen in order to return the tiles for it, so opening a route tells Apple
roughly where it is. The promise is narrowed to the one the code keeps — Stash never uploads the
route — and the disclosure is added beside it, in Settings and in both permission prompts.
Still open for you: whether the map should be behind an explicit tap rather than drawn on open.
People who enabled collection under the old wording consented to something narrower than what the
app now does, and changing the copy does not retroactively fix that.
One visible side effect
A memo with no transcript now shows its own header, which it did not before. The route cannot live
inside the one branch of the detail screen that happened to be a list, so all four transcript
outcomes are one list now.
What was validated
On the simulator, against synthetic fixtures written into the documents directory:
.gpxfrom outside and re-foregrounding redraws the route and re-frames thecamera on the new one.
holds no positions says that instead.
.ktxiOS actuallywrote, not by inference.
575 tests pass, up from 534.
make lintis clean.What was not
Nothing on the phone. The build is installed on wes-iphone and was pushed at your instruction
before the device pass, so nothing in this PR has been exercised against a route Stash collected by
walking — every fixture was written by a script. Specifically unverified: a real track drawn from
real fixes, what the map costs in battery or data over a long memo, and the interruption case, which
is reasoned about and unit-tested but has never been produced by taking a call mid-recording.
Codex
Plan review, code review and security review are in
.agent/m2-08-route-map/, with every finding'sdisposition in
SUMMARY.md. Seventeen findings, no criticals, all taken; three changed the designand are the three above.
The decision file is in
stash-docsonm2-08-route-map-decision.