Fix #295: explore top-5 active + totals #306

Merged
crueber merged 1 commit from fix/issue-295 into main 2026-09-10 20:54:55 +00:00
Owner

Fixes #295 on the #283 rails (no backend change).\n\n/explore renders the top-5 most-active owners: the page fetches owners.listDetailed({sort:activity,order:desc}) and runs the new pure activeOwnerNames filter (null last_commit_time dropped) BEFORE the MAX_OWNERS slice (50 -> 5). Cold load drops from ~51 to 6 GETs (pinned by a fetch-counting headless test). The intro card carries the instance owner total from the payload uncapped row count; overflow reads 'showing top 5 of A active owners' only past the cap.\n\nDeliberate gap (reported, not freelanced): NO instance repo total - no endpoint serves one (owners/detailed rows carry no repo counts, no stats endpoint) and walking every owner's listing is the N-fetch antipattern the page avoids. Needs a backend rail (e.g. repo_count on owners/detailed rows, ghost-filtered like liveRepos) - follow-up issue proposed on #295.\n\nTests: node --test 586/586 green; vite build green. Browser proof open (shared-daemon loopback guard, no private daemon per workspace rules). No new deps.

Fixes #295 on the #283 rails (no backend change).\n\n/explore renders the top-5 most-active owners: the page fetches owners.listDetailed({sort:activity,order:desc}) and runs the new pure activeOwnerNames filter (null last_commit_time dropped) BEFORE the MAX_OWNERS slice (50 -> 5). Cold load drops from ~51 to 6 GETs (pinned by a fetch-counting headless test). The intro card carries the instance owner total from the payload uncapped row count; overflow reads 'showing top 5 of A active owners' only past the cap.\n\nDeliberate gap (reported, not freelanced): NO instance repo total - no endpoint serves one (owners/detailed rows carry no repo counts, no stats endpoint) and walking every owner's listing is the N-fetch antipattern the page avoids. Needs a backend rail (e.g. repo_count on owners/detailed rows, ghost-filtered like liveRepos) - follow-up issue proposed on #295.\n\nTests: node --test 586/586 green; vite build green. Browser proof open (shared-daemon loopback guard, no private daemon per workspace rules). No new deps.
/explore renders the 5 most-active owners (not 50 name-sorted sections):
the page fetches owners.listDetailed({sort:activity,order:desc}) on the
#283 rails and runs the new pure activeOwnerNames filter (null
last_commit_time dropped) BEFORE the MAX_OWNERS slice (50 -> 5), so cold
load drops from ~51 to 6 GETs. The intro card carries the instance owner
total from the payload's uncapped row count; overflow reads 'showing top
5 of A active owners' only past the cap, and owners-but-no-commits keeps
an honest empty state. The #283 client re-rank stays as fallback for the
shown sections only.

Deliberate gap (reported, not freelanced): no instance repo total - no
endpoint serves one and walking every owner's listing is the N-fetch
antipattern, so the page states the owner total only. Needs a backend
rail (e.g. repo_count on owners/detailed rows).

docs/go/12_web_ui.md: section 2.3.1 body + Decisions entry (law 12).
No backend, SDK, or API change; no new deps. node --test 586/586 green;
vite build green. Browser proof open (shared-daemon loopback guard).
Sign in to join this conversation.
No description provided.