114 lines
7.3 KiB
Markdown
114 lines
7.3 KiB
Markdown
# Decision Log — Video View Manager PRD
|
||
|
||
**Workspace:** `_bmad-output/planning-artifacts/prds/prd-video-view-manager-2026-05-19/`
|
||
**Created:** 2026-05-19
|
||
**Author:** Morr
|
||
|
||
---
|
||
|
||
## Decisions
|
||
|
||
### D-1 — PRD scope: full vision with roadmap
|
||
**Date:** 2026-05-19
|
||
**Decision:** PRD covers full product vision across all 3 priority tiers. v1.0 = Day 1 + Week 1–2 features (FR-1 through FR-26). Later-tier features are documented in §10 as a roadmap, not as FRs.
|
||
**Rationale:** User selected "Full vision PRD" during working mode selection.
|
||
**Status:** Captured in §10 Product Roadmap.
|
||
|
||
### D-2 — WebRTC track disabling preferred
|
||
**Date:** 2026-05-19
|
||
**Decision:** Real WebRTC track disabling is the preferred visibility implementation. CSS/DOM cosmetic hiding is the fallback. The choice is surfaced at runtime via a module config flag.
|
||
**Rationale:** User selected "Real WebRTC track disabling preferred" during working mode selection.
|
||
**Status:** Captured in FR-7. OQ-1 is the open research question to confirm feasibility.
|
||
|
||
### D-3 — FoundryVTT v14 minimum; no v13 backport
|
||
**Date:** 2026-05-19
|
||
**Decision:** Module targets FoundryVTT v14+ exclusively. No v13 compatibility.
|
||
**Rationale:** User selected "v14 only" during working mode selection.
|
||
**Status:** Captured in §5 Non-Goals and §6 MVP Scope.
|
||
|
||
### D-4 — Public community release (Foundry Hub)
|
||
**Date:** 2026-05-19
|
||
**Decision:** Module is intended for public listing on Foundry Hub / FoundryVTT package repository. PRD rigor calibrated to medium stakes (public community release).
|
||
**Rationale:** User selected "Public FoundryVTT module release" during stakes calibration.
|
||
**Status:** Informs Success Metrics (SM-1, SM-2) and Cross-Cutting NFRs (compatibility, privacy).
|
||
|
||
### D-5 — Progressive Enhancement Architecture as structural principle
|
||
**Date:** 2026-05-19
|
||
**Decision:** The module's UI and feature set is organized around 3 levels: Level 1 (right-click, zero new UI), Level 2 (Director's Board popout), Level 3 (Scene Presets + automation). Features are additive; Level 1 alone is a shippable product.
|
||
**Rationale:** From brainstorming SCAMPER-E result (#13). Confirmed as the structural model for §4 Features.
|
||
**Status:** Captured in feature descriptions for §4.1, §4.2, §4.3.
|
||
|
||
### D-6 — Seating chart metaphor for Director's Board
|
||
**Date:** 2026-05-19
|
||
**Decision:** The Director's Board uses a spatial seating chart layout, not a list or grid of raw settings.
|
||
**Rationale:** From brainstorming SCAMPER-S insight. Reinforced by Role Playing Persona 4 (Alex).
|
||
**Status:** Captured in FR-10.
|
||
|
||
### D-7 — Reaction Cam is opt-in at the player level
|
||
**Date:** 2026-05-19
|
||
**Decision:** Any automation that auto-spotlights a player's face (Reaction Cam, Combat Cinematics Mode) requires explicit player opt-in (or alternatively opt-out via Privacy Panel). The opt-out flag (FR-24) is included in v1.0 even though the Reaction Cam itself is a Later feature.
|
||
**Rationale:** Privacy tension between Marcus (GM) and Sofia (player) resolved in Role Playing phase: "Reaction cam opt-in resolved the Marcus/Sofia privacy tension elegantly."
|
||
**Status:** Captured in FR-24. Opt-out scaffolding ships in v1.0 to avoid a breaking change when Reaction Cam is released.
|
||
|
||
### D-8 — i18n string keys in v1.0; English strings only at ship
|
||
**Date:** 2026-05-19
|
||
**Decision:** All UI strings are externalized to i18n key files in v1.0 (enabling community translation contributions), but only English strings ship at the initial release.
|
||
**Rationale:** Standard FoundryVTT module convention. Community translation is a common contribution pattern in the ecosystem.
|
||
**Status:** Captured in §6.1 MVP Scope.
|
||
|
||
### D-11 — GM sees all activated feeds; own self-view is configurable
|
||
**Date:** 2026-05-19
|
||
**Decision:** The GM always sees all activated player webcams. The GM's own feed visibility in their own view is a configurable module setting ("Show my own feed to myself", default ON).
|
||
**Rationale:** User answer to OQ-3: "All activated webcam of players + himself as an option."
|
||
**Status:** Captured in FR-6. OQ-3 closed.
|
||
|
||
### D-12 — Native WebRTC only for v1.0; non-native AV backends deferred
|
||
**Date:** 2026-05-19
|
||
**Decision:** Only FoundryVTT's native WebRTC AV backend is supported in v1.0. Jitsi Meeting Server and other backends are not in scope.
|
||
**Rationale:** User answer to OQ-4: "Not planned in first steps, maybe later."
|
||
**Status:** Captured in §5 Non-Goals. OQ-4 closed; deferred to Later roadmap.
|
||
|
||
### D-9 — Native FoundryVTT socket API for state broadcast
|
||
**Date:** 2026-05-19
|
||
**Decision:** Visibility Matrix changes are broadcast via the native FoundryVTT socket API using a registered module event name. `socketlib` will not be added as a dependency.
|
||
**Rationale:** User confirmed: "Native Foundry socket API."
|
||
**Status:** Captured in FR-2 and §9 Assumptions Index. OQ-2 closed.
|
||
|
||
### D-10 — WebRTC track disable feasibility deferred to API inspection
|
||
**Date:** 2026-05-19
|
||
**Decision:** Whether real WebRTC track disabling is feasible will be determined by inspecting the FoundryVTT v14 AV API during development. CSS/DOM cosmetic hiding remains the safe default until confirmed.
|
||
**Rationale:** User confirmed: "Not sure, to be checked with the API itself." OQ-1 remains open but is unblocking — CSS fallback ships regardless.
|
||
**Status:** OQ-1 downgraded from hard phase blocker to development-time research item. FR-7 unchanged.
|
||
|
||
| OQ | Phase Blocker? | Status |
|
||
|---|---|---|
|
||
| OQ-1: WebRTC track disable API access | Yes | Open — to be checked against v14 API during development; CSS fallback is safe default |
|
||
| OQ-2: socketlib vs native socket API | Yes | **RESOLVED** — native FoundryVTT socket API |
|
||
| OQ-3: GM own-feed hidden behavior | No | **RESOLVED** — GM always sees all activated feeds; own self-view is a configurable option |
|
||
| OQ-4: Non-native AV backend support | No | **RESOLVED** — native WebRTC only for v1.0; others deferred to Later roadmap |
|
||
| OQ-5: Scene hook timing | No | Deferred — not a concern for first implementation stage |
|
||
| OQ-6: Partial vs full preset application | No | Open — to be resolved during FR-15/FR-16 implementation |
|
||
|
||
### D-13 — Reaction Cam / automation effects are opt-in (not opt-out)
|
||
**Date:** 2026-05-19
|
||
**Decision:** Any automation feature that auto-spotlights or visually modifies a player's feed requires explicit player opt-in. Default state is OFF.
|
||
**Rationale:** Reconciliation found the PRD had silently inverted the brainstorming's model. User confirmed opt-in is correct.
|
||
**Status:** FR-24, FR-25, and §4.5 description updated.
|
||
|
||
### D-14 — Director's Board supports both setup and live-monitor modes
|
||
**Date:** 2026-05-19
|
||
**Decision:** The Director's Board is valid as a pre-session setup tool and as a live monitor kept open during play. Both modes are explicitly supported.
|
||
**Rationale:** User confirmed both modes valid.
|
||
**Status:** FR-9 updated.
|
||
|
||
### D-15 — GM override guarantee as cross-cutting rule
|
||
**Date:** 2026-05-19
|
||
**Decision:** Every automation feature must expose a one-click GM override. Director's Board "Hide All" is the universal panic path.
|
||
**Rationale:** From brainstorming "panic button" + Marcus persona. Elevated to cross-cutting design rule.
|
||
**Status:** Added to Cross-Cutting NFRs.
|
||
|
||
### D-16 — PRD finalized
|
||
**Date:** 2026-05-19
|
||
**Decision:** PRD marked `status: final`. All decisions captured, all reconciliation gaps resolved, all [ASSUMPTION] tags indexed, polish complete.
|
||
**Status:** Closed.
|