fix(tabs): keep custom harness icons beside the working spinner
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](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
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
WorkingHarnessTabIconTestscover 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.