- Shared SubpageShell (HeaderClient paper strip + ink footer) and SubpageIntro,
btn/ghost/card helpers in app/_ui/subpage.tsx
- Projects list: poster cards with hard ink shadows, filter pills, ink search field;
no fake 800ms skeleton and no framer-motion opacity:0 in SSR
- Project detail: poster hero, .plakat-prose markdown, links/stack aside,
back link works without JS
- Books: server-side fetch (visible without JS), cover + rating pills
- Legal notice / privacy: moved to app/_ui/*Client.tsx, root routes removed
(middleware always redirects to /[locale]), consent reset via useConsent
- ProjectThumbnail rebuilt on Plakat tokens
- Old Header.tsx + test removed; brown/cream/sand palettes and unused
glass-panel/admin-glass(-light)/liquid-bg-blob/float CSS dropped
(liquid palette, glass-card, admin-glass-card stay for admin + 404)
- .plakat-prose replaces the missing typography plugin
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- AI chat moves into a window/sheet, opened from a new speech-bubble card on
the desk; it now respects the chatbot consent and asks before sending
anything to n8n (previously it ignored the consent)
- Contact as red poster section with big mail address and the form on a paper
card; validation errors are finally shown inline (aria-invalid, role=alert)
- Footer as ink strip with dk0 wordmark, legal links and a button to reopen
the privacy settings
- "About me" in the header opens the about window on the home page
- Remove the old About section and its parts (BentoChat, ActivityFeed,
CurrentlyReading, ReadBooks), the unused ChatWidget, Projects and BentoGrid,
their tests, wrappers, loaders, types and texts
- scripts/directus-cleanup-redesign.mjs: dry run by default, --apply archives
hobbies, tech stack categories and old content pages and deletes four
unused message overrides after a full JSON backup; run only after the
redesign is live on production
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Tapping an object on the desk opens a window (desktop) or a bottom sheet
(mobile) instead of flipping: projects, now, servers, reading, about, contact
- Desktop windows in poster style (2px ink rule, hard offset shadow), open
from the tapped object, thrown by the title bar with momentum and elastic
viewport edges, stack by focus, minimize into a tray, Escape closes the top
window, focus moves to close and returns to the trigger
- Mobile sheets via vaul 1.1.2: drag down to dismiss, overlay, focus trap
- Project window shows live/source links from Directus when present
- Hero "Write me" opens the contact window; still a plain #contact link
without JavaScript
- Shared current-book loader for desk, deck and reading window
- Texts in de/en, i18n key check extended
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- New "Tisch" section replaces the old projects block on the home page
- Objects: project cards from Directus (flip on tap, link to detail page),
thesis ticket with countdown, server card, currently-reading book from
Hardcover (with skeleton), polaroid photo, sticker
- Desktop: Framer Motion drag with momentum, elastic table edges, tilt that
follows throw velocity, bring-to-front, "Tidy up" and "Mess it up"
- Mobile: card deck, swipe the top card away (distance or velocity),
prev/next buttons, live counter, tap to flip
- Both layouts are server rendered and switched by CSS, so content is
visible without JavaScript and nothing jumps on hydration
- Taps after a drag no longer flip cards
- New named colors polaroid/bookcover instead of raw hex classes
- Texts in de/en, i18n key check extended
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- New design tokens: signal red, ink and paper as RGB channels; ink and paper
swap roles in dark mode so every component inverts cleanly
- Fonts via next/font: Bricolage Grotesque (with wdth/opsz axes), Geist,
Geist Mono; drop Inter and Playfair
- Poster hero: kicker, giant DK0 wordmark that reacts to pointer distance
(weight and width through a damped spring, desktop only, off for reduced
motion), claim as h1, intro with thesis countdown, marquee strip
- Header in poster style: transparent over the red hero, paper strip with
ink rule when scrolled or on subpages; drawer menu restyled
- Remove wavy SVG separators, CSS shader gradient, background blobs and
unused providers that caused the pink/purple bands between sections
- Drop the global p/span/div color override so colors inherit properly
- New hero texts in de/en, tests and i18n key check updated
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Override Tailwind ease-out/ease-in-out with stronger curves, add ease-drawer
- hoverOnlyWhenSupported so hover styles never stick on touch devices
- Replace transition-all with explicit properties across the public UI
- Press feedback via active:scale-[0.97] instead of hover:scale-105
- Global prefers-reduced-motion handling (CSS + MotionConfig reducedMotion="user")
- Mobile menu is a real drawer: stays mounted, inert when closed, Escape closes
- Progress and music bars animate scaleX/scaleY instead of width/height
- Fix undefined animate-spin-slow, contain hero CTA shine with overflow-hidden
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>