Rebuild the site as a terminal-style agent on Astro
My Gatsby Deployment pipeline / build-and-deploy (push) Successful in 1m4s

Replace the single Gatsby page with a dark, terminal-style agent that answers
questions about Dennis's work from one curated knowledge base. There is no
model and no network call, so answers cannot be invented. A plain "Classic
view" and an optional light theme sit one click away.

Site
- Terminal UI (React island): typed answers, tool-call lines, slash commands,
  autocomplete, history, deep links, a short /oncall game
- Content focused on what recruiters scan for; personal and employer-internal
  details are left out
- No profile photo anywhere, including the new link-preview card and icons
- Corrected facts from the old page (dates, titles, tenses, skill tiers)

Tooling
- Migrate Gatsby 5 to Astro 7 (Node 22.23+); builds in about 1 second
- Self-host fonts, so visitors make no request to third parties
- Link-preview card, favicon set, web manifest and a service-worker clean-up
  for returning visitors
- Deploy workflow builds with npm ci on Node 22 and uploads dist/
- Track package-lock.json

Quality
- Tests for routing and for markup injection from visitor input
- A content guard scans every reachable answer; the list of things that must
  never be published lives in a git-ignored local file

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
dennisthiessenandClaude Sonnet 5.5 committed 2026-10-25 22:45:25 +01:00
1 parent 8817235310
commit 61465cc67e
40 files changed
+8625 -480

No files matched your search

+15 -26
View File
@@ -3,38 +3,27 @@
"description": "Personal site of Dennis Thiessen — thiessen.io",
"version": "1.0.0",
"author": "Dennis Thiessen",
"dependencies": {
"gatsby": "^5.12.12",
"gatsby-plugin-manifest": "^5.12.3",
"gatsby-plugin-react-helmet": "^6.12.0",
"gatsby-plugin-remove-serviceworker": "^1.0.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-helmet": "^6.1.0",
"ajv": "^8.12.0",
"ajv-keywords": "^5.1.0",
"schema-utils": "^4.2.0"
},
"keywords": [
"gatsby"
],
"license": "MIT",
"scripts": {
"clean": "gatsby clean",
"build": "gatsby build",
"develop": "gatsby develop",
"format": "prettier --write '**/*.js'",
"test": "echo \"Error: no test specified\" && exit 1"
"dev": "astro dev",
"build": "astro build",
"preview": "astro preview",
"test": "node --test",
"format": "prettier --write '**/*.{js,jsx,mjs}'"
},
"dependencies": {
"@astrojs/react": "^7.1.1",
"@fontsource-variable/hanken-grotesk": "^5.3.0",
"@fontsource-variable/jetbrains-mono": "^5.3.0",
"@fontsource-variable/space-grotesk": "^5.3.0",
"astro": "^7.4.2",
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
"devDependencies": {
"prettier": "^3.1.0"
},
"engines": {
"node": ">=18.0.0"
},
"resolutions": {
"ajv": "^8.12.0",
"ajv-keywords": "^5.1.0",
"schema-utils": "^4.2.0"
"node": ">=22.23.4"
}
}