cesnimda
8132c202ba
fix: mobile theme toggle + UI polish; refresh both case studies
...
- fix: theme toggle did nothing on mobile — duplicate id=theme-toggle bound only the
desktop button; bind all [data-theme-toggle] instead (root cause)
- header: 2px gap top/bottom; TraceMotif svg 24->28 so the status dot isn't clipped
- remove private git.cesnimda.uk links (footer, contact, mobile nav, JSON-LD sameAs);
soften homelab diagram label
- both projects now 'in development'; about wording: Gmail analytics -> inbox cleanup
- JobTrack: refreshed to current app (Kanban pipeline, deterministic CV match, assistive
AI, EF Core) + new mockups; InboxIntel: .NET 10, pgvector + Ollama semantic search,
inbox-health analytics, split-view + new mockups; meta descriptions updated
- new ATS CV PDFs (from the new docx, via Word)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-10 09:54:30 +02:00
cesnimda
bfa8cfd357
feat: homelab case study from live infra; Traefik-based deploy
...
- rewrote homelab (content + topology diagram + stack) from a live inspection of the host:
Ubuntu 24.04, ~30 Docker services behind Traefik (Cloudflare-fronted, TLS, HTTP/3),
Authentik SSO forward-auth, CrowdSec, Pi-hole, self-hosted Gitea + CI runner, socket-proxy,
per-app network isolation; WordPress framed as being decommissioned (not future arch)
- deploy: docker-compose now uses Traefik labels + traefik_proxy network (was assumed nginx
edge); .env.example adds SITE_HOST/TRAEFIK_ENTRYPOINT; colophon + ARCHITECTURE/DOCKER/
DEPLOYMENT specs corrected nginx-edge -> Traefik (site container still serves via nginx)
- PROJECT_STATUS: pre-launch checklist updated; infra section added
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-04 11:23:09 +02:00
cesnimda
b4b293bdb4
feat: real headshot + JobTrack seed-data screenshots
...
- portrait: warm outdoor headshot, cropped 4:5 and optimised to WebP (800x1000, 116kB),
used in hero + about
- JobTrack case study: three real seed-data captures (applications, dashboard, reminders)
optimised to WebP (~40kB each) replacing the placeholder skeletons
- alts/captions updated to match the real screens
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-04 11:22:48 +02:00
cesnimda
18c556bd54
feat: ATS-safe CV rework (EN + NO), replacing scrambled two-column PDFs
...
CI / quality (push) Has been cancelled
CI / e2e (push) Has been cancelled
CI / lighthouse (push) Has been cancelled
CI / relay (push) Has been cancelled
CI / images (push) Has been cancelled
- single-column, real-text PDFs: standard headings (Summary, Skills, Experience,
Projects, Education), consistent dates, no letter-spacing
- 'Systems Developer, eight years experience' (drops 'mid-level'); apprentice->developer
progression shown; Projects section added; Norwegian written natively (errors fixed)
- one page each, ~8 kB (was 132/172 kB); verified clean ATS text extraction + reading order
- generator committed to tools/cv (content.js + pdfkit/docx builders) for reproducibility
- editable .docx kept alongside; site file-size labels updated
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-04 07:22:57 +02:00
cesnimda
033c9ec315
test: vitest unit + playwright e2e suites; fix a11y, contrast, no-JS reveal
...
- vitest: dictionary parity, slug-map bijection, content-schema validation, JSON-LD (23)
- playwright: both locales, language-switch mapping (incl. no-JS), CV downloads,
form happy-path + honeypot, axe a11y on 5 templates x 2 themes (23)
- fix: raise ink-faint + light accent to meet WCAG AA 4.5:1 (axe-verified)
- fix: gate reveal animations behind html.js so content is visible without JS
(progressive enhancement - was hidden at opacity 0); scan reduced-motion path
- fix: validate contact form before the anti-bot time-trap (no false success)
- chore: ESLint node globals, typed diagram props, resvg fontFiles, prettier pass
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-04 06:14:18 +02:00
cesnimda
1fce1b3cec
feat: core layout, UI atoms, homepage + behaviour modules
...
- UI atoms: Chip, Button, SplitCvButton, LangSwitch, ThemeToggle, Card,
SectionLabel, TraceMotif, FramedImage
- core: Base/Seo/Header/MobileNav/Footer/HintBar/SkipLink/ThemeScript
- homepage sections: Hero, ProofStrip, SkillsGrid, ProjectCards,
ExperienceTimeline, AboutTeaser, ContactBand + Homepage composition (EN/NO)
- behaviour modules: theme, nav (overlay/hint/copy/header), observer (reveal/spy),
lightbox, form — progressive enhancement, fail-silent
- SEO head component: meta, hreflang from slug map, JSON-LD, OG references
- move content data to src/data (avoid Astro reserved content-collection folder)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-04 01:20:46 +02:00