Edit a memo's title on the detail screen #58
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#58
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?
Auto-naming (#53) gives a memo a title generated on the phone. There is no way to change one.
A generated title is sometimes wrong in a way only the person who recorded the memo can see. On the first build, a memo was titled
First day of work and personal planswhen nobody had said it was a first day — the model had inferred it. The prompt was reworked and that class of result is much rarer, but it cannot be made impossible: the title is a guess about somebody's words, and the person is the only one who knows.What this is
A Name row on the memo detail screen, editable in place. A stock
TextFieldin the existing header section rather than a sheet or a rename dialog —AGENTS.mdasks for system-standard controls, and this is the control every other app uses for this.Clearing the field removes
<base>_title.txtand the row goes back to reading as the recording date, which is what an unnamed memo already does. That is the "no, don't name this one" answer, and it needs no separate affordance.What it has to respect
TitleFile.writeclaims the name and refuses to overwrite, deliberately —linkIteminto place, so two naming passes cannot fight and a title is written once. An edit is the one case that must replace, so it needs its own path rather than a relaxation of that one. A flag onwritethat sometimes overwrites would make the claim semantics conditional, which is how the guarantee gets lost.A hand-edited title must not be regenerated. Nothing regenerates today —
TitleGeneratorskips any memo whose title file exists — so this holds as long as an edit leaves a file behind. Worth a test, because it is the property that stops the app renaming somebody's note back.MemoLibrarycaches titles per capture. The pass re-reads every capture on every refresh, so an edit reaches the list, but the edit should apply to the row immediately rather than waiting for the next pass.Sanitising still applies. Wes decided on 2026-08-10 that vault inbox processing reads this file and names the note from it, so a typed title goes through
MemoTitle.fromexactly as a generated one does — it is a filename downstream whoever wrote it. That includes the length cap, and the field should show that limit rather than silently truncating.Deletion already takes the title, so nothing changes there.
Not in scope
Renaming the audio, the transcript or the track.
<base>is a cross-client contract and #53 exists in the shape it does specifically to leave it alone.The rule that makes this safe
Auto-naming never touches a memo that already has a title. Wes, 2026-08-11:
That is already how
TitleGeneratorbehaves — it skips any memo whose title file exists, and it asks whether the file is there rather than whether it reads as a title, so an emptied one is not treated as an invitation to try again. A hand-edited title is therefore safe for exactly the same reason a generated one is, and there is nothing to mark.This supersedes the open question this issue was filed with, which asked whether an edited title needed a flag distinguishing it from a generated one. It does not. The existence of the file is the whole rule, and a second piece of state saying who wrote it would be a thing to keep in sync for no behaviour it would change.