|
1 | 1 | # nostream-website |
2 | 2 |
|
| 3 | +## 1.3.0 |
| 4 | + |
| 5 | +### Minor Changes |
| 6 | + |
| 7 | +- [#884](https://github.com/cameri/nostream/pull/884) [`e654852`](https://github.com/cameri/nostream/commit/e65485297bf4d9a20ccf8f78a4aae638a22655e1) Thanks [@chappie-daemon](https://github.com/chappie-daemon)! - Add a social preview card generated from source. |
| 8 | + |
| 9 | + `website/site/scripts/build-social-card.mjs` renders one composition at two sizes: |
| 10 | + `public/media/social-card.png` (1200×630, the site's `og:image`) and |
| 11 | + `public/media/github-social-preview.png` (1280×640, the GitHub repository preview). |
| 12 | + `Base.astro` now emits the full preview set — `og:image:width`, `og:image:height`, |
| 13 | + `og:image:alt`, `twitter:image`, `twitter:title`, `twitter:description`, |
| 14 | + `og:site_name`, `og:locale` — and takes an `ogImage` prop that defaults to the card; |
| 15 | + `hero-poster.webp` stays the film's poster. |
| 16 | + |
| 17 | + The GitHub preview is uploaded by hand: **Settings → Social preview** in the |
| 18 | + repository, which no workflow can set. |
| 19 | + |
| 20 | +### Patch Changes |
| 21 | + |
| 22 | +- [#882](https://github.com/cameri/nostream/pull/882) [`9146fd3`](https://github.com/cameri/nostream/commit/9146fd311cf88fe36818eae3d29c809c99c634fb) Thanks [@Ferryx349](https://github.com/Ferryx349)! - Replace the home page admin screenshot gallery with an operator console film (explain beats on the hero backdrop, full-frame UI shots) and a pause control; add Framefields sources and ship `admin.mp4` in site media. |
| 23 | + |
| 24 | +- [#889](https://github.com/cameri/nostream/pull/889) [`eb68475`](https://github.com/cameri/nostream/commit/eb68475eb324f319f23f64670d331faa3f684c83) Thanks [@chappie-daemon](https://github.com/chappie-daemon)! - The site now lives at **https://nostream.dev**, and every other host redirects to it over https. |
| 25 | + |
| 26 | + The router worker answers on `nostream.dev` and `www.nostream.dev` as well as the preview |
| 27 | + domain, and `CANONICAL_HOST` decides which one serves content: any other host the routes |
| 28 | + catch — `www`, or `ema.tnsor.network` for a non-preview path — gets a `301` to the canonical |
| 29 | + host, and `http` gets a `301` to the same URL over `https`. One origin serving means one |
| 30 | + canonical URL, so `www` and the apex cannot split search ranking by both answering `200`. |
| 31 | + |
| 32 | + Previews deliberately stay on `ema.tnsor.network/preview/<n>/`: that is why the domain |
| 33 | + remains bound. A preview build must never sit on the production domain, and a preview's own |
| 34 | + `SITE_URL` stays the preview origin so its absolute links and canonical tags cannot claim |
| 35 | + `nostream.dev`. |
| 36 | + |
| 37 | + The domain is an input now, not a constant: `SITE_URL` for the build, `CANONICAL_HOST` for |
| 38 | + the worker, both set in `deploy-website.yml`. Moving again is two lines rather than a search |
| 39 | + through the source, the social card and the README. |
| 40 | + |
| 41 | + **Cloudflare-side setup this needs before it takes effect**: the `nostream.dev` zone must |
| 42 | + exist, and both `nostream.dev` and `www.nostream.dev` resolve through the worker's |
| 43 | + declared custom domains on the next deploy. Turning on the zone's _Always Use HTTPS_ |
| 44 | + setting makes the upgrade happen at the edge, before the worker; the worker's own `301` |
| 45 | + covers the case where that setting is off. |
| 46 | + |
| 47 | +- [#888](https://github.com/cameri/nostream/pull/888) [`07dc215`](https://github.com/cameri/nostream/commit/07dc2153d1d18e1641c8f0a079c542ab8187bcdc) Thanks [@chappie-daemon](https://github.com/chappie-daemon)! - A pull request's site preview now deploys even when the comment cannot be |
| 48 | + written, and the CDN cache is purged after a deploy so a fresh preview is not |
| 49 | + served the previous build. |
| 50 | + |
| 51 | + **A comment can no longer prevent a deploy.** The preview workflow's comment |
| 52 | + steps ran before the deploy, so a pull request opened from a fork — whose |
| 53 | + `GITHUB_TOKEN` is read-only whatever the `permissions:` block grants — failed at |
| 54 | + `GraphQL: Resource not accessible by integration (addComment)` and skipped the |
| 55 | + deploy entirely ([run 39134047965](https://github.com/cameri/nostream/actions/runs/39134047965)). |
| 56 | + The deploy now runs first, every comment step is `continue-on-error`, and the |
| 57 | + job grants `issues: write` (PR conversation comments are issue comments; |
| 58 | + `pull-requests: write` alone does not cover them). |
| 59 | + |
| 60 | + **The cache is purged after deploying**, scoped to `https://ema.tnsor.network/preview/<n>/` |
| 61 | + via the `prefixes` purge, so a stale window cannot be served — on 2026-10-18 |
| 62 | + `/preview/885/` returned production HTML for about three minutes after the |
| 63 | + build landed. The production workflow purges the whole zone after its router |
| 64 | + deploy. Both purges skip with a notice when `CLOUDFLARE_ZONE_ID` is not set for |
| 65 | + their environment, so an unconfigured environment deploys normally instead of |
| 66 | + failing. |
| 67 | + |
3 | 68 | ## 1.2.5 |
4 | 69 |
|
5 | 70 | ### Patch Changes |
|
0 commit comments