Commit Graph
10 Commits
Author SHA1 Message Date
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 d2b133ed3d List /tarballz/ in the sitemap with its trailing slash
Build & Deploy / deploy (push) Successful in 3m9s
The slash stripping meant for Astro's routes also turned the tarball index
into /tarballz, which the web host answers with a 301 to /tarballz/. A
sitemap should only list the final URL.

Claude-Session: https://claude.ai/code/session_01GGe7kUhooMFuzY6GaDb2w9
2026-10-06 17:35:13 +02:00
Asger Geel Weirsøe 9103dca0f4 Keep the cookie, status and chat pages out of the index
They are utility pages with nothing to rank for, and Google had crawled and
passed on them anyway. Mark them noindex, follow, and leave them out of the
sitemap so Search Console does not report submitted URLs marked noindex.

Claude-Session: https://claude.ai/code/session_01GGe7kUhooMFuzY6GaDb2w9
2026-10-06 17:32:11 +02:00
Asger Geel Weirsøe 58d68aa95f Engelske projektsider under /en/projects
Hver projektside findes nu også på engelsk (/en/projects/<navn>) med en
oversigt på /en/projects. Siderne deler komponenten ProjektSide, peger på
hinanden med hreflang og har et sprogskift øverst. Head og Base tager lang
og alternates, så andre sider kan oversættes på samme måde.

/tarballz/ er med i sitemap'et, nu hvor oversigten der må indekseres.

Claude-Session: https://claude.ai/code/session_012LCTmU2ewo8tnM1dByYAoG
2026-10-04 07:28:09 +02:00
Asger Geel Weirsøe 146e9c04a5 pwa: ingen SPA-fallback i service workeren
Build & Deploy / deploy (push) Successful in 2m14s
Standarden svarede ALLE navigationer, den ikke havde precachet, med den
cachede forside. Derfor viste /tarballz/ (serveres af nginx uden for
Astro-bygget) og ukendte adresser forsiden i stedet for den rigtige side
eller 404. Alle Astro-sider er precachet i forvejen.

Claude-Session: https://claude.ai/code/session_012LCTmU2ewo8tnM1dByYAoG
2026-09-30 21:19:38 +02:00
Asger Geel Weirsøe 7d8ad46d11 seo: tynde tag-sider noindex + ud af sitemap, forældreløse sider linket
Build & Deploy / deploy (push) Successful in 3m36s
- tag-siderne (/tags og /tags/*) får "noindex, follow" og udelades af
  sitemap'et: 21 lister med 1-2 indlæg hver trak helhedsindtrykket ned
- /peppol er kun en omdirigering til /nemhandel: noindex og ud af sitemap'et
- /profiler og /ubl kunne kun nås via Cmd/Ctrl+K-paletten (JavaScript, som
  Google ikke følger); nu kort på forsiden under "Mere end et CV"

Sitemap: 44 -> 22 URL'er, alle nås inden for 2 klik fra forsiden.

Claude-Session: https://claude.ai/code/session_012LCTmU2ewo8tnM1dByYAoG
2026-09-27 07:57:01 +02:00
Asger Geel Weirsøe fc7ca339a1 seo: én kanonisk URL-form — uden afsluttende skråstreg
Build & Deploy / deploy (push) Successful in 1m43s
Google kendte 41 af sitemapets 44 URL'er som "Webadressen er ikke kendt af
Google". Årsagen var at siden fandtes i to former: de interne links peger alle
på no-slash (/blog, /cv, /tags/proxmox), mens sitemap og <link rel="canonical">
brugte skråstreg-formen. Origin serverer begge med 200 uden redirect, så
Googles linkbaserede opdagelse ramte kun det ene sæt, og sitemapets sæt blev
aldrig opdaget.

Nu peger canonical, sitemap og RSS alle på no-slash-formen, som de interne
links i forvejen brugte. lastmod slås stadig op på Astros egne ruter (som har
skråstregen) FØR URL'en strippes, så sitemapets 44 lastmod-datoer er uændrede.

Claude-Session: https://claude.ai/code/session_0198n4owY35jQpwht1wCGzfh
2026-09-10 20:15: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øeandClaude Opus 4.8 cae3402d73 pwa: service worker for offline + installerbar (vite-pwa, autoUpdate)
Build & Deploy / deploy (push) Successful in 1m32s
@vite-pwa/astro genererer en Workbox-SW der precacher alt (59 entries); autoUpdate + skipWaiting + cleanupOutdatedCaches saa redeploy aldrig strander en bruger paa gammel version. Registrering injiceret via /registerSW.js i Base.astro (manifest:false bruger den eksisterende site.webmanifest). Offline-brug + Add-to-Home-Screen.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 21:53:00 +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