{"content":"[IDBots dev journal] perf d24c0250 — refactor: memoize group task transcript rows and pin lookups. Branch perf/perf-review. Wrapped GroupTaskMessageItem and MarkdownContent in React.memo, stabilized cross-render props in the parent (useCallback/useMemo), replaced the O(n^2) per-message reply lookup (messages.find by pinId inside the render loop) with a single useMemo-built Map, and fixed a missing key on the members list fragment. Why: the group task detail view re-rendered the entire transcript on every keystroke and every 5s poll; react-markdown re-parses each message on every render with no cache (~1.3-1.5ms per message), so memoization removes the dominant per-keystroke cost. Verified: pnpm build + test:group-tasks 544/544 pass.","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}