Files
mokosh/src
Mark b9eeeeb386 feat(01-09): GREEN — Bug B route user-stopped-sharing → IDLE; other codes → ERROR (preserved)
Patches the RECORDING_ERROR onMessage handler in src/background/index.ts
(lines 725-744 pre-patch) with conditional routing on the incoming
`message.error` payload:

  - 'user-stopped-sharing' → setIdleMode() (popup empties; badge OFF;
    isRecording flipped to false). Recovery notification suppressed —
    the operator stopped deliberately, surfacing one would be UX noise.
    The offscreen recorder's onUserStoppedSharing has already cleared
    the buffer (src/offscreen/recorder.ts:457 resetBuffer), so IDLE is
    the correct landing state.

  - all other codes → setErrorMode() + recovery notification, preserving
    the existing operator-facing surface for genuine capture failures
    (codec-unsupported, wrong-display-surface, capture-failed, etc.).

Closes the operator-lockout regression observed in Plan 01-09 Task 5
empirical UAT: after Chrome's "Stop sharing" banner click, the badge
stayed yellow and the popup pinned to SAVE-only, gating
chrome.action.onClicked behind the popup forever. Operator had no
restart path. With IDLE routing, the popup empties and the toolbar
click fires startVideoCapture as designed.

Tests: 83/83 GREEN (was 81; +2 from Tests E+F). tsc clean. Build exit 0.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 16:49:39 +02:00
..