49 Commits

Author SHA1 Message Date
t.indorf 4cd16773c1 Merge branch 'codex/live-testplan-doc' 2026-05-23 12:47:44 +02:00
t.indorf 74dc2d6b57 Merge branch 'codex/notdienst-plan-fix'
# Conflicts:
#	src/app/dashboard/notdienst/plan/plan-view.tsx
2026-05-23 12:47:35 +02:00
t.indorf 27c5a6940a feat: implement premium responsive mobile shell and drawer 2026-05-22 15:50:03 +02:00
t.indorf f28956194c feat: add directory opt-out sync and layout/xss seed data extensions 2026-05-22 15:22:12 +02:00
t.indorf e9595fab21 feat: show family assignment counts in notdienst planning dropdown and support editing unassigned days in published plans 2026-05-21 14:29:13 +02:00
t.indorf f6acb3d271 feat: default to Month view and implement household services filter toggle for parents 2026-05-21 13:24:42 +02:00
t.indorf 339563bf4d feat: display published Notdienst assignments in appointment calendar with custom styling for own assignments 2026-05-21 13:04:52 +02:00
t.indorf 9915c8213e fix(notdienst): resolve timezone offset mismatch in plan generation and fix linter warning in calendar modal 2026-05-21 12:53:46 +02:00
t.indorf 7eaa198a29 fix(notdienst): resolve timezone offset mismatch in plan generation 2026-05-21 12:41:18 +02:00
t.indorf cf3fb82afe Mark all TODOs as completed in UI-TODO.md 2026-05-21 11:41:50 +02:00
t.indorf 88f9c156fc Merge remote-tracking branch 'origin/main' into codex/notdienst-month-settings 2026-05-21 10:47:14 +02:00
t.indorf ab7432f3a3 Merge branch 'codex/replace-alert-dialogs' into codex/notdienst-month-settings 2026-05-21 10:46:31 +02:00
t.indorf 84aae1d72e Implement missing UI button features, filters, search, and view toggles across all modules 2026-05-21 10:44:23 +02:00
t.indorf beffba65c5 Document UI no-op follow-ups 2026-05-20 23:51:10 +02:00
t.indorf ec2e0b01e9 Replace native confirms with dialogs 2026-05-20 23:49:42 +02:00
t.indorf 89364e9011 Replace native confirms with dialogs 2026-05-20 23:48:40 +02:00
t.indorf e7eb43462c Fix server/client component boundary issue with reasonColor/reasonLabel helper functions by moving them to shared utils 2026-05-20 23:09:59 +02:00
t.indorf e25a3bcc04 Extend database seed script with extra families, RSVP events, draft plans, pending alerts, attachments, and audit logs 2026-05-20 23:05:54 +02:00
t.indorf 1c5d2f10ac Apply linen design system across app 2026-05-20 22:47:52 +02:00
t.indorf 99ff978116 Fix live test follow-up issues 2026-05-19 14:28:32 +02:00
t.indorf 3fa3b9b108 Merge branch 'codex/fix-invite-activation' 2026-05-19 11:14:28 +02:00
t.indorf 84714b8b32 Fix server action state exports 2026-05-19 11:09:53 +02:00
t.indorf 811468a22b Merge branch 'codex/improve-invite-email' 2026-05-19 10:51:57 +02:00
t.indorf 968d108c28 Improve invite email layout 2026-05-19 10:29:42 +02:00
t.indorf b5eb288104 Merge branch 'codex/fix-public-landing-clean' 2026-05-18 16:56:45 +02:00
t.indorf ce1a5c9e42 Make landing page public and redirect auth users directly 2026-05-18 16:55:21 +02:00
t.indorf 5dca7c76f8 testplan 2026-05-17 23:55:35 +02:00
t.indorf 6c79e0a8e1 Merge claude/profil-and-mail-fixes into main
Fix mail layouts, /invite form-reset, profile validation
2026-05-17 23:54:07 +02:00
t.indorf 935845ce56 Merge claude/onboarding-fixes into main
Persist values, tighten validation, and a11y on /onboarding
2026-05-17 23:53:57 +02:00
t.indorf cb4f7409bc Merge claude/register-fixes into main
Persist values, a11y errors, and aria-invalid on /register
2026-05-17 23:53:38 +02:00
t.indorf fa06da324c Fix mail layouts, /invite form-reset, profile validation
Mail templates (6 templates touched):
- New shared `_styles.ts` exports a robust font stack starting with
  Arial/Helvetica so mail readers that lack -apple-system and
  BlinkMacSystemFont don't fall back to Monospace (observed in at least
  one webmail client).
- `fontFamily` is now set on every text-bearing element, not only on
  `<Body>`, because some clients (Outlook, several webmail readers) do
  not inherit body CSS into nested sections.
