Rebuild the site as a terminal-style agent on Astro
My Gatsby Deployment pipeline / build-and-deploy (push) Successful in 1m4s
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:
1 parent
8817235310
commit
61465cc67e
40 files changed
+8625
-480
No files matched your search
@@ -0,0 +1,17 @@
|
||||
// Clean-up for returning visitors. An earlier version of this site may have registered a
|
||||
// service worker in their browser; this file replaces it, clears its caches and removes
|
||||
// itself. Visitors who never had one are not affected: nothing registers this file.
|
||||
|
||||
self.addEventListener('install', () => self.skipWaiting())
|
||||
|
||||
self.addEventListener('activate', (event) => {
|
||||
event.waitUntil(
|
||||
(async () => {
|
||||
const names = await caches.keys()
|
||||
await Promise.all(names.map((name) => caches.delete(name)))
|
||||
await self.registration.unregister()
|
||||
const windows = await self.clients.matchAll({ type: 'window' })
|
||||
windows.forEach((client) => client.navigate(client.url))
|
||||
})()
|
||||
)
|
||||
})
|
||||
Reference in new issue
Block a user