orca/mobile/src
Jinjing 371d71a262
fix(agents): bundle agent icons instead of loading them from Google's favicon service (#8451) (#8474)
* fix(agents): bundle agent icons instead of loading them from Google's favicon service (#8451)

Agents without a hand-authored SVG glyph loaded their icon live from
Google's favicon service (www.google.com/s2/favicons). That service is
unreachable in some regions (e.g. mainland China) and offline, so ~23
agent icons rendered as broken images on the agent settings page, the
terminal title bar, and the status bar.

Bundle each favicon as a build-time asset under resources/agent-icons/
and render it via a new agent id -> URL map (agent-favicon-assets.ts).
The remote favicon service now only serves as a last-resort fallback for
any future agent that lacks a bundled icon. Follows the same pattern as
#7373, which bundled the OpenCode mark.

* fix(agents): bundle mobile agent icons too; drop dead omp faviconDomain (#8451)

Mobile had the same offline/region bug: MobileAgentIcon rendered every
non-glyph agent from Google's favicon service. It actually affected more
agents than desktop, since mobile lacks hand-authored glyphs for
Copilot, OpenCode, Kilocode, Droid, and OpenClaude — all fell through to
the favicon path.

Bundle the 28 favicon-path icons under mobile/assets/agent-icons/ and
render them via a Metro static require() map (mobile-agent-icon-assets.ts).
A node-env invariant test asserts every favicon-path agent ships a
bundled PNG and is wired into the map.

Also remove omp's vestigial faviconDomain from the desktop catalog — omp
renders the hand-authored OmpIcon glyph, so the favicon fallback was
never reachable.

* refactor(agents): share one set of bundled agent icons between desktop and mobile

Desktop and mobile each shipped their own copy of the favicon PNGs (23 +
28, with 23 byte-identical duplicates). Consolidate them into a single
source of truth at src/shared/agent-icons/, reachable by both bundlers:

- Desktop (Vite) imports them via `?url`.
- Mobile (Metro) requires them; Metro already watches src/shared via
  metro.config.js sharedRoot, so no config change is needed.

The two per-platform maps stay separate because the import syntax differs
(`?url` string vs `require()` asset ref), but they now point at the same
files. Verified with a real `expo export`: Metro bundles all 28 shared
icons from src/shared/agent-icons.
2026-07-12 22:10:09 -07:00
..
agent-history Show agent session history on mobile (#6786) 2026-07-10 13:48:10 -07:00
browser fix(mobile): import Buffer from 'buffer', not 'node:buffer' 2026-06-30 01:15:56 -07:00
cache feat(mobile): combine PR sidebar and checks parity (#5641) 2026-06-17 22:52:12 -07:00
components fix(agents): bundle agent icons instead of loading them from Google's favicon service (#8451) (#8474) 2026-07-12 22:10:09 -07:00
constants fix(worktree): make generated workspace names unique across repos (#2857) 2026-05-28 20:41:10 -04:00
diagnostics mobile: per-host connection log screen with copy-diagnostics (#7984) 2026-07-09 16:20:07 -07:00
dictation Allow deleting downloaded speech models on desktop and mobile (#5794) 2026-06-19 12:31:11 -07:00
files refactor: remove state-only React effects (#8437) 2026-07-12 17:11:08 -07:00
hooks Prevent mobile screen locking during voice dictation. (#7746) 2026-07-10 23:31:56 -07:00
layout feat: add iPad responsive layout support (#2433) 2026-05-29 20:10:47 -04:00
mobile-release fix(mobile): keep Android release versionCode committed (#7271) 2026-07-03 15:26:11 -07:00
notifications perf(mobile): cap the scheduled-notification map + tap-dedup set (#7646) 2026-07-06 21:28:09 -07:00
platform feat(mobile): terminal text selection, copy, and paste (#1553) 2026-05-07 18:24:05 -07:00
session fix(pr-comments): let users mark comment authors as bots for the Humans/Bots filter (#7598) 2026-07-12 14:09:15 -07:00
source-control the-sandbox-flag-is-2 (#8236) 2026-07-10 23:04:38 -07:00
storage fix(mobile): preserve terminal input mode on reentry (#7129) 2026-07-02 23:22:30 -07:00
tasks chore(lint): adopt unicorn/prefer-import-meta-properties (error) (#6847) 2026-06-29 23:37:30 -07:00
terminal Fix stale terminal panes after backgrounding by retrying deferred foreground recovery (#8198) 2026-07-11 16:20:28 -07:00
theme Fix mobile Source Control primary action styling (#6918) 2026-06-30 11:26:20 -07:00
transport fix(mobile): don't orphan pairing tokens or leak rejections on host remove (#8317) (#8354) 2026-07-11 21:42:03 -07:00
worktree Show agent session history on mobile (#6786) 2026-07-10 13:48:10 -07:00
host-route-action-state.test.ts Resolve host new-worktree route action before commit (#3242) 2026-05-30 19:15:42 -07:00
host-route-action-state.ts Resolve host new-worktree route action before commit (#3242) 2026-05-30 19:15:42 -07:00
host-route-exit.test.ts Mobile: worktree-list sidebar for tablet/foldable layouts (#5505) 2026-06-16 16:50:38 -07:00
host-route-exit.ts Mobile: worktree-list sidebar for tablet/foldable layouts (#5505) 2026-06-16 16:50:38 -07:00