Fix blank Vault and sidebar icons through the shared renderer
Fixes #4476.
This is a clean replacement for PR #4480. The original branch had drifted 6,687 commits behind current main and carried unrelated CI-watchdog history; this branch starts at current main and contains only the two icon regression/fix commits.
Root cause
The remaining Vault/workspace/sidebar SF Symbol call sites still entered SwiftUI as lazy template providers. On macOS 15, especially Intel, the first materialization can occur before the effective appearance is resolved, producing a blank icon layer while text remains. Sidebar re-show and Light/Dark toggles accidentally retriggered that lifecycle.
Fix
- Route Vault section controls, agent fallbacks, folder sections, previews, and popovers through the existing AppKit-materialized CmuxSystemSymbolImage path.
- Route Task Manager agent/system icons through the same concrete bitmap path.
- Preserve the existing appearance-aware CmuxAppKitSupportUI renderer and package lifecycle ownership from current main.
- Add runtime renderer/lifecycle regression coverage, including visible non-template pixels and last-good-image preservation.
- Keep all changes localized; no submodule changes.
Verification
- Swift frontend parse of all touched Swift files.
- git diff --check.
- scripts/check-pbxproj.sh.
- scripts/lint-pbxproj-test-wiring.sh.
- No local Xcode build or tests run by request; cloud build/test remains the handoff gate.
The old PR #4480 should be superseded by this PR; no merge is requested here.
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.
Summary by CodeRabbit
-
New Features
- Added consistent icon styling across session, task, grouping, search, and transcript views.
- Improved agent and folder icons with shared rendering and workspace-based fallbacks.
- Added fallback support for system symbols when primary icons are unavailable.
- Added accessibility labels for reload and clear-search controls.
-
Bug Fixes
- Prevented blank or transparent icons from appearing during rendering transitions.
- Improved icon updates when fallback images change dynamically.
-
Tests
- Added coverage for fallback rendering, workspace icons, transparent images, and dynamic icon updates.