M2-03: Seek from the transcript #30
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#30
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?
Tap a cue and playback jumps there. The cue under the playhead highlights as the memo plays.
Why
This is the payoff for every timestamp M1 spent effort getting right — the cue boundaries, the
millisecond rounding, the seam continuity across part boundaries. A forty-minute walk memo is not
navigable by scrubbing blind; it is navigable by reading down the transcript and tapping the part
worth hearing.
M2-01 (#27) notes this explicitly: "Tapping a cue does not seek anything, because nothing plays a
memo yet. If playback ever lands, the timestamps are already there to hang it on." This is that.
Depends on
#27 (M2-01) for the parsed cues, and M2-02 for the transport.
Scope
somebody is reading ahead.
The alignment question this finally answers
"Whether cue times match the words by ear" has been open since #8 and #9 and no test has closed
it. This issue makes the misalignment visible: tap a cue, and either the words start or they do
not. Worth measuring on a real walk memo rather than a short test recording — drift, if there is
any, accumulates.
If cue times turn out to be systematically off, that is a finding for a separate issue against
transcription, not something to correct with an offset here.
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.
PR: #44
The alignment question this issue was going to answer is answered. On a one-hour memo, seeking
from cues near the end put the audio within about half a second of the words. Nothing was
systematically off, so there is no follow-up issue against transcription — the cue times the
recogniser emits hold up over an hour, and whatever drift exists does not accumulate to anything
audible.
One thing in the issue's scope was traded away. Cue rows are buttons now, and a button consumes
the long press that starts a text selection — measured on the device, not assumed. M2-01 had made
cue text selectable so a line could be copied out; both cannot have the gesture. Playing from a
tapped cue is what every timestamp in the transcript was built for, so it won, and the modifier was
removed rather than left in place doing nothing. Wes, testing it: "I can't click and copy a line,
but I honestly don't really need that feature." If copying a line ever needs to come back, a
long-press menu on the row is the way, and that is a separate decision.
Done-when, against the device pass:
interaction and only comes back when asked, by the button above the transport or by tapping a
cue.
Not verified anywhere: two windows; and the three bugs the Codex reviews found — a tap dropped
while the file was still opening, a capture failing to cancel a pending tap, and a request suspended
across a capture that starts and fails — are fixed by inspection, with unit tests only on the pure
rules underneath them. The simulator could not be driven at all: this machine cannot post clicks
into it, the same limitation recorded in M1-11.
A decision file went to stash-docs: Stash/stash-docs#6 — note on that PR
that it carries five earlier decision files that were never pushed to that repository's
main.