fix(control-ui): apply seamColor bootstrap config#93699
Conversation
|
Codex review: needs maintainer review before merge. Reviewed June 21, 2026, 11:17 PM ET / 03:17 UTC. Summary PR surface: Source +55, Tests +101. Total +156 across 5 files. Reproducibility: yes. Source inspection on current main shows Review metrics: 1 noteworthy metric.
Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Mantis proof suggestion Next step before merge
Security Review detailsBest possible solution: Land this focused bootstrap/frontend wiring after maintainer review and normal merge gates, then let #56068 close when the fix merges. Do we have a high-confidence way to reproduce the issue? Yes. Source inspection on current main shows Is this the best way to solve the issue? Yes. The existing authenticated bootstrap endpoint is the narrow owner boundary for early Control UI runtime settings, and using it is cleaner than adding a second frontend AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against a1828110704f. Label changesLabel justifications:
Evidence reviewedPR surface: Source +55, Tests +101. Total +156 across 5 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
Summary
What problem does this PR solve?
ui.seamColorconfig value into the Control UI bootstrap payload.Why does this matter now?
ui.seamColorthroughtalk.config, but the Control UI path ignored it.What is the intended outcome?
ui.seamColorchanges Control UI accent styling through the existing bootstrap config path.What is intentionally out of scope?
What does success look like?
/control-ui-config.jsonincludesseamColorwhen configured.What should reviewers focus on?
Linked context
Which issue does this close?
Closes #56068
Which issues, PRs, or discussions are related?
Related #84599
Was this requested by a maintainer or owner?
No direct maintainer request. ClawSweeper marked #56068 as source-reproducible, queueable, and fix-shape-clear.
Real behavior proof (required for external PRs)
ui.seamColorwas accepted by config and exposed throughtalk.config, but the Control UI bootstrap JSON and browser loader did not carry or apply it.handleControlUiHttpRequestwithui.seamColor: "#1A2b3C", then fetched/control-ui-config.json.{"status":200,"seamColor":"#1A2b3C","assistantName":"Proof","assistantAvatar":"P"}seamColor, which gives the browser loader a valid server-provided accent color to apply.pnpm check, fullpnpm test, and a manual browser screenshot from a long-running packaged gateway.ControlUiBootstrapConfig, the bootstrap JSON payload, andloadControlUiBootstrapConfighad noseamColorfield/application path.Tests and validation
Which commands did you run?
node scripts/run-vitest.mjs ui/src/ui/controllers/control-ui-bootstrap.test.tsnode scripts/run-vitest.mjs src/gateway/control-ui.http.test.tsnode scripts/run-vitest.mjs src/gateway/server.talk-config.test.ts src/config/config-misc.test.ts./node_modules/.bin/oxfmt --check --threads=1 src/gateway/control-ui-contract.ts src/gateway/control-ui.ts src/gateway/control-ui.http.test.ts ui/src/ui/controllers/control-ui-bootstrap.ts ui/src/ui/controllers/control-ui-bootstrap.test.tsnode scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json src/gateway/control-ui-contract.ts src/gateway/control-ui.ts src/gateway/control-ui.http.test.ts ui/src/ui/controllers/control-ui-bootstrap.ts ui/src/ui/controllers/control-ui-bootstrap.test.tsOPENCLAW_BUILD_ALL_NO_PNPM=1 node scripts/build-all.mjs qaRuntimeOPENCLAW_BUILD_ALL_NO_PNPM=1 node scripts/ui.js buildWhat regression coverage was added or updated?
ui.seamColoris included in the JSON payload.What failed before this fix, if known?
seamColor, and the frontend loader had no CSS variable application path.If no test was added, why not?
Risk checklist
Did user-visible behavior change? (
Yes/No)Yes. Configured
ui.seamColornow affects Control UI accent styling.Did config, environment, or migration behavior change? (
Yes/No)No. This uses the existing validated
ui.seamColorconfig key.Did security, auth, secrets, network, or tool execution behavior change? (
Yes/No)No. This adds a non-secret theme color to the existing Control UI bootstrap payload.
What is the highest-risk area?
The highest-risk area is overriding theme CSS variables too broadly or leaving stale inline variables after the server stops sending a valid color.
How is that risk mitigated?
The loader accepts only 6-digit hex colors, sets a bounded list of accent variables, and removes that same list when the value is invalid or absent. Focused tests cover both apply and cleanup paths.
Current review state
What is the next action?
Ready for maintainer review after GitHub checks finish.
What is still waiting on author, maintainer, CI, or external proof?
Waiting on GitHub CI and maintainer review. A manual browser screenshot can be added if reviewers want visual proof beyond the local HTTP/bootstrap and browser-loader evidence.
Which bot or reviewer comments were addressed?
The PR body now includes copied live output in the Real behavior proof section so the proof gate can evaluate after-fix evidence from the PR description.