feat(releases): scaffold releases.hal0.dev publishing path#1
Merged
Conversation
Add public/releases/{stable,nightly}.json placeholders matching the
hal0.releases.v1 schema consumed by hal0.updater.Updater. Both files
are flagged _placeholder: true with all-zeros sha256 sentinels — they
parse but fail cosign verify, intentionally, until release.yml in
hal0ai/hal0 starts publishing real manifests.
Add public/_headers (60s cache + permissive CORS on /releases/*) and
public/_redirects (host-conditional rewrite so releases.hal0.dev/*
serves /releases/* without polluting the marketing-site root).
README gains a "Release manifest hosting" section documenting the
two URL forms (path + subdomain), the CF Pages + DNS one-time setup,
and the publish workflow that release.yml will follow.
Refs: hal0ai/hal0 task #14 (RC blocker — updater pointed at a
non-existent host).
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
Summary
Stand up the receiving end for
https://releases.hal0.dev/{channel}.json— the URL the hal0 self-updater (src/hal0/updater/updater.py) defaults to. Currently a v1 RC blocker (hal0ai/hal0 task #14) because the host doesn't exist.public/releases/stable.json+public/releases/nightly.json— schema-validhal0.releases.v1placeholders, flagged_placeholder: truewith all-zeros sha256 sentinels. They parse cleanly throughReleaseManifest.model_validatebut will failcosign verify-blobif anything tries toapply()them — intentional, untilrelease.ymlin hal0ai/hal0 starts publishing real manifests.public/_headers— Cloudflare Pages headers config:Cache-Control: public, max-age=60+Access-Control-Allow-Origin: *on/releases/*. Short cache so a freshly-tagged release propagates within a minute.public/_redirects— host-conditional rewrite (https://releases.hal0.dev/* /releases/:splat 200) so the subdomain servesdist/releases/*without polluting the marketing-site root with channel manifests. The path-based canonical (https://hal0.dev/releases/stable.json) keeps working unchanged.README.md— new "Release manifest hosting" section: where the JSON lives, both URL forms, CF Pages + DNS one-time setup (CNAME records forhal0.dev+releases.hal0.dev), and the publish workflow thatrelease.ymlin hal0ai/hal0 will follow.Why subdomain (no updater code change)
hal0.updater.updater.releases_url()defaults tohttps://releases.hal0.dev/{channel}.json. The_redirectsrewrite means we keep that default and don't have to ship a coordinated client patch. Path form (hal0.dev/releases/...) is also live as a fallback / debugging URL.DRAFT — do not merge
Draft because:
releases.hal0.dev, andhal0.devis still pre-deploy per the existing README).release.ymllands in hal0ai/hal0 and the first real tag publishes, the placeholder manifests get overwritten by that workflow.Marketing pages are untouched — only the new
public/releases/path,public/_headers,public/_redirects, and a README section addition.Test plan
npm run build— completes;dist/releases/{stable,nightly}.json,dist/_headers,dist/_redirectsall present.hal0.updater.updater.ReleaseManifest.model_validate(schema OK, version0.0.0, channels match).curl -s https://releases.hal0.dev/stable.json | jq .returns the placeholder.curl -sI https://releases.hal0.dev/stable.jsonshowscache-control: public, max-age=60and CORS header.release.ymlships in hal0ai/hal0: tagging a release auto-overwritespublic/releases/stable.jsonvia PR/deploy-key from that workflow.Companion docs change in hal0ai/hal0 on branch
docs/releases-host-2026-05-15.Refs: hal0ai/hal0 task #14.