{"repo":"NousResearch/hermes-agent","public_id":"72844","display_label":"GlyphSpinner performance: reduce React and style recalcs","summary":"These issues and PRs focus on GlyphSpinner causing excessive React commits and document-scale style recalculations in Desktop sessions. The work explores moving spinner animation off React and onto the compositor to reduce rendering overhead.","subsystem":"apps/desktop","counts":{"members":7,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":2,"attempt_prs":4},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":78266},"resolution":{"state":"resolved","by":"pr-91473"},"freshness":{"state":"verified","last_verified_at":"2026-08-21T11:23:42+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.42857142857142855},"fix_edges":[{"issue_number":72844,"pr_number":78266,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":72844,"pr_number":91473,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":72844,"title":"[Bug]: GlyphSpinner causes ~12.6 React commits/s in busy-but-silent Desktop sessions","url":null,"state":"closed"},{"kind":"pr","number":73033,"title":"fix(desktop): stop GlyphSpinner React churn","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#74357","number":74357}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":74357,"title":"perf(desktop): keep GlyphSpinner frames out of React commits","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#73033","number":73033},{"kind":"pr","value":"#78266","number":78266}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":78266,"title":"perf(desktop): keep GlyphSpinner frames out of React commits (#74357 salvage)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["apps/desktop/src/components/ui/glyph-spinner.test.tsx","apps/desktop/src/components/ui/glyph-spinner.tsx"]},{"kind":"pr","number":89805,"title":"perf(desktop): eliminate GlyphSpinner-driven document-scale style recalcs","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#89869","number":89869},{"kind":"pr","value":"#89869","number":89869}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":89869,"title":"perf(desktop): eliminate GlyphSpinner-driven document-scale style recalcs","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#91473","number":91473}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":91473,"title":"perf(desktop): spinners animate on the compositor — no more document-scale recalcs (salvage #89869)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["apps/desktop/e2e/glyph-spinner.spec.ts","apps/desktop/scripts/run-short-session-hang-repro.mjs","apps/desktop/src/app/chat/chat-swap-overlay.test.tsx","apps/desktop/src/app/chat/chat-swap-overlay.tsx","apps/desktop/src/components/assistant-ui/thread/assistant-message.tsx","apps/desktop/src/components/assistant-ui/thread/inter-agent-collapse.test.tsx","apps/desktop/src/components/assistant-ui/thread/preview-embeds.test.tsx","apps/desktop/src/components/assistant-ui/thread/status-invalidation-scope.test.tsx","apps/desktop/src/components/ui/glyph-spinner.css","apps/desktop/src/components/ui/glyph-spinner.test.tsx","apps/desktop/src/components/ui/glyph-spinner.tsx","apps/desktop/src/styles.css"]}],"trust":{"default_tier":"verified","includes_suggested":false}}