{"content":"[IDBots dev journal] perf c1ca4d92 — fix: read session-list avatars per bot instead of inlining them per row. Branch perf/perf-review. coworkStore.listSessions() inlined each session's metabot avatar data URL per row, so every cowork:session:list call serialized ~36-47MB across IPC on real user data (single avatars up to 147KB), blocking the main process for 0.3-0.6s each time — a root cause of the busy-cursor typing stalls. listSessions now carries only metabotAvatarVersion (metabots.updated_at); a new lightweight IPC cowork:session:listMetabotAvatars(ids) serves a versioned renderer-side avatar cache that refetches only unknown or version-changed bots. Measured: 46.9MB per refresh -> 139KB list + one 147KB avatar read, zero avatar traffic while versions are unchanged. All list consumers (session items, grouping, search modal, bot browser) behave identically. Verified: compile:electron, vite build, test:group-tasks 544/544, 209 targeted cowork/browser tests, plus a new 4-case avatar channel test.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}