Watching notes need reliable timestamp capture and visible save/retry feedback.
Reproduction: begin typing a note at 00:10, let the player advance to 00:50, then save. The existing implementation submits 00:50, so the saved quote and timestamp refer to a different moment. Pending saves also allow editing a draft that gets cleared on success, and a late request can be applied after navigating away and back to the same material.
Acceptance:
- Anchor a new note at the first typed character and retain that timestamp across playback and panel changes.
- Keep drafts after failures, provide visible success/error feedback and list retry, and prevent duplicate pending submissions.
- Ignore stale saves when materials change, including A → B → A; prevent list reloads overwriting mutations.
- Preserve edit/delete workflows, and keep failed deletion errors visible inside the confirmation dialog.
- Cover save, retry, timestamps, cross-material isolation, edit/delete and desktop/mobile regression flows.
Related: #1255, #1248, #1239 and the merged timestamped notes contribution #1142. A downstream integration also has a bookmark composer rendered above a scrolled transcript and an inaccessible Marks tab; that integration-specific repair is tracked separately in the fork rather than adding unavailable mark APIs to the upstream patch.
Watching notes need reliable timestamp capture and visible save/retry feedback.
Reproduction: begin typing a note at 00:10, let the player advance to 00:50, then save. The existing implementation submits 00:50, so the saved quote and timestamp refer to a different moment. Pending saves also allow editing a draft that gets cleared on success, and a late request can be applied after navigating away and back to the same material.
Acceptance:
Related: #1255, #1248, #1239 and the merged timestamped notes contribution #1142. A downstream integration also has a bookmark composer rendered above a scrolled transcript and an inaccessible Marks tab; that integration-specific repair is tracked separately in the fork rather than adding unavailable mark APIs to the upstream patch.