Skip to content

bug(preview): return actionable capture and recording failures #176

Description

@incognitojam

Problem

Preview capture failures can collapse to messages such as Preview snapshot failed. without identifying the target, failed stage, timeout class, or underlying Electron/exporter error. That made the compositor failure in #170 difficult to distinguish from navigation, page, session-binding, and artifact-save failures.

The functional screenshot and recording failures are fixed by #172 and #174. This issue tracks the remaining diagnostic experience as a separate concern.

Desired behavior

When snapshot or recording operations fail, return enough structured, non-sensitive context to act on the failure:

  • the logical preview tab ID and requested operation
  • the stage that failed, such as capture-surface presentation, native page capture, first-frame wait, encoder initialization, or artifact save
  • whether the failure was a bounded timeout or an immediate rejection
  • the underlying Electron/exporter message when it is safe to expose
  • a stable diagnostic identifier when the detailed cause is only available in host logs

Do not include page contents, pairing tokens, or other sensitive runtime data. Successful responses should remain unchanged.

Acceptance criteria

  • preview_snapshot reports distinct presentation-timeout, native-capture-timeout, and native-capture-rejection failures.
  • recording start, stop, and save failures identify their failing lifecycle stage.
  • the agent-facing error includes the requested tab ID rather than only a generic failure string.
  • desktop IPC preserves useful cause information without leaking a stack trace by default.
  • focused tests cover each failure classification and verify sensitive details are omitted.

Related to #170, #172, and #174.


Written by an agent (T3 Code, gpt-5.6-sol).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions