Colorful Fluent sidebar icons + Fluent Emoji lobster#425
Merged
Conversation
85843e2 to
cb9e3d2
Compare
Replaces the gray Segoe Fluent monochrome glyphs in the Hub sidebar with 20 colorful Microsoft Fluent UI System Color SVGs, and replaces the pixel-art lobster (tray, taskbar, Alt-Tab, window titlebars, chat zero-state, tray menu header, MSIX tile, lock screen, store badge) with the Fluent Emoji 3D Lobster already shipping at Assets/Setup/Lobster.png. Both icon families are MIT-licensed: - Sidebar: github.com/microsoft/fluentui-system-icons (Color variant) - Lobster: github.com/microsoft/fluentui-emoji (Lobster 3D PNG) Attribution documented in src/OpenClaw.Tray.WinUI/THIRD_PARTY_NOTICES.md. Sidebar sizing tuned to match Windows 11 Settings — 22px icon box, default 36px MinHeight (gives ~50px row pitch), tightened separator margin (0,2,0,2). NavigationView.Resources holds shared SvgImageSource keys (one per icon) so each NavigationViewItem references the same decoded SVG instead of re-parsing per instance. High-contrast accessibility: HubWindow constructor calls ApplyHighContrastFallbackIfNeeded() which detects HC via Windows.UI.ViewManagement.AccessibilitySettings and, when active, walks NavView.MenuItems/FooterMenuItems and swaps each Icon to a FontIcon glyph from Segoe Fluent Icons. FontIcon auto-adapts to all HC variants (HC Black/White/openclaw#1/openclaw#2) via the system foreground brush. Dynamic agent items respect the same flag via BuildAgentItemIcon(). Adjacent fixes: - App.xaml.cs:2707 was looking for the non-existent claw.ico for toast notifications; renamed to openclaw.ico. - HubWindow.xaml: added missing x:Uid on Voice and Sandbox nav items so future localization picks them up. - THIRD_PARTY_NOTICES.md placed at project root rather than inside Assets/ so it does not get bundled into the runtime output via the Assets/**/* content glob. Adversarial dual-model code review (Opus + GPT Codex) raised 7 findings; all addressed in this change. Validation - ./build.ps1 .................. ✅ - Shared.Tests --no-restore .... 1620 passed, 28 skipped, 0 failed - Tray.Tests --no-restore ...... 992 passed, 0 failed Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
cb9e3d2 to
b5d870e
Compare
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.
Summary
Refreshes the visual language of the OpenClaw sidebar and replaces the pixel-art lobster across the app with Microsoft's Fluent Emoji 3D Lobster — both icon families are MIT-licensed.
Sidebar sizing tuned to match Windows 11 Settings exactly: 22 px icon box in a ~50 px row with tightened separator margin.
Sidebar icon mapping
chat-24globe-24chat-multiple-24toolbox-24molecule-24phone-laptop-24org-24list-bar-24bot-sparkle-24link-multiple-24options-24data-bar-vertical-ascending-24calendar-clock-24mic-24settings-24lock-shield-24shield-24data-trending-24wrench-screwdriver-24book-open-lightbulb-24Each is defined once as a shared
<SvgImageSource>in<NavigationView.Resources>and referenced via{StaticResource X_Icon}so all 21NavigationViewItems share the same decoded SVG (no per-instance parse cost).High-contrast accessibility
HubWindowconstructor callsApplyHighContrastFallbackIfNeeded()which checksWindows.UI.ViewManagement.AccessibilitySettings.HighContrastand, when active, walksNavView.MenuItems/FooterMenuItemsand swaps eachIconto aFontIconglyph from Segoe Fluent Icons (the same glyphs the sidebar had before this refresh). FontIcon auto-adapts to every HC variant (HC Black, HC White, #1, #2) via the system foreground brush — equivalent end-user result to Windows Settings' parallelContrastStandard/ContrastHighPNG sets, but without shipping HC-specific assets. Dynamic agent items built at runtime respect the same flag viaBuildAgentItemIcon().To test HC behavior: enable HC via
Win+Ctrl+Cand restart the app.Adversarial dual-model code review
Ran a Hanselman-style adversarial review (Claude Opus 4.6 + GPT-5.2-Codex in parallel). 7 findings, all addressed in this PR:
ImageSource→SvgImageSourceconversion was unverified<SvgImageSource UriSource=...>resource keysNavigationViewItemOnLeftIconBoxHeightoverriddenTop/Compactmode keys are hardcoded in WinUI and not reachable from this app (PaneDisplayMode is fixed)SvgImageSourceper dynamic agent itemNavigationView.Resources["Agents_Icon"]THIRD_PARTY_NOTICES.mdshipped viaAssets/**globsrc/OpenClaw.Tray.WinUI/THIRD_PARTY_NOTICES.md)App.xaml.cs:2707referenced non-existentclaw.icoopenclaw.icoVoiceandSandboxNavigationViewItems lackedx:UidLicenses
Both icon families are MIT, no attribution required. Documented for compliance in
src/OpenClaw.Tray.WinUI/THIRD_PARTY_NOTICES.md:Validation
Per
AGENTS.md:./build.ps1dotnet test ./tests/OpenClaw.Shared.Tests/...csproj --no-restoredotnet test ./tests/OpenClaw.Tray.Tests/...csproj --no-restoreWorktree:
D:\github\openclaw-windows-node.colorful-iconswithOPENCLAW_REPO_ROOTset to the worktree path before tests (per AGENTS.md).