Repository navigation
Stop lower-third secondary line refreshing to inconsistent Guest text #592
Description
Activity
2026-09-28 diagnosis against
main6443c81fbefore changing code: the Zoom engine roster emits canonicalHost/Guest;LiveProductionSync.MapRawParticipantscarries complete title/role strings;UpdateProgramLowerThirdKeybuilds a complete immutableLowerThirdKeyState; the sync command carries SourceName/Title/Org together; nativesetOverlayAssetupdates under the core command/render mutex; DirectWrite finishes a full texture before cache publication. Existing tests cover stable on-air key phase and content signatures. These facts do not yet identify which stage produced the reported one-characterg.The old launch log records source key transitions but not the resolved title, raster signature, or the affected frame. There is no captured failing frame sequence for this report. A speculative casing or animation change would not meet the issue's done condition. Next diagnostic capture needs one actual incident's roster Title/Role, serialized key Title/Org, native overlay content signature, and Program frame IDs on the same timeline. Installed visual acceptance remains
MISSING_EVIDENCE; leaving #592 open while other owner-dispatched work proceeds.Development follow-up: #593 is implemented separately in draft #845. It adds explicit source default/custom/hidden secondary text and an atomic editor Apply, but is not evidence that this fragment's cause is fixed.
Against the current installed grading/framer native Release baseline (34b0afc), six LowerThird-filtered native tests and the D3D11 overlay cache reuse/invalidation test pass. The initial multi-pattern filter produced zero tests because this repository's small test runner does not implement colon-separated GoogleTest filters; it was rerun as supported separate filters. These results cover animation/display-tick ownership, first-frame source suppression, configured timing, settled build-out and native overlay raster behavior. They do not reproduce the reported lowercase fragment or provide its required frame sequence.
Code inspection: same-target settled shell keys refresh in place; the native raster draws complete strings into an offscreen texture, rather than revealing one character per refresh. Neither observation rules out metadata or animation-state changes in the live report. The next qualification needs synchronized source metadata, shell key/phase changes, native overlay state, and actual output frames around the event. Root cause remains unconfirmed; issue stays open.
Confirmed the owner's test-meeting reproduction on installed beta 34b0afc. The same source's native overlay title switched guest -> Guest -> guest while raw Zoom role stayed Guest and its title stayed absent. Lowercase spine roles and display-cased SDK roles are copied into fallback titles by the same mapper. PR #846 normalizes that boundary and preserves authored text.
Installed-path comparison: patched library yielded Guest in all 243 observations / 50 seconds with a 45-second webcam capture. Restoring the original library reproduced the changes: 150 guest / 21 Guest observations / 35 seconds, with a 30-second webcam capture. Original installed library restored with matching hash, test meeting left, app closed. 2,357 MediaCore tests pass; nine new regression cases.
Issue remains open: the casing root cause is established and the fix is in draft, but the broader partial-glyph/per-frame recording and streaming acceptance has not been completed. Evidence and scope: docs/qa/lower-third-casing-2026-10-09.md in PR #846.
- added a commit that references this issue
on Oct 10, 2026
Owner report
The lower third renders, but its second line (“Guest”) refreshes while on air and sometimes briefly shows a lowercase “g”. This is visible output.
Current evidence
StudioViewModel.ResolveProgramLowerThirdSourcefalls back from participant Title to RoleLabel. Same-source lower-third state can refresh. The source of the partial text or repeated update has not yet been established.Done when