Repository navigation
Caption colour picker, WebView2 message, packaging spec (T3.5 / T3.2 / T2.6) - #504
Merged
Merged
Conversation
…T3.5/T3.2/T2.6) #476 (partial): the caption TEXT colour gets the picker the Tiles fields got, same projection shape — the hex string stays the source of truth. A caption composites into PROGRAM, so its colour is a real on-air decision. OverlaysViewModel's private ParseHexColorOrDefault now delegates to the shared Services/HexColor extracted in #501, rather than keeping a second copy of "what does #GGG mean" alive next to it. #440 (T3.2): a browser source whose host died reported "browser host exited (code 3)" and showed a stalled tile. Exit 3 means the Evergreen WebView2 Runtime is missing or could not start, which is the one thing a tester on a machine we cannot see can act on. modules/BrowserHostExitMessage.h is the ONE place that code becomes English — the same rule ZoomJoinFailureMessage.h follows — and an UNKNOWN code keeps its number rather than being flattened into a generic sentence that says nothing. #438 (T2.6): the beta engineering spec recommended signed MSIX + App Installer and named a signed EXE installer only as the fallback "if MSIX fights us". The fallback is what was built (#417) and every beta since has shipped NSIS, so reading that section as current sent you to a route nothing uses. The reconciliation records what the change COST, which is the part worth keeping: MSIX would have given install + auto-update from one hosted .appinstaller file, so auto-update is now unbuilt rather than nearly free, and the installer had to grow by hand the things MSIX does for free (T2.7/#474). The status table's packaging row is corrected the same way, including that the installer cannot enable WER dumps because that key is HKLM-only. NOT DONE, deliberately, and worth reading: the per-layer "Border color" control in the Sources layer editor is VESTIGIAL. buildRenderPlanForScene hard-forces layer.borderStyle="none" and borderThickness=0 on every route layer, so the core discards whatever it is set to. Adding a colour picker there would have made a dead control look more capable. CLAUDE.md claims that editor has no border controls; it does. Filed rather than decorated. 915 native, 2224 MediaCore, 1465 WinUI tests pass. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014yuH7EMvWCWdkhvevrtMyJ
iamfatness
added a commit
that referenced
this pull request
Sep 12, 2026
Nine items closed and two partial, all shipped in beta-2026-09-12-e1223d3 and none of them live-checked: T1.12 #475 join-time prompts answered #493 T1.13 #473 media decoder failures are loud #494 (observability ONLY) T2.6 #438 packaging spec reconciled #504 T2.7 #474 one shortcut, uninstall cleans up #497 T2.8 #469 recordings resolve absolute #496 T2.9 #466 recording lifecycle survives a stream #499 T2.10 #468 sender health stops lying #499 T3.2 #440 WebView2 message #504 T3.7 #470 ISOs armed with capture off warn #502 T3.8 #482 ISO frames conform to the writer #503 T2.1 #433 PARTIAL — WER dumps are HKLM-only T3.5 #476 PARTIAL — the rest is a product call Each row keeps the thing that is expensive to rediscover rather than just a tick: T2.8 records that the issue's premise was wrong (the default was already absolute; a persisted relative preference bypassed it), T3.8 records that its end-to-end test is a guard which passes either way, T2.6 records that dropping MSIX cost auto-update, and T2.1 records the measurement proving a per-user installer cannot enable crash dumps. Tier 1 now has ONE open item, and it is waiting on a decision rather than effort: T1.11 step 1 needs a change to the Take path itself, because a plain cut never captures the outgoing scene. That is written into the row so the next session does not rediscover it and ship it blind. Two entries came out of the work rather than the list: #505 (the per-layer border controls are vestigial — the core forces borderStyle="none" on every route layer, so they cannot do anything) and the T1.11 ruling. The honest header: the binding constraint is now T0.1 and a live check, not engineering capacity. Claude-Session: https://claude.ai/code/session_014yuH7EMvWCWdkhvevrtMyJ Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three small items in one pass. Closes #440 and #438; leaves #476 open — see the last section.
#476 (partial) — caption text colour picker
The caption text colour gets the picker the Tiles fields got in #501, same projection shape: the hex string stays the source of truth, so there's no second copy to drift.
A caption composites into Program, so its colour is a real on-air decision rather than a preference.
OverlaysViewModel's privateParseHexColorOrDefaultnow delegates to the sharedServices/HexColorextracted in #501, instead of keeping a second copy of "what does #GGG mean" alive right next to it.#440 (T3.2) — say what a dead browser source needs
A browser source whose host died reported
browser host exited (code 3)and showed a stalled tile. Exit 3 means the Evergreen WebView2 Runtime is missing or couldn't start — the one thing a tester on a machine we can't see is able to act on.modules/BrowserHostExitMessage.his the one place that code becomes English, the same ruleZoomJoinFailureMessage.hfollows. An unknown code keeps its number rather than being flattened into a generic sentence that says nothing.#438 (T2.6) — the packaging spec described a route nothing uses
The spec recommended signed MSIX + App Installer, and named a signed EXE installer only as the fallback "if MSIX fights us on a reference config". The fallback is what was built (#417), and every beta since has shipped NSIS. Reading that section as current sent you to a packaging route nothing calls.
The reconciliation records what the change cost, which is the part worth keeping:
.appinstallerfile — that's why it was preferred. So auto-update is now unbuilt rather than nearly free; it's the D4 in-app version check or nothing.The status table's packaging row is corrected the same way, including that the installer can't enable WER dumps because that key is HKLM-only.
Not done, deliberately — and worth your attention
The issue's table lists a per-layer colour field in the Sources layer editor. I went to add a picker and found the control is vestigial:
buildRenderPlanForScenehard-forceslayer.borderStyle = "none"andborderThickness = 0on every route layer, so the core discards whatever it's set to.Adding a colour picker there would have made a dead control look more capable. CLAUDE.md also states that editor "has no border controls" — it does, at
SourcesPage.xaml:507-518, so the doc is stale about it too.That's a product call, not a code one: remove the dead controls, or make them do something. #476 stays open for it.
Verification
915 native, 2,224 MediaCore, 1,465 WinUI — 0 failures.
How to check: the caption picker on the Overlays page (type a hex, watch the swatch; pick a colour, watch the hex). The WebView2 message needs a machine without the runtime, which yours has — so that one is covered by tests only.
🤖 Generated with Claude Code
https://claude.ai/code/session_014yuH7EMvWCWdkhvevrtMyJ