feat: plakat redesign phase 4 (chat window, contact, footer, cleanup)

- 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>
This commit is contained in:
denshooter
2026-10-15 19:05:24 +02:00
parent 08e856120b
commit 4f5089ce38
33 changed files with 534 additions and 2572 deletions
+4
View File
@@ -15,6 +15,8 @@ export function windowFor(obj: TischObject): WindowRequest {
return { kind: "read" };
case "photo":
return { kind: "about" };
case "chat":
return { kind: "chat" };
}
}
@@ -31,6 +33,8 @@ export function labelFor(obj: TischObject, labels: TischLabels): string {
return labels.bookLabel;
case "photo":
return labels.photoCaption;
case "chat":
return labels.chatCard;
case "sticker":
return labels.sticker;
}