Lucas Winther and Claude Opus 5.5
7d9a0054b2
docs: handoff for spec 009; drop its plan before merging
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-12 11:24:22 +01:00
Lucas Winther and Claude Opus 5.5
cf53e4280a
test(e2e): axe-core WCAG A/AA checks on every kind of page
...
Colour contrast is left out until the dim tokens are retuned (owner looks first).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-12 11:12:17 +01:00
Lucas Winther and Claude Opus 5.5
5491230807
docs(agents): work-k2 is the visual truth for /work/
...
Owner asked for the rules file change on 2026-11-12.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-12 10:56:29 +01:00
Lucas Winther and Claude Opus 5.5
974b3eb0df
feat(work): CV-first work page, six proud projects, record and courses (spec 009)
...
- CV header with highlights and keeping-up summary replaces the intro and Now strip
- "Projects I'm proudest of": up to six featured panels; screenshots muted until hover
- "Also made" list; searching it also lists matching courses
- Record section: recognition & volunteering, courses by topic
- /work/learning/: searchable course list (plain script), in the sitemap
- Top bar: Projects, Record, Writing, CV; no Bluesky link in the work footer
- Highlights: only the placement takes the accent (owner, after the preview)
Owner looked at the rendered preview on 2026-11-12 before this commit.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-12 10:44:46 +01:00
Lucas Winther and Claude Opus 5.5
249e4a8017
feat(core): course summary and search
...
courseSummary groups courses by topic, ordered by course time;
courseMatches searches title, provider, topic and keywords;
formatHours and monthYear format the numbers the page shows.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-12 10:06:29 +01:00
Lucas Winther and Claude Opus 5.5
43a22adc7a
feat(library): recognition.yml and courses.yml
...
Two optional content files for spec 009: competitions and volunteering,
and completed courses and labs. Every malformed field is reported by
file and field; unknown fields are errors. Synthetic fixtures.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-12 10:05:59 +01:00
Lucas Winther and Claude Opus 5.5
1041c8e5b8
docs(specs): 009 work page, CV first, with its plan and mockup rounds
...
Six rounds of mockups with the owner on 2026-11-12; K v2 picked.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-12 10:03:26 +01:00
Lucas Winther and Claude Fable 5.2
5457cb4368
docs: pre-merge checks in the handoff; note a one-off fixture build hang
...
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com >
2026-11-11 10:59:55 +01:00
Lucas Winther and Claude Fable 5.2
2ed5401928
docs(handoff): the 2026-11-11 stack is merged; drop the plans for 006 and 007
...
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com >
2026-11-11 10:50:48 +01:00
Lucas Winther and Claude Fable 5.2
3c094522f2
docs(handoff): state after the 2026-11-11 audit session; /simple mockups
...
Spec 008 is approved and on hold at the owner's request; its mockups and
screenshots move into mockups/ so they outlive the session.
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com >
2026-11-11 10:48:46 +01:00
Lucas Winther and Claude Opus 5.5
4ddc79e9f4
docs(plans): 008 /simple side index with pins
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-11 10:47:23 +01:00
Lucas Winther and Claude Fable 5.2
839a216d41
docs(specs): 008 /simple side index with pins
...
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com >
2026-11-11 10:45:07 +01:00
Lucas Winther and Claude Fable 5.2
ecd788af49
docs(audit): findings 8 and 9 fixed by spec 007
...
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com >
2026-11-11 10:41:58 +01:00
Lucas Winther and Claude Opus 5.5
38a11ebb47
docs(specs): 007 implemented
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-11 10:40:38 +01:00
Lucas Winther and Claude Opus 5.5
82cc2a9fc9
fix(site): an SVG is never a link preview image
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-11 10:30:35 +01:00
Lucas Winther and Claude Opus 5.5
77dd15ac03
chore(deploy): SITE_URL defaults to the public address in the image; docs for the sitemap and feeds
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-11 10:28:30 +01:00
Lucas Winther and Claude Opus 5.5
ab611c2de8
feat(site): canonical, Open Graph and feed links in every head; sitemap and Atom feeds
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-11 10:27:24 +01:00
Lucas Winther and Claude Opus 5.5
765b6ba906
feat(site): site address in site data; sitemap pages and feed entries
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-11 10:24:03 +01:00
Lucas Winther and Claude Opus 5.5
679964ee35
feat(site): link preview head tags and SITE_URL parsing as pure functions
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-11 10:22:13 +01:00
Lucas Winther and Claude Opus 5.5
59bab7a001
feat(site): Atom feed and sitemap XML as pure functions
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-11 10:21:26 +01:00
Lucas Winther and Claude Opus 5.5
ec876b01ed
docs(plans): 007 link previews, sitemap and feeds
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-11 10:19:48 +01:00
Lucas Winther and Claude Fable 5.2
f020372b44
docs(audit): finding 3 fixed by spec 006
...
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com >
2026-11-11 10:14:56 +01:00
Lucas Winther and Claude Opus 5.5
c3413c07b4
docs(specs): 006 implemented
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-11 10:14:02 +01:00
Lucas Winther and Claude Opus 5.5
e9d02cc112
test(e2e): a stored preference is pressed from the first paint on / and /work/
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-11 10:06:01 +01:00
Lucas Winther and Claude Opus 5.5
fdad3e86a0
feat(site): the start page's gate is a plain page script, no React
...
Gate.tsx (an island that rendered nothing) becomes scripts/gate.ts with its key
handling and readout text as pure functions. With the switch already plain, the
start page has no island and loads none of the React runtime.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-11 09:49:38 +01:00
Lucas Winther and Claude Opus 5.5
35415e774d
feat(site): preference switch as plain HTML, pressed from the first paint
...
The React PreferenceSwitch island is replaced by PreferenceSwitch.astro: static
markup, an inline script that presses the stored choice before first paint, and
a page script for clicks and lw:pref. Used on the start page and the work bar.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-11 09:38:57 +01:00
Lucas Winther and Claude Opus 5.5
39148fa7f0
feat(site): plain preference switch script with a first-paint painter
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-11 09:36:02 +01:00
Lucas Winther and Claude Opus 5.5
bef8ddf2e6
docs(plans): 006 start page without React
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-11 09:35:13 +01:00
Lucas Winther and Claude Fable 5.2
137f2a4ad5
docs(specs): 006 start page without React, 007 link previews, sitemap and feeds
...
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com >
2026-11-11 09:29:38 +01:00
Lucas Winther and Claude Fable 5.2
07854c6a2b
fix: stop inlining fonts into CSS, page the Ghost fetch, audit small fixes
...
- vite assetsInlineLimit 0: fonts-work.css 42.8 KB -> 5.9 KB
- Ghost posts fetched with limit=100&page=N instead of limit=all
- 404 title uses site.name; drop the duplicate js-class script on /everything/
- deploy/compose.yml: LISTENBRAINZ_USER
- HANDOFF and TODO: the site is live and the sources ran
Audit findings 2, 6, 7, 18, 19, 21 (docs/audits/2026-11-11-audit.md).
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com >
2026-11-11 09:23:14 +01:00
Lucas Winther and Claude Fable 5.2
d21eb92bd0
docs(audit): 2026-11-11 audit report
...
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com >
2026-11-11 09:21:57 +01:00
Lucas Winther and Claude Opus 5.5
a29ede61fd
docs(todo): LISTENBRAINZ_USER is in the homelab config (lucwin-config d7c08ed)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-10 14:45:17 +01:00
Lucas Winther and Claude Opus 5.5
5dcd59aeb0
docs(handoff): spec 005 merged
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-10 14:42:55 +01:00
Lucas Winther and Claude Opus 5.5
cbc26937a5
docs(handoff): specs 003 and 004 merged
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-10 14:42:55 +01:00
Lucas Winther and Claude Opus 5.5
c9a5b9d6ea
perf(gate): grain as a pre-rendered tile mask instead of a live noise filter; note the hover-lag investigation
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-10 14:40:23 +01:00
Lucas Winther and Claude Opus 5.5
115096e7f0
feat(gate): cassette shows a strip of the song cover with title and artist; collage stacks
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-10 14:19:08 +01:00
Lucas Winther and Claude Opus 5.5
7a9405d410
docs: spec 004 implemented; deploy env, decisions, todo, handoff
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-10 13:44:24 +01:00
Lucas Winther and Claude Opus 5.5
ed534c1d28
feat(sources): ListenBrainz top track of the last 7 days
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-10 13:42:36 +01:00
Lucas Winther and Claude Opus 5.5
453262f4fc
docs(specs): spec 004 listening this week from ListenBrainz; plan
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-10 13:41:15 +01:00
Lucas Winther and Claude Opus 5.5
e97f68f2f3
fix(site): drop the record from song cards; the sleeve spans the card
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-10 13:37:40 +01:00
Lucas Winther and Claude Opus 5.5
779d91884f
docs: spec 003 implemented; remove its plan; handoff
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-10 13:32:10 +01:00
Lucas Winther and Claude Opus 5.5
5712051d8e
fix(sources): page through film ratings until the last film's rating; skip undated history
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-10 13:32:03 +01:00
Lucas Winther and Claude Opus 5.5
576ede4be6
docs: record spec 003 decisions
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-10 13:29:49 +01:00
Lucas Winther and Claude Opus 5.5
acfd9c09b4
feat(site): film posters alternate sides on the wall
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-10 13:27:15 +01:00
Lucas Winther and Claude Opus 5.5
dcb1c93312
feat(sources): last film from Trakt history replaces watching
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-10 13:26:40 +01:00
Lucas Winther and Claude Opus 5.5
c5d95d1f31
docs(specs): spec 003 last film, alternating posters, band photo; plan
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-10 13:24:53 +01:00
Lucas Winther and Claude Opus 5.5
88e88479a9
fix(gate): name at 20/24px
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-10 13:11:59 +01:00
Lucas Winther and Claude Opus 5.5
36b73e567d
fix(gate): larger name across the seam
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-10 12:54:47 +01:00
Lucas Winther and Claude Opus 5.5
23217f573f
docs(handoff): spec 002 merged and pushed
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-10 12:51:50 +01:00
Lucas Winther and Claude Opus 5.5
e6ad1dd86e
docs(handoff): soundtrack tray link chosen
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-11-10 12:49:09 +01:00