Commit Graph
12 Commits
Author SHA1 Message Date
Asger Geel Weirsøe 288205630e Ryd op i kommentarer
Build & Deploy / deploy (push) Successful in 5m55s
2026-10-31 14:43:20 +01:00
Asger Geel Weirsøe 2a18604b25 Require an approval stamp on every blog post before building
Build & Deploy / deploy (push) Successful in 3m9s
Posts are written in a private drafts repo and only reach this repo through
an approval step that stamps them with an HMAC over path and content. The
deploy workflow now runs scripts/verify-approvals.mjs before the build and
refuses to build if a post is unstamped, changed after approval, or still
marked as a draft (this repo is public, so a draft here is already published).

PW_PREVIEW=1 builds the site under /udkast for the private review page:
noindex, a banner, no service worker, sitemap or comments.

The nine existing posts are stamped as approved.

Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
2026-10-08 21:47:12 +02:00
Asger Geel Weirsøe 32b85cc973 Read the deploy host and path from secrets, not variables
Build & Deploy / deploy (push) Successful in 4m14s
Run logs of a public repository are public, and Gitea prints variables in
them in clear text; only secrets are masked. The previous commit moved the
host into a variable and so still published it, in the deploy log.

Claude-Session: https://claude.ai/code/session_01GGe7kUhooMFuzY6GaDb2w9
2026-10-01 17:40:00 +02:00
Asger Geel Weirsøe 2fcb4cdfa7 Keep the deploy target out of the public repo
Build & Deploy / deploy (push) Successful in 3m11s
The workflow named the web host, its address and the web root path, and the
README named the container. Host, user and path now come from repository
variables, and the deploy step fails clearly if one is missing.

Claude-Session: https://claude.ai/code/session_01GGe7kUhooMFuzY6GaDb2w9
2026-10-01 17:10:00 +02:00
Asger Geel Weirsøe 034e5e3312 seo: præcis sitemap-lastmod, IndexNow-ping ved deploy og favicon.ico
Build & Deploy / deploy (push) Successful in 2m19s
Fire ugers adgangslog (81k requests) viser at ægte Googlebot kun hentede robots.txt,
favicon og et par billeder — plus én enkelt HTML-side i hele perioden. Intet af det her
løser dét (kun indgående links gør), men det fjerner de undskyldninger vi selv havde
lagt ud.

- Sitemappet havde ingen lastmod overhovedet. Nu udleder astro.config.mjs den pr. side:
  statiske sider fra deres sidste commit, blogindlæg fra updated/date i frontmatter,
  og oversigts-/tagsider fra det nyeste indlæg de viser. Kan en dato ikke fastslås
  præcist, udelades lastmod helt — en forkert dato er værre end ingen, fordi Google
  holder op med at stole på feltet.
- Det kræver rigtig git-historik, så checkout kører nu fetch-depth: 0 (default shallow
  ville give alle filer samme dato).
- Nyt deploy-step pinger IndexNow med de sider dette push faktisk ændrede — udregnet af
  scripts/indexnow.mjs ud fra diffen, ikke hele sitemappet, da gentagne fuld-lister er
  støj. Nøglefilen lå allerede i public/, men blev aldrig brugt. Hjælper kun Bing/Yandex;
  Google understøtter ikke IndexNow. continue-on-error, så det aldrig vælter et deploy.
- /favicon.ico gav 404. Tilføjet som rigtig 3-størrelses ICO (16/32/48) genereret fra
  favicon.svg med samme baggrund som de øvrige ikoner.

Claude-Session: https://claude.ai/code/session_018oXJWTRxTYdcV9Kw6M7e5J
2026-08-09 09:15:38 +02:00
Asger Geel Weirsøe 72ac103d63 feat(theme): adopt shared weirsoe-theme via submodule + Tailwind token adapter — dedupe tokens/toggle/prose/glow, keep Tailwind layer
Build & Deploy / deploy (push) Successful in 1m52s
2026-06-15 13:44:34 +02:00
Asger Geel WeirsøeandClaude Opus 4.8 86d4fbf81c ci: deploy via tar over SSH with atomic swap (runner has no rsync)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 19:19:08 +02:00
Asger Geel WeirsøeandClaude Opus 4.8 7e583af822 ci: force-install sharp linux-x64 binary, clear omit env, verify load
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 19:17:43 +02:00
Asger Geel WeirsøeandClaude Opus 4.8 7cce714940 ci: npm install --include=optional so Sharp platform binary installs
The runner omits optional deps, dropping @img/sharp-linux-x64 (sharps own
optional platform package). --include=optional forces it back in.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 19:17:06 +02:00
Asger Geel WeirsøeandClaude Opus 4.8 f5850bd0c3 ci: build with npm + Node 22 so Sharp installs (fixes bun segfault + missing-sharp)
bun --bun crashed Bun runtime (SIGILL); plain bun run hit missing Sharp
native binary for astro:assets. npm install pulls @img/sharp-linux-x64
reliably.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 19:15:58 +02:00
Asger Geel WeirsøeandClaude Opus 4.8 adbe2e76d7 ci: force bun runtime in build step (--bun) so build is independent of runner Node version
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 19:14:09 +02:00
Asger Geel WeirsøeandClaude Opus 4.8 80c820bdff site: full Astro source + blog posts, Gitea Actions deploy to CT148
Replaces the placeholder repo with the asger.weirsoe.dk site source.
Adds 6 blog posts (Proxmox, Authentik/OIDC, NPMplus migration, JS injection,
ah-fail) and .gitea/workflows/deploy.yml (bun build + rsync over SSH).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 19:13:47 +02:00