Control Surface UX: pill toggle, background rename, per-scene properties
- Sliding pill toggle (green ON / red OFF) replaces checkbox - Geometry mismatch error for custom backgrounds - Backdrop -> Background: C# rename, SQL column rename with migration - Source.IsBackground: new -> override (fixes WPF binding) - Legacy 'Backdrop' display name migrated to 'Background' - Per-scene UseDefaultBackground + CustomBackgroundPath - Asset files renamed backdrop -> background - StagedScene/LiveScene split, thumbnail strip, edit gating - TransitionService (Cut/Fade/Move) - Context menu: Capture Desktop, Refresh Desktop - Resolution badge removed, ON-AIR status light added
This commit is contained in:
@@ -954,39 +954,21 @@ The tasks below are ordered by dependency and risk. Each task builds on the prev
|
||||
|
||||
1. ✅ **TASK 9.4** — Live chat (right panel) — wire `YouTubeChatService.Start()`, parse messages, render in panel. Foundation for chat box source.
|
||||
2. ✅ **TASK 3.18** — Chat box source — renders chat ON the stream. Depends on TASK 9.4 (same message parsing).
|
||||
3. ✅ **TASK 10** — Polar billing — license key entry + watermark toggle + Velopack auto-updates (steps 1–7 shipped; Velopack update URL pending).
|
||||
4. **TASK 20** — Hotkeys — global keyboard shortcuts. Small scope, huge UX impact.
|
||||
5. **TASK 19** — Scene transitions — Cut/Fade/Move/Custom. Depends on compositor.
|
||||
3. ✅ **TASK 10** — Polar billing — license key entry + watermark toggle + Velopack auto-updates (steps 1-7 shipped; Velopack update URL pending).
|
||||
4. **TASK 19/23** — Control Surface UX — director's control room: thumbnails above central monitor, transitions (Cut/Fade/Move), edit mode offline only, left panel two-state (layers/props ↔ chat), right panel eliminated.
|
||||
5. **TASK 20** — Hotkeys — global keyboard shortcuts. Small scope, huge UX impact.
|
||||
6. **TASK 17** — Web source (WebView2) — enables alert ecosystem.
|
||||
7. **TASK 18** — Local recording — independent, but pairs with stream.
|
||||
8. **TASK 21** — Media source — video file playback for non-Live scenes.
|
||||
9. **TASK 22** — Audio sync offset — small, quality-of-life.
|
||||
10. **TASK 23** — Studio mode — lightweight preview before live.
|
||||
11. ✅ **TASK 15** — Stock bg images — all 5 scenes seeded (Starting, BRB, Live, Chat, Ending). `EnsureDefaultBackdrop()` runs on every scene switch.
|
||||
12. **TASK 13** — Social media launch kit — after all v1 features ship.
|
||||
10. ✅ **TASK 15** — Stock bg images — all 5 scenes seeded (Starting, BRB, Live, Chat, Ending). `EnsureDefaultBackdrop()` runs on every scene switch.
|
||||
11. **TASK 13** — Social media launch kit — after all v1 features ship.
|
||||
|
||||
---
|
||||
|
||||
## TASK 19 — Scene transitions
|
||||
## TASK 19 — Scene transitions → MERGED into TASK 19/23 (Control Surface UX)
|
||||
|
||||
**Goal:** smooth visual transitions between scenes — the four types from the design spec (Cut, Fade, Move, Custom).
|
||||
|
||||
### Status: ☐ Not started — required for v1
|
||||
|
||||
1. ☐ `TransitionType` enum: `Cut`, `Fade`, `Move`, `Custom`
|
||||
2. ☐ Global transition setting (`Cut` default, 300ms) with per-scene override
|
||||
3. ☐ `TransitionDuration` property (configurable, default 300ms)
|
||||
4. ☐ Compositor support — blend two frames during transition:
|
||||
- **Cut:** instant switch (current behavior, zero cost)
|
||||
- **Fade:** crossfade — source fades out, destination fades in
|
||||
- **Move:** simple positional transition — source slides out, destination slides in (economical)
|
||||
- **Custom:** media/stinger playback during transition (heavier, but creators pay for these)
|
||||
5. ☐ Preview shows the transition (WYSIWYG) — the preview panel renders the same blend
|
||||
6. ☐ Encoder output renders the transition too (the live stream sees it)
|
||||
7. ☐ Transition state management in MainViewModel (`_isTransitioning`, current/next scene tracking)
|
||||
8. ☐ Custom transitions: media resource loading (video file → frame sequence during transition)
|
||||
9. ☐ UI: transition type picker (dropdown or buttons), duration slider
|
||||
10. ☐ Tests: transition timing, frame blending, Cut is instant, Fade produces blended frames
|
||||
**Superseded by the Control Surface UX task.** Cut/Fade/Move transitions, thumbnails, edit mode, left panel two-state — all shipped as one cohesive feature. See the Control Surface UX section in `ai.md`.
|
||||
|
||||
### Design decisions
|
||||
|
||||
@@ -1069,24 +1051,9 @@ The tasks below are ordered by dependency and risk. Each task builds on the prev
|
||||
|
||||
---
|
||||
|
||||
## TASK 23 — Studio mode (lightweight preview)
|
||||
## TASK 23 — Studio mode → MERGED into TASK 19/23 (Control Surface UX)
|
||||
|
||||
**Goal:** preview the next scene before transitioning — lightweight version of OBS Studio Mode.
|
||||
|
||||
### Status: ☐ Not started — required for v1
|
||||
|
||||
1. ☐ "Preview" button per scene — clicking shows that scene in a preview pane without going live
|
||||
2. ☐ Preview pane — dedicated area showing the selected scene (not the current live scene)
|
||||
3. ☐ "Go" button — transitions from preview to live (applies the scene change)
|
||||
4. ☐ Transition applies when switching — if Fade is selected, the preview-to-live transition uses it
|
||||
5. ☐ Disable during live transitions — prevent rapid-fire preview switching while transitioning
|
||||
6. ☐ Tests: preview isolation, go button triggers transition, disable during transition
|
||||
|
||||
### Design decisions
|
||||
|
||||
- **Lightweight implementation** — not the full OBS dual-canvas setup. Just a "preview this scene" button + a preview pane.
|
||||
- **Optional feature** — creators can ignore it and just switch scenes directly (current behavior).
|
||||
- **Pairs with transitions** — studio mode + transitions = professional workflow. Preview the fade, then commit.
|
||||
**Superseded by the Control Surface UX task.** Studio mode is now the entire app's paradigm — the director's control surface with 5 thumbnails + central monitor. See the Control Surface UX section in `ai.md`.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user