Repository navigation
feat: site: real-time /changelog page fed by GitHub Releases (edge function + build fallback + feed) - #127
Merged
Conversation
mvilacad
marked this pull request as ready for review
October 15, 2026 04:09
mvilacad
force-pushed
the
feat/126-site-real-time-changelog-page-fed
branch
from
October 15, 2026 04:09
c00a7a8 to
9b1a4ff
Compare
Contributor
|
Site preview: https://pr-127.codeatlas-ui.pages.dev |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #126
A real-time
/changelog/on ui.codeatlas.com.br, ported from../atlas/siteand adapted: the source is the GitHub Releases ofcodeatlasdev/ui(tags@codeatlasdev/ui@*), so a release shows up within about a minute with no redeploy.packages/ui (core)
prose.css:.ca-prosenow styles release lists (.ca-release,.ca-release__meta,.ca-release-jump,.ca-release-thanks). The changelog needs no site-local CSS; classes only, so build-time and edge-rendered HTML share them. Anchored releases clear the stickyDocsShellheader, meta links and pills keep 44px targets.Docs/Releases.svelte.test.ts(+ harness) in real Chromium: axe, rule between releases,scroll-margin-top, flex-wrap meta row, 44px targets.Tests 1 failed | 1 passedon.ca-releaseborder/scroll-margin (no CSS yet).Tests 5 passed (5)..changeset/release-list-prose.md(minor),docs/css-api.mdlists the new classes.site
functions/_lib/changelog.ts: parse GitHub payload andCHANGELOG.md, SemVer ordering, channel (latest/beta/...), special-thanks split, sanitized Markdown (raw HTML escaped; only http(s)/mailto/anchor/site links, control chars stripped from schemes; images become links; tables scroll in a wrapper), Atom feed.functions/_lib/edge.ts: oneapi.github.com/.../releasescall cached 60 s in the Cache API, last good copy kept 7 days (flagged stale), optionalGITHUB_TOKENsecret lifts the 60/h API limit.functions/changelog/index.tsswaps the build body (between<!--CHANGELOG-->markers) for live releases; if GitHub is down and nothing is cached, the static build body is served untouched.functions/changelog.json.ts,functions/changelog/feed.xml.ts.src/pages/changelog/index.astro:SiteDocsShell+ca-prose, build fallback rendered frompackages/ui/CHANGELOG.mdplus the Special thanks text fromscripts/release-meta.ts;Seocanonical, og card through the brand pipeline, BreadcrumbList JSON-LD, Atom<link rel=alternate>; "Changelog" in the header nav (SECTIONS); sitemap picks it up.functions/**/*.test.ts(40, onbun test, chained intobun run test:unitsovalidategates them) andtests/changelog.spec.ts. Functions typecheck as their own projects (tsconfig.jsonwith workers types,tsconfig.test.json) insidesite'scheck..gitignore:.wrangler/.Verification
bun run validate: ok (19.9 s), also on pre-push.bun run test:e2e -- tests/changelog.spec.ts tests/routes.a11y.spec.ts tests/layout.spec.ts -g changelog: 16 passed, 3 skipped (the layout spec's desktop-only viewports on the mobile project). Covers 3.0.0 and 2.3.2 with anchors, a11y dark/light/forced-colors, layout.wrangler pages dev distagainst live GitHub:GET /changelog.json200,x-changelog-source: github-releases, 11 releases[3.0.0 2026-10-15 latest, 2.3.2, 2.3.1, 2.3.0, ...]GET /changelog/feed.xml200application/atom+xml, newest entry 3.0.0GET /changelog/200,x-changelog-latest: 3.0.0,<section id="v3-0-0">,v2-3-2, ..., Special thanks footer; second call 7 ms (cache hit); HEAD 200changelog/index.test.tsand_lib/edge.test.ts; workerd ignores proxy env vars, so it could not be faked inwrangler.Notes: the GitHub API only lists 11 releases (older tags predate Releases); the build fallback fills that history. The page is not in
pages.visual.spec.tson purpose (its content changes every release).