|
| 1 | +# About And Teleprompter Fidelity Plan |
| 2 | + |
| 3 | +## Task Goal |
| 4 | + |
| 5 | +Remove invented hardcoded About content, replace it with factual Managed Code attribution and official links, then bring the teleprompter reading experience in line with `new-design/teleprompter.html` and the TPS specification so playback is visually smooth, timing-aware, and fully covered by automated tests. |
| 6 | + |
| 7 | +## Scope |
| 8 | + |
| 9 | +### In Scope |
| 10 | + |
| 11 | +- Update the Settings About section so it no longer shows invented people and instead shows factual Managed Code ownership plus official links, including GitHub. |
| 12 | +- Tighten teleprompter rendering and playback so active reading does not visibly jump while words/cards advance. |
| 13 | +- Make teleprompter controls materially more visible during use while staying aligned with the design direction. |
| 14 | +- Extend teleprompter rendering to reflect the TPS cues already produced by the compiler, including color, emotion, highlight, pronunciation cues, and speed-sensitive visual spacing. |
| 15 | +- Add or update bUnit and Playwright coverage for About and teleprompter fidelity, including at least one end-to-end teleprompter scenario. |
| 16 | +- Run build and relevant verification, then format, commit, and push. |
| 17 | + |
| 18 | +### Out Of Scope |
| 19 | + |
| 20 | +- Changing TPS parsing rules in `PrompterLive.Core` unless a concrete renderer gap requires a narrowly scoped compatibility fix. |
| 21 | +- Redesigning routes or app shell behavior outside Settings/About and Teleprompter. |
| 22 | +- Adding a backend or changing runtime hosting shape. |
| 23 | + |
| 24 | +## Constraints And Risks |
| 25 | + |
| 26 | +- `new-design/teleprompter.html` remains the visual reference; parity work should preserve its structure and interaction tone. |
| 27 | +- Browser UI tests are the primary acceptance gate; teleprompter changes are not done until real-browser checks pass. |
| 28 | +- The UI suite must run in a single `dotnet test` process and not overlap with other build/test commands. |
| 29 | +- `About` must stay factual: no invented team members or stale attribution. |
| 30 | +- Teleprompter smoothing must not create delayed input, unreadable word spacing, or layout churn from width-changing state changes. |
| 31 | +- Files should stay within maintainability limits; if teleprompter logic needs more space, split it into focused partials/helpers instead of growing a large file further. |
| 32 | + |
| 33 | +## Testing Methodology |
| 34 | + |
| 35 | +- Use bUnit to verify About content contracts and teleprompter rendered markup/state mappings for TPS styling classes and metadata-driven output. |
| 36 | +- Use Playwright UI tests to verify real browser playback, focal alignment, control visibility, timing continuity, and a full teleprompter scenario with screenshots under `output/playwright/`. |
| 37 | +- Validate both static fidelity and dynamic behavior: |
| 38 | + - About shows factual Managed Code attribution and official links. |
| 39 | + - Teleprompter words preserve TPS-driven styling and pacing hints. |
| 40 | + - Playback advances without vertical jump artifacts on active text. |
| 41 | + - Card transitions stay smooth and time/progress continue advancing. |
| 42 | + - Controls remain visibly usable against live camera/gradient backgrounds. |
| 43 | +- Quality bar: |
| 44 | + - No teleprompter regression in relevant bUnit coverage. |
| 45 | + - Relevant Playwright teleprompter flows green. |
| 46 | + - Repo build green under `-warnaserror`. |
| 47 | + |
| 48 | +## Ordered Plan |
| 49 | + |
| 50 | +- [x] Step 1. Establish baseline context and failures. |
| 51 | + - Read the exact About and teleprompter implementation/test files that own this work. |
| 52 | + - Run the relevant baseline commands in order: |
| 53 | + - `dotnet build /Users/ksemenenko/Developer/PrompterLive/PrompterLive.slnx -warnaserror` |
| 54 | + - `dotnet test /Users/ksemenenko/Developer/PrompterLive/tests/PrompterLive.App.Tests/PrompterLive.App.Tests.csproj` |
| 55 | + - `dotnet test /Users/ksemenenko/Developer/PrompterLive/tests/PrompterLive.App.UITests/PrompterLive.App.UITests.csproj --no-build` |
| 56 | + - Verification before moving on: |
| 57 | + - Record every failing test and symptom below. |
| 58 | + - Confirm whether teleprompter failures reproduce before code changes. |
| 59 | + |
| 60 | +- [x] Step 2. Replace hardcoded About content with factual Managed Code metadata. |
| 61 | + - Update `src/PrompterLive.Shared/Settings/Components/SettingsAboutSection.razor` and its code-behind to remove invented people and add factual company attribution plus official links, including GitHub. |
| 62 | + - Keep the section visually aligned with Settings design patterns and preserve existing test ids or add stable new ones if needed. |
| 63 | + - Verification before moving on: |
| 64 | + - Add/update bUnit assertions in `tests/PrompterLive.App.Tests/Settings/SettingsInteractionTests.cs`. |
| 65 | + - Confirm no stale invented names remain via targeted search. |
| 66 | + |
| 67 | +- [x] Step 3. Expand teleprompter word rendering to honor TPS visual cues. |
| 68 | + - Update teleprompter reader models/rendering so words expose the cues already emitted by `ScriptCompiler`, including stronger distinctions for emphasis/highlight, pronunciation/tooltips, emotion/color mappings, and speed-sensitive spacing. |
| 69 | + - Keep speed-based letter spacing bounded so words never become mush or split into visually disconnected letters. |
| 70 | + - Verification before moving on: |
| 71 | + - Add/update bUnit tests under `tests/PrompterLive.App.Tests/Teleprompter/`. |
| 72 | + - Use TPS-backed sample scripts to prove slow/fast/xslow/xfast, highlight, pronunciation, and emotion styling render as expected. |
| 73 | + |
| 74 | +- [x] Step 4. Remove teleprompter playback jumpiness and align transitions with the design. |
| 75 | + - Refine reader alignment/transition logic and any supporting browser interop so active-word tracking and card transitions stay smooth during playback. |
| 76 | + - Match the intended movement profile from `new-design/teleprompter.html` while avoiding text jumps during per-word advancement. |
| 77 | + - Verification before moving on: |
| 78 | + - Add/update Playwright assertions for continuity and alignment. |
| 79 | + - Capture a teleprompter scenario screenshot artifact under `output/playwright/`. |
| 80 | + |
| 81 | +- [x] Step 5. Make teleprompter controls visibly usable. |
| 82 | + - Update the relevant reader CSS modules so sliders, edge info, and control bar stay visible enough against the background instead of fading into near-invisibility. |
| 83 | + - Keep the visual language aligned with the design reference while improving usability. |
| 84 | + - Verification before moving on: |
| 85 | + - Add/update browser checks that confirm control opacity/visibility at runtime. |
| 86 | + |
| 87 | +- [x] Step 6. Add a full teleprompter browser scenario. |
| 88 | + - Add or extend a real Playwright scenario that opens a TPS-backed teleprompter script, starts playback, verifies styling/timing/progress/controls, and saves screenshots. |
| 89 | + - Verification before moving on: |
| 90 | + - Scenario passes in the browser suite. |
| 91 | + - Screenshot artifacts are written under `output/playwright/`. |
| 92 | + |
| 93 | +- [x] Step 7. Run final validation and ship. |
| 94 | + - Run the required verification in order: |
| 95 | + - `dotnet build /Users/ksemenenko/Developer/PrompterLive/PrompterLive.slnx -warnaserror` |
| 96 | + - `dotnet test /Users/ksemenenko/Developer/PrompterLive/tests/PrompterLive.App.Tests/PrompterLive.App.Tests.csproj` |
| 97 | + - `dotnet test /Users/ksemenenko/Developer/PrompterLive/tests/PrompterLive.App.UITests/PrompterLive.App.UITests.csproj --no-build` |
| 98 | + - `dotnet test /Users/ksemenenko/Developer/PrompterLive/PrompterLive.slnx` |
| 99 | + - `dotnet format /Users/ksemenenko/Developer/PrompterLive/PrompterLive.slnx` |
| 100 | + - If green, commit with a focused message and push the current branch. |
| 101 | + - Verification before moving on: |
| 102 | + - All planned checklist items are complete. |
| 103 | + - Working tree is clean except for intentional artifacts, if any. |
| 104 | + |
| 105 | +## Baseline Failures |
| 106 | + |
| 107 | +- [x] No pre-existing baseline failures in the relevant build, bUnit, or UI suites. |
| 108 | + - Build: `dotnet build /Users/ksemenenko/Developer/PrompterLive/PrompterLive.slnx -warnaserror` passed. |
| 109 | + - bUnit: `dotnet test /Users/ksemenenko/Developer/PrompterLive/tests/PrompterLive.App.Tests/PrompterLive.App.Tests.csproj` passed with `94/94`. |
| 110 | + - UI: `dotnet test /Users/ksemenenko/Developer/PrompterLive/tests/PrompterLive.App.UITests/PrompterLive.App.UITests.csproj --no-build` passed with `75/75`. |
| 111 | + - Root-cause note: current repo baseline is green; this task will add targeted regression coverage for the requested About and teleprompter behavior. |
| 112 | + - Fix status: no inherited failures to clear before implementation. |
| 113 | + |
| 114 | +## Intended Fix Tracking |
| 115 | + |
| 116 | +- [x] About invented team content removed and replaced with factual Managed Code attribution. |
| 117 | +- [x] Teleprompter TPS styling parity expanded beyond the current reduced class mapping. |
| 118 | +- [x] Teleprompter playback jumpiness eliminated or reduced to non-visible smooth motion. |
| 119 | +- [x] Teleprompter controls made clearly visible during live use. |
| 120 | +- [x] Full teleprompter browser scenario added or extended with screenshot artifacts. |
| 121 | + |
| 122 | +## Final Validation Skills |
| 123 | + |
| 124 | +- `dotnet` |
| 125 | + - Reason: enforce repo-compatible build, test, and format commands for this Blazor/.NET solution. |
| 126 | + - Expected outcome: green build/test/format evidence aligned with `AGENTS.md`. |
| 127 | + |
| 128 | +- `playwright` |
| 129 | + - Reason: validate teleprompter behavior in a real browser and capture screenshot artifacts for the changed flow. |
| 130 | + - Expected outcome: passing teleprompter scenario coverage with browser-realistic evidence. |
| 131 | + |
| 132 | +## Final Validation Results |
| 133 | + |
| 134 | +- `dotnet build /Users/ksemenenko/Developer/PrompterLive/PrompterLive.slnx -warnaserror` |
| 135 | + - Result: passed after implementation and again after formatting. |
| 136 | +- `dotnet test /Users/ksemenenko/Developer/PrompterLive/tests/PrompterLive.Core.Tests/PrompterLive.Core.Tests.csproj` |
| 137 | + - Result: passed with `34/34`. |
| 138 | +- `dotnet test /Users/ksemenenko/Developer/PrompterLive/tests/PrompterLive.App.Tests/PrompterLive.App.Tests.csproj` |
| 139 | + - Result: passed with `95/95`. |
| 140 | +- `dotnet test /Users/ksemenenko/Developer/PrompterLive/tests/PrompterLive.App.UITests/PrompterLive.App.UITests.csproj --no-build` |
| 141 | + - Result: passed with `76/76`. |
| 142 | +- `dotnet test /Users/ksemenenko/Developer/PrompterLive/PrompterLive.slnx` |
| 143 | + - Result: passed for the full solution. |
| 144 | +- `dotnet test /Users/ksemenenko/Developer/PrompterLive/PrompterLive.slnx --collect:"XPlat Code Coverage"` |
| 145 | + - Result: passed for the full solution with coverage artifacts emitted for Core, App, and UI suites. |
| 146 | +- `dotnet format /Users/ksemenenko/Developer/PrompterLive/PrompterLive.slnx` |
| 147 | + - Result: passed. |
| 148 | + |
| 149 | +## Notes |
| 150 | + |
| 151 | +- `About` now uses only Managed Code and PrompterLive official links and removes invented roster content from both production UI and the design reference. |
| 152 | +- Teleprompter playback now pre-centers upcoming content before card activation to avoid visible jump on live reading transitions. |
| 153 | +- TPS shorthand inline speed tags like `[180WPM]...[/180WPM]` are now preserved by the compiler so reader timing matches TPS input. |
| 154 | +- End-to-end browser evidence includes the teleprompter full-flow screenshots under `output/playwright/teleprompter-product-launch/`. |
0 commit comments