- ASCII substitutions are gone: "Ueber" → "Über", "fuer" → "für",
  "bestaetigen" → "bestätigen", "uebernehmen" → "übernehmen",
  "verlaesslich" → "verlässlich".
- InviteEmail + NewsEmail buttons switch from the off-brand yellow
  (#f0b84b) to the brand dark green so the CTA matches the header.

/invite form:
- InviteState gains an `attempt` counter plus echoed checkbox `values`,
  mirroring the /register and /onboarding fix from earlier branches. A
  failed submit no longer wipes the Datenschutz / Adressbuch-Opt-In
  ticks. Passwords stay empty for security.
- Field error <p> elements gain role="alert" + aria-live="polite" so
  screen readers announce validation failures on submit. Inputs use
  aria-describedby to link to error / helper text.

Profile validation:
- Telephone numbers must match a permissive pattern that still rejects
  obvious garbage (previously "abc-123-not-a-phone" was accepted).
- Postal codes must match an alphanumeric pattern of 3–10 chars
  (previously "ABCDE" was accepted).
- Child date-of-birth is now validated via superRefine: it must be a
  parseable date, not in the future, and not before 1900. Previously a
  kid born in 2030 was accepted.
- The three Profil server actions now surface the first Zod issue
  message instead of generic "Ungültige Eingabedaten." toasts.

Misc:
- "fuer" → "für" in the Adressbuch page subtitle.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 23:49:01 +02:00
t.indorf 211bb9e300 Add Codex branch workflow rule 2026-05-17 23:14:06 +02:00
t.indorf af2c3b245a Persist values, tighten validation, and a11y on /onboarding
- Server action echoes kitaName, the three module booleans, and the
  Mindest-Verfügbarkeiten value on every error path so failed submits no
  longer wipe what the user typed; OnboardingState gains an `attempt`
  counter that drives a per-field remount key on the client.
- Schema now rejects min=0 when the Notdienst module is active (via
  superRefine) — previously a kita could be created with 0 minimum days,
  which is fachlich sinnlos. When the module is off, 0 stays valid.
- Validation error messages reworded from terse fragments ("Nicht
  negativ.", "Bitte ganze Zahl.") to full sentences.
- Field error <p> elements gain role="alert" + aria-live="polite" so
  screen readers announce them on submit.
- CardTitle now accepts as="h1" and the onboarding page uses it for
  "Willkommen, …" — the page now has a real top-level heading.
- ModuleCheckbox uses aria-labelledby + aria-describedby so the
  accessible name is just the module title; the longer description is
  exposed as secondary info instead of being concatenated into the AN.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 20:46:31 +02:00
t.indorf e8b62f6008 Tighten landing page positioning 2026-05-17 20:43:26 +02:00
t.indorf 380c67963b Add superadmin audit and Kita management 2026-05-16 12:02:59 +02:00
t.indorf 8640001f6f Persist values, a11y errors, and aria-invalid on /register
- Server action now echoes firstName, lastName, email, and the privacy
  checkbox state on every error path so failed submits don't wipe the form.
- New `attempt` counter on RegisterState drives a remount key per field,
  bypassing React's default <form action> reset semantics.
- Error <p> elements gain role="alert" + aria-live="polite" so screen
  readers announce validation failures live.
- Privacy checkbox now flags aria-invalid when not accepted and points to
  the error message via aria-describedby.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 11:55:28 +02:00
t.indorf 0b80c62beb Add contact email confirmation and abuse protection 2026-05-16 11:38:30 +02:00
t.indorf 9542def530 Add RSVP events and Unsplash image support 2026-05-15 21:28:36 +02:00
t.indorf ed6786b6ea added missing packages 2026-05-11 16:29:32 +02:00
t.indorf 89cf1dfe84 added more page content 2026-05-11 16:06:33 +02:00
t.indorf 70a50d89ab added robots udn sitemap 2026-05-11 12:23:43 +02:00
t.indorf 928ddac5b3 added postgres to the stack 2026-05-11 11:19:24 +02:00
t.indorf b0cf3adce6 removed the coolify network 2026-05-11 11:09:27 +02:00
t.indorf fcea4a9168 integrated umami 2026-05-11 09:28:06 +02:00
t.indorf 639c470cb2 chore: update contact details and placeholder values in impressum page 2026-05-09 23:47:21 +02:00
t.indorf 824cb9313c chore: add coolify network to docker-compose configuration 2026-05-09 23:23:28 +02:00
t.indorf 7aff691803 continued the kita-planer 2026-05-08 14:32:14 +02:00
t.indorf b686e714ff Add non-destructive dev seed on startup 2026-05-06 22:31:07 +02:00
t.indorf 9f452fccac Initial commit from Create Next App 2026-05-03 23:33:53 +02:00