Radiolicensen fik en linje; det her har brug for mere plads. Ny fuld sektion
"Natur og jagt" nederst på /cv, skrevet som det er ment: jagttegnet er
anledningen, men det er de tidlige morgener, stilheden, solopgangen og disen
over markerne der er pointen — og en tur uden nedlagt vildt tæller lige så
meget. Plus fugle, planter og årstidernes skiften.
Jagttegnet står bevidst som prosa og ikke som et kort i "Licenser"-sektionen
endnu: der mangler årstallet, og en licens med en tom dato ser værre ud end
ingen dato.
llms.txt og cv.txt får én linje hver, så den maskinlæsbare profil ikke
modsiger den menneskelige — "Spørg mit CV" bygger netop på de to filer.
Riflen er med vilje ikke nævnt nogen steder: sitet oplyser allerede by og
linker til LinkedIn, og våbenejerskab hører ikke hjemme sammen med det.
Claude-Session: https://claude.ai/code/session_0198n4owY35jQpwht1wCGzfh
Asger bestod radioamatørprøven lørdag den 18. maj 2024 og har B-licens med
kaldesignalet OZ0AGW. Det står nu de steder profilen faktisk læses fra — både
af mennesker og af maskiner — i stedet for som en løsrevet notits:
- /cv: ny "Licenser"-sektion (licens, kaldesignal, prøvedato) og en linje under
Interesser, der binder radioen sammen med resten af profilen — protokoller og
infrastruktur, bare uden kabler.
- Forsiden: hero-teksten nævner det som en del af fritiden, og der er en ny
FAQ ("Er Asger Weirsøe radioamatør?") med dato og kaldesignal, så både
FAQPage-schemaet og en LLM kan citere svaret ordret.
- seo.ts: Person får schema.org/callSign = OZ0AGW — en entydig identifikator på
linje med sameAs-profilerne, så opslag på kaldesignalet peger på personen.
hasCredential bliver et array (grad + licens med dateCreated 2024-05-18), og
knowsAbout/description udvides tilsvarende.
- llms.txt og cv.txt (curl-versionen): faktalinje, ekspertise-punkt, FAQ-svar og
kaldesignal i hovedet. Chat-proxyen på /chat henter netop de to filer ved
opstart, så "Spørg mit CV" kan svare på det efter en genstart.
Claude-Session: https://claude.ai/code/session_0198n4owY35jQpwht1wCGzfh
GitHub-profilen linker til asger.weirsøe.dk med rel="me", men sitet pegede
ikke tilbage — så rel="me"-parringen var kun halv, og GitHub manglede i
Person.sameAs. Begge dele er entitetssignaler, ikke autoritet: linket på
GitHub er nofollow, så det her flytter ikke rankings, det knytter bare
profilen til personen.
Claude-Session: https://claude.ai/code/session_0198n4owY35jQpwht1wCGzfh
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
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
Siden viste 12 af de OIOUBL-profiler man faktisk kan vælge i Nemhandelsregistrets
profil-dropdown. Nu er alle med, i registrets egen rækkefølge og under registrets egne
gruppenavne ("Profiler for: ..."), så man kan slå direkte op mellem det man tilmelder sig
og hvilke dokumenttyper der så ligger i pakken.
- EProfile får valgfri `kategori` = registrets gruppeoverskrift; ny `kategorier`-eksport.
- 26 nye danske profiler: hele Catalogue-familien (CatBas/CatSim/CatExt/CatAdv/CatPriUpd
+ R-varianter), PayBas/PayBasR (Statement), OrdSel- og OrdAdv-varianterne,
Reference-UtilityR, TecRes, NES1/2/7/8 og cenbii bii30 (DespatchAdvice).
- Registerprofilerne OrdRes-1.0 og BilSimReminderOnly-1.0 er med, mærket som "single"
og henvist til registret — de står ikke i G26 v1.3.
- Dokumentlisterne er rettet til efter G26 v1.3 tabel 1-3: BilSim manglede
ApplicationResponse (kun ved afvisning), OrdAdv-BilSim manglede OrderResponseSimple.
"*" markerer nu at ApplicationResponse i ordreprofilerne kun bruges til afvisning.
- UI: registerkategori vises som badge og som egen filterrække (AND med standard-filteret),
og indgår i fritekstsøgningen.
Claude-Session: https://claude.ai/code/session_018oXJWTRxTYdcV9Kw6M7e5J
Frontend til det offentlige opslags-API. Viser registreringsstatus, netvaerk og profilpakker for et CVR.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@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>
BreadcrumbList paa blogposts (schema + synlig broedkrumme) og CollectionPage paa /blog (hoejeste-ROI rich results). BlogPosting beriget m. wordCount + articleSection. Web-manifest + apple-touch-icon/192/512 PNG-ikoner. FAQ-svar i foerste person (spoergsmaal beholdt i 3. person m. navn for SEO).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ERST ejer open source eDelivery (Oxalis); CGI var leverandoer paa NemHandel. Fuldtidsansat TSA hos Digisense (ikke ekstern raadgiver). Fjernet em-streger i synlig tekst + llms.txt for mindre AI-praeg.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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>
Sharp is only an optional dep of astro; the CI runner omits optional deps,
so astro:assets image optimization failed with MissingSharp. Pinning it as
a direct dependency guarantees the native binary is installed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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>
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>