SIGN IN SIGN UP

Fix broken hand-off workflows across recordings and annotations

Four defects that all shared a shape: work or feedback that quietly went
nowhere.

Recordings were saved and copied without their cursor. Captures record with
showsCursor = false and reconstruct the pointer at render time, and the camera
stays a separate movie, so a session's raw screen master is never what the
user saw. Only CloudUploader flattened it first; after-capture Save/Copy, the
overlay card's Save/Copy, the save panel, and History's Copy all handed over
the raw file. RecordingDeliverable is now the single gate they all pass
through, with a "Preparing" state on the card while a render is needed and the
card marked engaged so auto-close cannot interrupt it.

The annotation editor discarded everything on close. Only the Done button
persisted; closing with Cmd-W or the red X ran releaseEditorResources and lost
every shape, the background, and the crop, with no prompt. Commit logic that
was duplicated across Done and Upload is now one commitEdits() that Done,
Cmd-S, Upload, and the close prompt all use. StudioCloseGuard becomes
EditorCloseGuard and is shared by both editors.

Cloud upload failures in Settings > History printed to the console and nothing
else. That list has no card or badge to carry the news, so an upload could die
and never produce a link or a reason. FailureAlert covers those paths.

VideoEditorWindow was unreachable, and with it VideoCompressionService,
VideoTrimExportService, VideoTrimTimelineView, FFmpegToolLocator, and
HistoryWindow. Removed. VideoTrimExportError.invalidRange survives in
VideoTrimSelection because the live Studio exporters still throw it.

Also: flattening and the cloud transcript sidecar read the last saved document
rather than the draft, so an upload and its transcript could disagree with the
editor; deleting a recording from History now refreshes the projects browser.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
F
Fayaz Ahmed committed
892606820101ead182b0f29e0692e08da80e8772
Parent: f0c4516