Skip to content

Surface AVAssetWriter failures instead of failing silently #20

Description

@sfegette

Summary

The recording pipeline currently stops appending when AVAssetWriter is no longer .writing, but it does not reliably surface writer failure details back to the user.

Why this matters

Disk-full, permission, codec, or output-path failures can result in partial or missing recordings that appear to stop normally. For a capture app, silent save failures are high-severity.

Observed gaps

  • startRecording() sets up the writer but does not validate later writer failure states in a user-visible way
  • captureOutput(...) returns early when writer.status != .writing
  • finishWriting {} does not inspect writer.status or writer.error
  • lastError is not updated on finish failure

Suggested direction

  • Inspect writer.status and writer.error during recording and during finishWriting
  • Surface a clear user-visible error when finalize/save fails
  • Consider rejecting stop completion until the writer finishes with success/failure
  • Add targeted logging for output path, file type, and writer error details

Relevant code

  • Capture/CaptureManager.swift lines 421-481
  • Capture/CaptureManager.swift lines 623-654
  • Capture/CaptureManager.swift lines 512-523

Acceptance criteria

  • Writer failures produce a user-visible error
  • Finalization success/failure is known at stop time
  • Disk/output failures are diagnosable from both UI and logs

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions