Skip to content

Fix Win10 native chat icon fallback - #796

Merged
shanselman merged 4 commits into
mainfrom
copilot/fix-missing-button-icons
Jun 21, 2026
Merged

Fix Win10 native chat icon fallback#796
shanselman merged 4 commits into
mainfrom
copilot/fix-missing-button-icons

Conversation

Copilot AI commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

Windows 10 native chat view rendered composer/action icons as missing-glyph boxes because some controls hard-coded Segoe Fluent Icons, which is not reliably available there.

  • Icon font fallback

    • Routed native WinUI chat and A2UI icon rendering through the shared SymbolThemeFontFamily.
    • Preserves Fluent icons on newer Windows while allowing WinUI to fall back to Segoe MDL2 Assets on Windows 10.
  • Regression coverage

    • Added a guard to prevent reintroducing hard-coded Segoe Fluent Icons in WinUI sources.
public static FontFamily SymbolThemeFontFamily =>
    (FontFamily)Application.Current.Resources["SymbolThemeFontFamily"];

t.FontFamily = FluentIconCatalog.SymbolThemeFontFamily;

@clawsweeper

clawsweeper Bot commented Jun 21, 2026

Copy link
Copy Markdown

Codex review: needs real behavior proof before merge. Reviewed June 21, 2026, 4:57 PM ET / 20:57 UTC.

Summary
The PR replaces hard-coded Segoe Fluent Icons usage in native chat, A2UI, and setup UI with SymbolThemeFontFamily and adds source/UI regression coverage.

Reproducibility: yes. with high confidence from source and reporter evidence: the related Windows 10/v0.6.3 screenshots match current-main native chat code that hardcodes Segoe Fluent Icons. I did not run a live Windows 10 desktop reproduction in this Linux read-only review.

Review metrics: 3 noteworthy metrics.

  • Changed surface: 14 files changed, 78 additions, 22 deletions. The patch crosses native chat, A2UI rendering, setup UI, shared icon helpers, and two test projects.
  • Icon font substitutions: 20 hard-coded icon font usages replaced. The change is broad enough across UI surfaces that live Windows 10 proof matters before merge.
  • Validation state inspected: 4 Build and Test jobs still in progress. Repository policy requires build, shared tests, and tray tests before completion, and the live check signal was not complete.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #794
Summary: This PR is the candidate fallback repair for the Windows 10 native chat missing-button-icons report, even though the related issue was closed after a manual font-install/update workaround.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🧂 unranked krab
Proof: 🧂 unranked krab
Patch quality: 🐚 platinum hermit
Result: blocked until real behavior proof is added.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • [P1] Add a Windows 10 native chat screenshot, recording, terminal/live output, linked artifact, or redacted runtime log showing the icons render without a manual Segoe Fluent Icons install.
  • [P1] Let the AGENTS-required build, shared tests, tray tests, and relevant GitHub checks complete on the latest head.
  • Widen the regression guard so any FontFamily value containing Segoe Fluent Icons is rejected.

Proof guidance:

  • [P1] Needs real behavior proof before merge: Missing: the PR has no after-fix Windows 10 native chat screenshot, recording, terminal/live output, linked artifact, or redacted runtime log; proof should redact private details and updating the PR body should trigger a fresh ClawSweeper review, or a maintainer can comment @clawsweeper re-review. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Mantis proof suggestion
A visible Windows native chat proof would directly verify that the reported missing-glyph buttons render after the fallback change. A maintainer can ask Mantis to capture proof by posting this exact PR comment:

@openclaw-mantis visual task: verify Windows 10 native Hub Chat composer action icons render as real icons instead of missing-glyph boxes after this PR.

Risk before merge

  • [P2] No after-fix Windows 10 native chat screenshot, recording, terminal/live output, or redacted runtime log is attached, so the actual fallback behavior when Segoe Fluent Icons is absent is not proven.
  • [P1] The PR is still draft, so maintainers should not treat it as merge-ready even though the implementation direction is sound.
  • [P1] AGENTS-required validation was not completed in this read-only review, and live GitHub status still showed the main Build and Test job plus three e2e jobs in progress.
  • [P1] The new source guard should be widened because it would miss comma-separated font-family values containing Segoe Fluent Icons, including one form this PR removes.

Maintainer options:

  1. Decide the mitigation before merge
    Land this fallback repair, or an equivalent one, after Windows 10 native chat proof shows icons rendering without a manual font install, AGENTS-required validation is complete, and the regression guard covers any Segoe Fluent Icons font-family value.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Next step before merge

  • [P1] Human follow-up is needed because the merge blockers are draft status, missing external Windows 10 proof, and incomplete validation rather than a code repair ClawSweeper can fully supply.

Security
Cleared: No security or supply-chain concerns were found; the diff only changes WinUI font-resource selection and source/UI test expectations.

Review findings

  • [P3] Catch comma-separated Segoe Fluent font hardcodes — tests/OpenClaw.Tray.Tests/FluentIconCatalogTests.cs:108
Review details

Best possible solution:

Land this fallback repair, or an equivalent one, after Windows 10 native chat proof shows icons rendering without a manual font install, AGENTS-required validation is complete, and the regression guard covers any Segoe Fluent Icons font-family value.

Do we have a high-confidence way to reproduce the issue?

Yes, with high confidence from source and reporter evidence: the related Windows 10/v0.6.3 screenshots match current-main native chat code that hardcodes Segoe Fluent Icons. I did not run a live Windows 10 desktop reproduction in this Linux read-only review.

Is this the best way to solve the issue?

Yes directionally: using SymbolThemeFontFamily is the existing narrow fallback pattern and avoids bundling a font or adding config. The PR still needs Windows 10 behavior proof, completed validation, and a slightly stronger guard before merge.

Full review comments:

  • [P3] Catch comma-separated Segoe Fluent font hardcodes — tests/OpenClaw.Tray.Tests/FluentIconCatalogTests.cs:108
    The new source guard only matches exact "Segoe Fluent Icons" font-family values, so it would miss the old "Segoe Fluent Icons, Segoe MDL2 Assets" form that this PR removes from the timeline. Widen the regex to reject any FontFamily value containing Segoe Fluent Icons so the regression test protects the same class of bug.
    Confidence: 0.91

Overall correctness: patch is correct
Overall confidence: 0.86

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 5d1c65bb6ff8.

Label changes

Label justifications:

  • P2: This is a normal-priority Windows 10 native chat UI bugfix with limited but real user-facing impact.
  • rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🧂 unranked krab and patch quality is 🐚 platinum hermit.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs real behavior proof before merge: Missing: the PR has no after-fix Windows 10 native chat screenshot, recording, terminal/live output, linked artifact, or redacted runtime log; proof should redact private details and updating the PR body should trigger a fresh ClawSweeper review, or a maintainer can comment @clawsweeper re-review. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
Evidence reviewed

What I checked:

  • Repository policy read: AGENTS.md was read fully; its validation requirements apply to this WinUI/tray-test PR, but this read-only review did not run build or tests. (AGENTS.md:1, 5d1c65bb6ff8)
  • Current main still has the reported hardcoded font path: Current main uses new FontFamily("Segoe Fluent Icons") for native chat composer action icons, matching the Windows 10 missing-glyph report. (src/OpenClaw.Tray.WinUI/Chat/OpenClawComposer.cs:688, 5d1c65bb6ff8)
  • Existing fallback pattern exists on main: FluentIconCatalog.Build already uses the app SymbolThemeFontFamily resource, with comments explicitly naming the Windows 10 Segoe MDL2 fallback. (src/OpenClaw.Tray.WinUI/Helpers/FluentIconCatalog.cs:106, 5d1c65bb6ff8)
  • Latest release contains the same bug path: The v0.6.3 source also hardcodes Segoe Fluent Icons in the native composer IconButton helper, so the released reporter version is not already fixed. (src/OpenClaw.Tray.WinUI/Chat/OpenClawComposer.cs:709, 85445c78066b)
  • Related issue context supports the fix direction: The linked Windows 10 issue includes native chat missing-button screenshots; a maintainer-tagged discussion says SymbolThemeFontFamily is the preferred path because Segoe Fluent Icons is not inbox on Windows 10.
  • PR applies the fallback broadly: The PR changes 14 files and routes native chat, A2UI, setup UI, and A2UI UI-test expectations through SymbolThemeFontFamily. (src/OpenClaw.Tray.WinUI/Chat/OpenClawComposer.cs:688, edddafd16b6d)

Likely related people:

  • kenehong: PR history for Show chat usage in assistant timestamp footer #551 shows focused recent changes to OpenClawComposer.cs and OpenClawChatTimeline.cs, the central native chat files affected by this fallback. (role: recent native chat contributor; confidence: high; commits: ff38d8499c48; files: src/OpenClaw.Tray.WinUI/Chat/OpenClawComposer.cs, src/OpenClaw.Tray.WinUI/Chat/OpenClawChatTimeline.cs)
  • ranjeshj: Recent tray UX work touched FluentIconCatalog.cs and broad WinUI navigation/icon surfaces, and the same person merged the recent native chat usage PR. (role: adjacent tray and icon-catalog contributor; confidence: high; commits: 429be9ba9368, ff38d8499c48; files: src/OpenClaw.Tray.WinUI/Helpers/FluentIconCatalog.cs, src/OpenClaw.Tray.WinUI/Windows/HubWindow.xaml, src/OpenClaw.Tray.WinUI/Chat/OpenClawComposer.cs)
  • RBrid: Merged notification work recently touched OpenClawComposer.cs around native chat behavior and adjacent HubWindow UI surfaces. (role: recent native chat-adjacent contributor; confidence: medium; commits: 06ed71f3c01f; files: src/OpenClaw.Tray.WinUI/Chat/OpenClawComposer.cs, src/OpenClaw.Tray.WinUI/Windows/HubWindow.xaml)
  • christineyan4: The setup UI pages touched by this PR were added or localized in the v0.6.3-era setup UI work, including the hardcoded icon-font call sites now being changed. (role: setup UI contributor; confidence: medium; commits: 85445c78066b; files: src/OpenClaw.SetupEngine.UI/Pages/CapabilitiesPage.xaml.cs, src/OpenClaw.SetupEngine.UI/Pages/PermissionsPage.xaml.cs, src/OpenClaw.SetupEngine.UI/Pages/CompletePage.xaml)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

Co-authored-by: shanselman <2892+shanselman@users.noreply.github.com>
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 21, 2026
Copilot AI changed the title [WIP] Fix missing button icons in TAB chat view Fix Win10 native chat icon fallback Jun 21, 2026
Copilot AI requested a review from shanselman June 21, 2026 06:12
@clawsweeper clawsweeper Bot added P2 Normal priority bug or improvement with limited blast radius. merge-risk: 🚨 automation 🚨 Merging this PR could break CI, automerge, proof capture, label sync, or automation. labels Jun 21, 2026
Extend the Windows 10 icon font fallback fix to setup UI glyphs and tighten the guard test so it skips build artifacts while catching fully qualified FontFamily hardcodes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@clawsweeper clawsweeper Bot removed the merge-risk: 🚨 automation 🚨 Merging this PR could break CI, automerge, proof capture, label sync, or automation. label Jun 21, 2026
Assert that rendered A2UI icons use the SymbolThemeFontFamily resource so the UI test matches the Windows 10 fallback behavior introduced by this PR.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@shanselman
shanselman marked this pull request as ready for review June 21, 2026 21:06
@shanselman
shanselman merged commit 58e363d into main Jun 21, 2026
19 checks passed
@shanselman
shanselman deleted the copilot/fix-missing-button-icons branch June 21, 2026 21:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P2 Normal priority bug or improvement with limited blast radius. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants