Skip to content

Releases: vn7n24fzkq/github-profile-summary-cards

v0.12.1

Choose a tag to compare

@github-actions github-actions released this 19 Oct 16:49

What's Changed

  • fix: revert "chore: bump d3-color and d3" — d3 v7 is ESM-only and crashes the CJS runtime by @vn7n24fzkq in #323
  • fix: make language aliases case-insensitive by @teddyli18000 in #330
  • fix: productive-time rate-limit resilience + KV failure diagnostics by @vn7n24fzkq in #340

New Contributors

Full Changelog: v0.12.0...v0.12.1

v0.12.0

Choose a tag to compare

@github-actions github-actions released this 01 Aug 17:25

What's Changed

  • perf(cache): compact cly payloads 60% + quiet-deploy workflow by @vn7n24fzkq in #304
  • docs: Redis key-prefix glossary by @vn7n24fzkq in #305
  • feat(api): spread card traffic across the token pool; redact backing account by @vn7n24fzkq in #309
  • perf(api): serve owner-type and repos-per-language from the REST quota pool by @vn7n24fzkq in #310
  • fix: narrow contribution windows on gateway timeouts, not only resource-limit errors by @M1XZG in #306
  • chore: bump axios from 1.17.0 to 1.18.1 by @dependabot[bot] in #307
  • fix: fetch star totals via stargazerCount, not the stargazers connection by @vn7n24fzkq in #313
  • chore: bump fast-uri from 3.1.3 to 3.1.4 by @dependabot[bot] in #312
  • perf(cache): double the default fresh window to 24h by @vn7n24fzkq in #316
  • feat(api): GitHub App installation tokens join the token pool by @vn7n24fzkq in #315
  • perf(api): sum star totals via REST; shrink profile GraphQL documents by @vn7n24fzkq in #317
  • chore: bump d3-color and d3 by @dependabot[bot] in #318
  • chore: bump version to 0.12.0 by @vn7n24fzkq in #319

New Contributors

Full Changelog: v0.11.6...v0.12.0

v0.11.6

Choose a tag to compare

@github-actions github-actions released this 17 Jul 12:10

🩹 Hotfix: the real root fix for profile timeouts

v0.11.5's per-attempt deadline wasn't enough: token rotation re-runs the whole render (20s + 20s), and a stats render could stack the profile budget on top of the contribution-history budget — both clearing Vercel's 30s kill, which caches nothing and loops.

Every wall-clock budget (profile fetch, contribution history, commit languages) now measures from a single request-scoped clock opened outside the rotation loop. A retry that finds the budget spent fails fast — stale rescue or a cheap 5-min-cached error card instead of a FUNCTION_INVOCATION_TIMEOUT. Under full token exhaustion, heavyweight cold renders now answer in under a second with an honest "rate limited" card.

What's Changed

  • fix: request-scoped clock for every wall-clock budget (504 root fix) by @vn7n24fzkq in #303

Full Changelog: v0.11.5...v0.11.6

v0.11.5

Choose a tag to compare

@github-actions github-actions released this 17 Jul 11:52

