From 46f4696db640d0e5652acb6e0c4120f22b112e39 Mon Sep 17 00:00:00 2001 From: gramps Date: Sat, 29 Aug 2026 09:24:13 -0700 Subject: [PATCH] TASK 18: manual rename modal for finished recordings RenameRecordingDialog (themed, mirrors GoLiveWindow chrome): pre-fills the auto stem, Enter/OK saves, Esc/Cancel keeps the auto name, strips stray .mp4, rejects invalid filename chars. FinalizeRecordingAsync shows it before UniquePath rename. Naming logic still covered by RecordingFileTests; UI shell is pure. verify.sh gate: 0 warnings, 244/246 (2 known). --- HANDOFF.md | 5 +-- RenameRecordingDialog.xaml | 38 +++++++++++++++++++++ RenameRecordingDialog.xaml.cs | 63 +++++++++++++++++++++++++++++++++++ TASKS.md | 4 +-- ViewModels/MainViewModel.cs | 12 +++++-- 5 files changed, 116 insertions(+), 6 deletions(-) create mode 100644 RenameRecordingDialog.xaml create mode 100644 RenameRecordingDialog.xaml.cs diff --git a/HANDOFF.md b/HANDOFF.md index 0bb9c88..0bbc70a 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -70,6 +70,7 @@ docs/ytLlive-preview.jpg docs/ytLlive-preview.png(deleted)` 1. **Running-app verification** of TASK 18 (the one real gap): confirm rename-on-stop produces `ty-…-.mp4` and dual stream+record output actually works live. Requires the creator to run the app. -2. Manual rename dialog (planned modal for user-chosen name) — parked, needs a trigger (toast service has - no actions). +2. ~~Manual rename modal~~ **DONE** — `RenameRecordingDialog` (themed modal, pre-filled auto-stem, + OK/Enter / Cancel/Esc, invalid-char + empty = keep-auto validation) shown at finalize in + `FinalizeRecordingAsync`; reuses `YtTextBox`/`YtButton` styles. 3. Continue queue: TASK 21 media source, TASK 22 audio sync offset. diff --git a/RenameRecordingDialog.xaml b/RenameRecordingDialog.xaml new file mode 100644 index 0000000..9de5066 --- /dev/null +++ b/RenameRecordingDialog.xaml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + The recording is saved with an auto-generated name. Give it a clearer name — + leave it empty to keep the auto name. + + + + + + +