# Story 5.1: Full AV Replacement with WebRTC Stream Access **Status:** ready-for-dev **Epic:** 5 - Full AV Replacement **Story Key:** 5-1-full-av-replacement **Created:** 2026-05-26 **Last Updated:** 2026-05-26 --- ## Story Header | Field | Value | |-------|-------| | **Epic** | 5 - Full AV Replacement | | **Story ID** | 5.1 | | **Story Key** | 5-1-full-av-replacement | | **Title** | Full AV Replacement with WebRTC Stream Access | | **Status** | ready-for-dev | | **Priority** | High | | **Assigned Agent** | DEV (Mistral Vibe / Morr) | | **Created** | 2026-05-26 | | **Last Updated** | 2026-05-26 | --- ## ๐Ÿ“‹ Story Requirements ### User Story **As a** GM using Video View Manager, **I want to** completely replace Foundry's AV dock with my own video view using actual WebRTC streams, **So that** I have full control over the AV display and can implement custom camera management features. ### Persona Alignment - **Primary:** GM (Marcus, Jake) - Needs full control over AV display for advanced camera management - **Secondary:** Players - Benefit from consistent, module-controlled video experience ### Acceptance Criteria (BDD Format) #### AC-1: Full AV Dock Replacement **Given** the Video View Manager module is active **When** WebRTC stream access is available (`getMediaStreamForUser` exists) **Then** Foundry's native AV dock (`#av`) is completely hidden **And** Foundry's camera views (`.camera-view`) are completely hidden **And** The Scrying Pool Strip displays video feeds instead #### AC-2: WebRTC Stream Access Detection **Given** `game.webrtc.client.getMediaStreamForUser()` is available **When** the module probes WebRTC capability **Then** `probeCapability()` returns `'stream-access'` **And** `buildWebRTCSurface()` creates a surface with all WebRTC client methods #### AC-3: Video Element Creation **Given** stream access mode is active **When** a participant joins the session **Then** a `