🩹 Hotfix: heavyweight profiles no longer time out

  • One shared 20s deadline for the whole profile fetch — GitHub's slow query rejections, the split fallback chain and star pagination no longer stack their own clocks past Vercel's 30s kill (which cached nothing and looped forever) (#301)
  • Estimator-rejected accounts are flagged for 30 days and skip straight to the split queries (saves a ~6s slow-reject per fetch)
  • Star pagination runs concurrently with the other split queries
  • When every token is rate limited, cards now show the honest "rate limited, try again in a few minutes" instead of a generic unavailable (#302)

What's Changed

  • fix: shared profile-fetch deadline — stop FUNCTION_INVOCATION_TIMEOUT loops by @vn7n24fzkq in #301
  • fix: classify all-tokens-exhausted as rate_limited by @vn7n24fzkq in #302

Full Changelog: v0.11.4...v0.11.5

v0.11.4

Choose a tag to compare

@github-actions github-actions released this 17 Jul 10:43

🚦 Burst control, cache compaction & error observability

  • Per-instance GitHub concurrency gate (cap 8) — a cold heavyweight profile loading five cards at once no longer bursts dozens of parallel GraphQL calls into GitHub's secondary rate limits; excess calls queue briefly instead (#298). The demo page additionally staggers its five card loads.
  • 16x smaller profile cache — the cached profile payload dropped from ~21KB to ~1.4KB (calendar stored as a compact counts run), raising the free-tier storage headroom by an order of magnitude (#299).
  • Structured error records now ship to an external log store on every card error, giving 30-day searchable history of which usernames failed, when and why (#300).

What's Changed

  • feat: per-instance GitHub concurrency gate + demo-page card staggering by @vn7n24fzkq in #298
  • perf(cache): compact the profile payload 16x (21.6KB → 1.4KB) by @vn7n24fzkq in #299
  • feat: Sentry capture for unexpected card errors (no-op without DSN) by @vn7n24fzkq in #300

Full Changelog: v0.11.3...v0.11.4

v0.11.3

Choose a tag to compare

@github-actions github-actions released this 16 Jul 20:50

🛡️ Resource-limit hardening

GitHub's GraphQL cost estimator rejects heavy query documents for very active accounts ("Resource limits for this query exceeded"). v0.11.0's full-history sums made several cards newly sensitive to this. This release makes every card resilient:

  • Top Languages by Commit: a year rejected outright now re-fetches as two half-year windows and merges — same totals, and capped years actually cover more repos (#294)
  • Profile details / Stats: the combined profile query now has a tiered split fallback (core+repos / calendar+years / counts), with day-aligned half-window calendars for the most extreme accounts (#295)
  • Productive time: the repo-list window is now pinned to the sampling range — simultaneously a correctness fix and a large cost reduction (#296)
  • Cache: past-year windows are jittered (90d ± 15d per key) so the backfill cohort never expires as one synchronized storm (#293); CDN s-maxage raised to 48h and the Redis fresh default to 12h (#297)

A very small number of extremely active accounts remain limited on GitHub's side (even minimal queries are rejected); their cards recover automatically as GitHub does.

What's Changed

  • fix: half-year window fallback for resource-limited commit-language years by @vn7n24fzkq in #294
  • fix: pin productive-time's collection window to the sampling range by @vn7n24fzkq in #296
  • perf: raise CDN s-maxage to 48h and Redis fresh default to 12h by @vn7n24fzkq in #297
  • fix: tiered split fallback for resource-limited UserDetails queries by @vn7n24fzkq in #295
  • feat(cache): jitter past-year fresh windows to prevent expiry stampedes by @vn7n24fzkq in #293

Full Changelog: v0.11.2...v0.11.3

v0.11.2

Choose a tag to compare

@github-actions github-actions released this 16 Jul 19:36

What's Changed

  • fix: rotate tokens on typeless 'rate limit already exceeded' errors by @vn7n24fzkq in #292

Full Changelog: v0.11.1...v0.11.2

v0.11.1

Choose a tag to compare

@github-actions github-actions released this 16 Jul 19:15

🩹 Hotfix

GitHub's cost estimator rejects our combined per-year contributions query with "Resource limits for this query exceeded" for mega-contribution user-years (e.g. a year with 10k+ commits). With v0.11.0 summing every year, one rejected year error-carded the whole stats / profile-details card for those accounts.

The per-year fetcher now retries such rejections as two cheaper single-field queries and merges the result — same numbers, and only the affected years pay the extra request. Details in #291.

Note: a small number of accounts currently fail even minimal contribution queries on GitHub's side (unrelated to this project's query shape, predates v0.11.0); their cards recover automatically once GitHub does.

What's Changed

  • fix: split per-year query on GitHub resource-limit rejections by @vn7n24fzkq in #291

Full Changelog: v0.11.0...v0.11.1

v0.11.0

Choose a tag to compare

@github-actions github-actions released this 16 Jul 18:42

⭐ Your numbers are about to grow — here's why

Starting with this release, the web (Vercel) cards compute statistics across your entire GitHub history, not just the trailing year:

Card Before Now
Stats — Total Commits commits in the last 365 days (labelled with the year) every commit since your account was created
Profile details — Contributions contributions in the latest year all-time contributions
Top Languages by Commit distribution over the last 365 days distribution over your whole history

What you'll notice: totals get (much) bigger, and the language donut may reshuffle to reflect what you've actually written the most over the years. This is expected — it's the same data the GitHub Action version has always used, now with per-year immutable caching so it stays fast on the web too. Side-by-side before/after examples are in #289.

The profile-details line chart intentionally stays on the trailing year — it's a "recent activity" visual.

If you preferred the year-scoped numbers, tell us in the issues — we're open to adding an opt-in period parameter.

📱 Landing page

The controls panel on the demo page no longer covers the screen on phones — it collapses into a compact "⚙️ Customize" bar (#290).

🔧 Under the hood

  • Per-year immutable Redis caching (past years cached ~90 days, current year refreshes) with batched MGET reads
  • Data semantics never depend on cache health: if Redis is down, the same full-history totals are computed straight from GitHub
  • Commit-language and contribution queries are chunked with a time budget; a render that can't finish returns an error card rather than a mislabelled partial total
  • Productive-time card now uses authoredDate (your local commit time) instead of committedDate

What's Changed

  • fix(landing): collapsible controls panel on mobile by @vn7n24fzkq in #290
  • feat!: full-history stats with cache-independent semantics by @vn7n24fzkq in #289

Full Changelog: v0.10.2...v0.11.0

v0.10.2

Choose a tag to compare

@github-actions github-actions released this 16 Jul 16:21

What's Changed

  • fix: avoid GitHub 502 on mega accounts, add pagination time budget by @vn7n24fzkq in #287
  • fix: drop star ordering from organization-details, add time budget by @vn7n24fzkq in #288

Full Changelog: v0.10.1...v0.10.2