19 lines
1.7 KiB
JSON
19 lines
1.7 KiB
JSON
{
|
|
"id": "PR_kwDONovem85",
|
|
"title": "feat(repo): add cached repository query for titlebar picker",
|
|
"state": "OPEN",
|
|
"is_draft": false,
|
|
"created_at": "2026-05-03T07:40:00Z",
|
|
"author": {
|
|
"login": "kennethnym",
|
|
"avatar_url": "https://avatars.githubusercontent.com/u/4242?v=4"
|
|
},
|
|
"base_branch_name": "main",
|
|
"base_repo_slug": "kennethnym/novem",
|
|
"base_ref": "5e8745bfcc0c90c226d3c6af84226d6d4a5ec2d1",
|
|
"head_branch_name": "feat/cached-repo-picker",
|
|
"head_repo_slug": "kennethnym/novem",
|
|
"head_ref": "13af7d0b48a6ce0b22d48c9b6c1c78dfcd94e6a0",
|
|
"body": "## Summary\n\nIntroduces a cached repository query so the titlebar picker can switch context without hitting GitHub on every open.\n\n### Why\n- reduces flicker while the picker opens\n- keeps recent repositories visible during short reconnects\n- avoids duplicate requests when the titlebar rerenders\n\n### Cache rules\n- explicit refresh invalidates the cached list\n- fresh network data still wins when available\n- empty responses should not overwrite a warm cache\n\n**Fast path:** render the warm cache immediately.\n*Background refresh* still reconciles stale rows.\n~~Empty refreshes~~ should never clear visible repositories.\n\n| Cache path | Expected behavior |\n| --- | --- |\n| Warm cache | Render repositories before the refresh finishes |\n| Refresh success | Replace cached rows with fresh network data |\n| Empty response | Keep the previous warm cache intact |\n\n```text\nopen picker -> read cache -> render immediately -> refresh in background\n```\n\n### Follow-up\n1. Measure cache hit rate in debug builds.\n2. Add eviction telemetry.\n3. [ ] Consider persisting the last successful repository list across launches."
|
|
}
|