Fix blank Vault and sidebar icons through the shared renderer

Merged
AU
2mo ago
+535-109

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.


View with [code]smith Autofix with [code]smith
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.