summaryrefslogtreecommitdiff
path: root/cgithub/src/app.ts
diff options
context:
space:
mode:
authorJoe Mou <dev@mou.fo>2026-08-11 08:09:47 -0400
committerJoe Mou <dev@mou.fo>2026-08-11 08:13:58 -0400
commit0be1fdd2635fbc49d7451d3711b5772e1e9990e2 (patch)
treed317fae68cce476f57eb50eb33e2c6d21be8a765 /cgithub/src/app.ts
parent6240cf1c6b73b7ed34ff5816b53333382c229f5c (diff)
Add language percentages to repo pages
GitHub no longer server-renders the repository sidebar; its React UI lazily fetches /:owner/:repo/_sidebar as JSON, which carries the language breakdown (name, percentage, color). getGitHubLanguages() uses that endpoint, and a new /api/:owner/:repo/languages fragment route renders the bar and legend the same way refs and latest-commit already work, so repo page loads still cost a single scrape. The latest-commit placeholder loader in refs.js is generalized over .placeholder[data-src] so both placeholders share it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'cgithub/src/app.ts')
-rw-r--r--cgithub/src/app.ts6
1 files changed, 6 insertions, 0 deletions
diff --git a/cgithub/src/app.ts b/cgithub/src/app.ts
index ca79b1f..e34c7b1 100644
--- a/cgithub/src/app.ts
+++ b/cgithub/src/app.ts
@@ -5,6 +5,7 @@ import {
getGitHubBlob,
getGitHubCommits,
getGitHubIssues,
+ getGitHubLanguages,
getGitHubLatestCommit,
getGitHubOwner,
getGitHubPulls,
@@ -158,6 +159,11 @@ export function createApp(eta: Eta) {
);
});
+ app.get("/api/:owner/:repo/languages", async (c) => {
+ const { owner, repo } = c.req.param();
+ return tryRenderFragment(c, "_languages.eta", getGitHubLanguages(owner, repo));
+ });
+
app.get("/:owner/:repo/releases/tag/:tag", async (c) => {
const { owner, repo, tag } = c.req.param();
return tryRender(c, "release.eta", getGitHubRelease(owner, repo, tag));