From 03eda8668dac0b338560122fa030c2249c52c711 Mon Sep 17 00:00:00 2001 From: "Void (mind)" Date: Mon, 9 Nov 2026 11:34:37 +0000 Subject: [PATCH 1/6] CI: run on the forge's docker runner label The forge has no runner labelled ubuntu-latest; the label that works is docker. Co-Authored-By: Claude Sonnet 5.5 --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 5bfa02f..15806bd 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -11,7 +11,7 @@ jobs: build-and-test: strategy: matrix: - os: [ubuntu-latest] + os: [docker] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 From 79db98e74e027ef82dc71ce1cef4a1c3a89d1245 Mon Sep 17 00:00:00 2001 From: "Void (mind)" Date: Mon, 9 Nov 2026 11:40:27 +0000 Subject: [PATCH 2/6] CI: delete quartz-pages.yml It builds and deploys with GitHub Pages actions, which this forge does not provide. Eureka's ruling, relayed in brief ratatoskr:follow_up:chat-s4646-4647: nothing here pulls container images (forge registry only, if ever). Co-Authored-By: Claude Sonnet 5.5 --- .github/workflows/quartz-pages.yml | 72 ------------------------------ 1 file changed, 72 deletions(-) delete mode 100644 .github/workflows/quartz-pages.yml diff --git a/.github/workflows/quartz-pages.yml b/.github/workflows/quartz-pages.yml deleted file mode 100644 index 4baf812..0000000 --- a/.github/workflows/quartz-pages.yml +++ /dev/null @@ -1,72 +0,0 @@ -name: Shared Quartz Pages Build - -on: - workflow_call: - inputs: - content-dir: - required: true - type: string - overlay-dir: - required: false - type: string - default: site - output-dir: - required: false - type: string - default: quartz-site/public - -permissions: - contents: read - pages: write - id-token: write - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout site repository - uses: actions/checkout@v4 - - - name: Checkout shared Quartz engine - uses: actions/checkout@v4 - with: - repository: GameCult/GameCult-Quartz - path: GameCult-Quartz - - - name: Configure Pages - uses: actions/configure-pages@v5 - - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: 24 - cache: npm - cache-dependency-path: GameCult-Quartz/package-lock.json - - - name: Install shared engine dependencies - working-directory: GameCult-Quartz - run: npm ci - - - name: Build site through shared Quartz - run: > - node GameCult-Quartz/scripts/build-site.mjs build - --siteRoot "$GITHUB_WORKSPACE" - --contentDir "${{ inputs.content-dir }}" - --overlayDir "${{ inputs.overlay-dir }}" - --outputDir "${{ inputs.output-dir }}" - - - name: Upload Pages artifact - uses: actions/upload-pages-artifact@v3 - with: - path: ${{ inputs.output-dir }} - - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 From 56154648b85d33b97e98dd05c8860f520c03851b Mon Sep 17 00:00:00 2001 From: Void Date: Mon, 9 Nov 2026 13:31:42 +0000 Subject: [PATCH 3/6] CI: keep quartz-pages.yml (it deploys gamecult.org on GitHub Pages) The shared workflow is called by gamecult-site's deploy-quartz.yml and publishes the live gamecult.org through GitHub Pages. It builds no container image, and it needs GitHub-hosted runners, so it stays on ubuntu-latest; the forge has no Pages deploy. Co-Authored-By: Claude Sonnet 5.5 --- .github/workflows/quartz-pages.yml | 72 ++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 .github/workflows/quartz-pages.yml diff --git a/.github/workflows/quartz-pages.yml b/.github/workflows/quartz-pages.yml new file mode 100644 index 0000000..4baf812 --- /dev/null +++ b/.github/workflows/quartz-pages.yml @@ -0,0 +1,72 @@ +name: Shared Quartz Pages Build + +on: + workflow_call: + inputs: + content-dir: + required: true + type: string + overlay-dir: + required: false + type: string + default: site + output-dir: + required: false + type: string + default: quartz-site/public + +permissions: + contents: read + pages: write + id-token: write + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout site repository + uses: actions/checkout@v4 + + - name: Checkout shared Quartz engine + uses: actions/checkout@v4 + with: + repository: GameCult/GameCult-Quartz + path: GameCult-Quartz + + - name: Configure Pages + uses: actions/configure-pages@v5 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 24 + cache: npm + cache-dependency-path: GameCult-Quartz/package-lock.json + + - name: Install shared engine dependencies + working-directory: GameCult-Quartz + run: npm ci + + - name: Build site through shared Quartz + run: > + node GameCult-Quartz/scripts/build-site.mjs build + --siteRoot "$GITHUB_WORKSPACE" + --contentDir "${{ inputs.content-dir }}" + --overlayDir "${{ inputs.overlay-dir }}" + --outputDir "${{ inputs.output-dir }}" + + - name: Upload Pages artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ${{ inputs.output-dir }} + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 From 8bf428c6ef2b72bb8e0cd168a85614797a3452de Mon Sep 17 00:00:00 2001 From: Void Date: Mon, 9 Nov 2026 13:38:00 +0000 Subject: [PATCH 4/6] CI: run on the docker runner label (ci.yaml matrix) Co-Authored-By: Claude Sonnet 5.5 --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 5bfa02f..15806bd 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -11,7 +11,7 @@ jobs: build-and-test: strategy: matrix: - os: [ubuntu-latest] + os: [docker] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 From 02bc0e04190149907bf6647690fa96fc6576b7c6 Mon Sep 17 00:00:00 2001 From: Void Date: Tue, 10 Nov 2026 06:17:06 +0000 Subject: [PATCH 5/6] Latex: let the site choose KaTeX's output mode katexOptions omitted `output`, though the option spread already honours it. A site can now ask for "htmlAndMathml" so screen readers get MathML; the default stays "html". Co-Authored-By: Claude Sonnet 5.5 --- quartz/plugins/transformers/latex.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/quartz/plugins/transformers/latex.ts b/quartz/plugins/transformers/latex.ts index a9f54f3..c33869e 100644 --- a/quartz/plugins/transformers/latex.ts +++ b/quartz/plugins/transformers/latex.ts @@ -12,7 +12,8 @@ import { Options as TypstOptions } from "@myriaddreamin/rehype-typst" interface Options { renderEngine: "katex" | "mathjax" | "typst" customMacros: MacroType - katexOptions: Omit + // `output` defaults to "html"; "htmlAndMathml" adds MathML for screen readers (KaTeX hides it visually). + katexOptions: Omit mathJaxOptions: Omit typstOptions: TypstOptions } From f6bed01377a98e46acabeec1edcee3efc2b292bb Mon Sep 17 00:00:00 2001 From: Void Date: Thu, 12 Nov 2026 09:43:38 +0000 Subject: [PATCH 6/6] Guard Pages workflow on github.server_url (#6) --- .github/workflows/quartz-pages.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/quartz-pages.yml b/.github/workflows/quartz-pages.yml index 4baf812..c15cbdc 100644 --- a/.github/workflows/quartz-pages.yml +++ b/.github/workflows/quartz-pages.yml @@ -33,7 +33,11 @@ jobs: repository: GameCult/GameCult-Quartz path: GameCult-Quartz + # Pages actions exist only on GitHub: the forge runner resolves actions + # from data.forgejo.org, which has no actions/configure-pages, so the job + # failed there. Build always; touch Pages only on the GitHub mirror. - name: Configure Pages + if: github.server_url == 'https://github.com' uses: actions/configure-pages@v5 - name: Setup Node @@ -56,11 +60,13 @@ jobs: --outputDir "${{ inputs.output-dir }}" - name: Upload Pages artifact + if: github.server_url == 'https://github.com' uses: actions/upload-pages-artifact@v3 with: path: ${{ inputs.output-dir }} deploy: + if: github.server_url == 'https://github.com' environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }}