Files
remark42/site
Dmitry Verkhoturov f4ac5bcea2 site: fetch latest version client-side instead of embedding at build time
The header version badge was filled in by site/src/data/github.js calling
the GitHub releases API at Eleventy build time and baking data[0].tag_name
into every page. This had three failure modes:

1. Layered cache: Buildx caches the yarn build layer; on a release-triggered
   workflow nothing under ./site changes, so the cached HTML (with the
   previous tag baked in) gets shipped. v1.16.0 went out and remark42.com
   kept showing v1.15.0 until a separate site/ commit landed and naturally
   invalidated the COPY layer.

2. Tag mismatch: the deploy pulls ghcr.io/umputun/remark42-site:master,
   but release events build :v1.16.0 and :latest only. A cache-skip
   workflow tweak wouldn't even reach the served image.

3. API propagation race: the workflow fires ~2s after release publish,
   so even with cache disabled the API might still return the previous
   tag from a stale read replica.

All three vanish if the version is fetched in the browser. GitHub serves
the /releases/latest response with Cache-Control: public, max-age=60 so
per-visitor cost is bounded; failures fall through silently and the
badge stays empty rather than wrong.

Changes:
- header.njk: replace {{ github.latestVersion }} with a
  <span data-remark42-version></span> placeholder.
- inline.js: add a fetch of /releases/latest that fills any
  [data-remark42-version] element on the page. fallback is no-op on any
  network/parse failure.
- delete site/src/data/github.js (Eleventy data file is no longer used).
- drop node-fetch from devDependencies (was used only by github.js).
2026-05-26 20:58:00 +01:00
..
2022-02-24 16:18:28 -06:00
2021-11-16 14:16:58 -06:00
2023-06-06 15:22:02 -05:00
2021-06-13 18:44:49 -05:00
2021-06-13 18:44:49 -05:00
2024-11-10 17:25:16 -06:00
2024-02-25 18:27:06 -06:00
2024-02-25 18:27:06 -06:00
2021-06-13 18:44:49 -05:00
2024-02-25 18:27:06 -06:00

Remark42 site

Work on your local environment

Requirements:

  • Node.js v20 or higher - install from package or with Homebrew
  • Yarn 1.22 or higher - once you have Node.js, run npm i -g yarn

Development

Install dependencies and start the development server:

yarn
yarn dev

Build

yarn build

Work with Docker Compose

Build

Install dependencies and run development server inside Docker:

docker compose build
docker compose up server

Then serve files from ./build with your favorite server

Development

docker compose up --build server

Then head to http://localhost:8080