mirror of
https://github.com/stablyai/orca.git
synced 2026-09-29 00:02:56 +00:00
Reopening a GitHub issue/PR drawer paid full IPC + `gh` startup latency on every open. Two changes here: 1. Module-level SWR cache in GitHubItemDialog.tsx keyed by (repoPath, issueSourcePreference, type, number). Reopening within 30s paints cached data instantly; older entries paint stale-then-refresh. Concurrent opens dedupe on a shared in-flight promise. Mutation handlers invalidate by (repo, type, number); a cache-generation counter prevents in-flight refetches from resurrecting stale data after a mid-flight invalidation. 2. Collapsed GraphQL query for issue details replaces 3 serial `gh` subprocesses (REST issue + REST comments + GraphQL participants) with one round-trip. Falls back to the legacy fan-out on any GraphQL error so historical contract is preserved. Cross-window invalidation rides a new `gh:workItemMutated` IPC broadcast that skips the originating sender (the source already updated its cache optimistically — re-broadcasting would race the optimistic write). `addIssueComment` now takes a `type` so the broadcast scopes correctly when a PR shares its number with an issue. Co-authored-by: Orca <help@stably.ai>