fix(tabs): keep custom harness icons beside the working spinner

Merged
TE
5d ago
+93-2

Pinned and narrow working chat tabs now retain custom harness images and symbols under the same small spinner badge as built-in brand marks. Browser loading still replaces its compact favicon.

Requested: “narrow/pinned working agent tabs retain custom harness .image/.symbol icons beside spinner (TabCell.swift 421-430, HarnessIconLookup, TabItemMapping); preserve browser loading behavior.”

The harness lookup and mapping already preserve the artwork; the rendering condition was limited to .agentMark. This changes that condition to also recognize agent working state, without changing icon identity, geometry, defaults, or unrelated surfaces.

Validation

Static prepush gate passed at 8407d022ece4a14aeafca729be419eaca6b84a60. Fleet red/green, test compilation, independent review, and before/after captures are pending. No local builds or tests ran.

Regression commit: 79773339e39. Suites: WorkingHarnessTabIconTests, HarnessIconSurfacesTests, TabSingleTrailingIndicatorTests, TabLoadingAnimationTests. Tests cover mapped image/symbol/brand/fallback artwork, pinned/narrow/titled layouts, browser replacement spinners, idle transitions, and long/emoji/CJK names.

UI review

Verdict: blocked pending fleet visual evidence in both themes. The existing icon and badge geometry is reused. No timer, observer, or animation loop is added. Worst-case fixture names enter through the normal tab mapping boundary.

Risk: normal; confined to compact tab artwork visibility.

Changelog

Fixed: Working chat tabs keep custom harness icons visible when pinned or narrow.

Agent session: agent session


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Fixes pinned and narrow working chat tabs so they keep custom harness images and symbols visible beside the working spinner badge, not just built-in brand marks. The rendering condition now recognizes agent working state instead of being limited to .agentMark; browser busy loading still replaces its favicon.

Tests

  • New WorkingHarnessTabIconTests cover custom image, symbol, brand, and fallback artwork across narrow, pinned, and titled layouts.
  • Also verifies browser replacement spinners, idle transitions, and long/emoji/CJK titles not moving the icon or spinner.