Commit Graph

9 Commits

Author SHA1 Message Date
T. Zehetbauer
c6d564836f fix: add missing newlines at the end of JSON files; clean up formatting in page components
Some checks failed
Workflow / ʦ TypeScript (push) Failing after 17m4s
Workflow / ⚫️ Test (push) Has been skipped
2026-04-02 11:02:58 +02:00
Zaid Marzguioui
b26e5aaafa feat: pre-existing local changes — fischerei, verband, modules, members, packages
Some checks failed
Workflow / ʦ TypeScript (push) Failing after 6m20s
Workflow / ⚫️ Test (push) Has been skipped
Commits all remaining uncommitted local work:

- apps/web: fischerei, verband, modules, members-cms, documents,
  newsletter, meetings, site-builder, courses, bookings, events,
  finance pages and components
- apps/web: marketing page updates, layout, paths config,
  next.config.mjs, styles/makerkit.css
- apps/web/i18n: documents, fischerei, marketing, verband (de+en)
- packages/features: finance, fischerei, member-management,
  module-builder, newsletter, sitzungsprotokolle, verbandsverwaltung
  server APIs and components
- packages/ui: button.tsx updates
- pnpm-lock.yaml
2026-04-02 01:19:54 +02:00
Zaid Marzguioui
a1719671df fix: QA remediation — all 19 audit fixes (C+ → A-)
Some checks failed
Workflow / ⚫️ Test (push) Has been cancelled
Workflow / ʦ TypeScript (push) Has been cancelled
## Summary
Fixes all 31  FAILs and most ⚠️ WARNs from the QA audit (113/33⚠️/31).

## Changes

### FIX 1 — Loading Skeleton
- Replace full-screen GlobalLoader with PageBody-scoped animate-pulse skeleton
- Sidebar stays visible during page transitions

### FIX 2 — Status Badges i18n (15 files, 12 label maps)
- Add *_LABEL_KEYS maps to lib/status-badges.ts (i18n keys instead of German)
- Update all 15 consumer files to use t(*_LABEL_KEYS[status])
- Add status namespace to finance.json (de+en)
- Add registration_open to events.json status (de+en)
- Add status block to cms.json events section (de+en)
- Add missing pending/bounced keys to newsletter.json (de+en)
- Add active key to courses.json status (de+en)

### FIX 3 — Error Page i18n
- Replace 4 hardcoded German strings with useTranslations('common')
- Add error.* keys to common.json (de+en)

### FIX 4 — Account Not Found i18n
- Convert AccountNotFound to async Server Component
- Resolve default props from getTranslations('common')
- Add accountNotFoundCard.* keys to common.json (de+en)

### FIX 5 — Publish Toggle Button (6 strings + 2 bugs)
- Add useTranslations('siteBuilder'), replace 6 German strings
- Fix: add response.ok check before router.refresh()
- Fix: add disabled={isPending} to AlertDialogAction
- Fix: use Base UI render= prop pattern (not asChild)
- Add pages.hide/publish/hideTitle/publishTitle/hideDesc/publishDesc/
  toggleError/cancelAction to siteBuilder.json (de+en)

### FIX 6 — Cancel Booking Button (7 strings + bugs)
- Add useTranslations('bookings'), replace all strings
- Fix: use render= prop pattern, add disabled={isPending}
- Add cancel.* and calendar.* keys to bookings.json (de+en)

### FIX 7 — Portal Pages i18n (5 files, ~40 strings)
- Create i18n/messages/de/portal.json and en/portal.json
- Add 'portal' to i18n/request.ts namespace list
- Rewrite portal/page.tsx, invite/page.tsx, profile/page.tsx,
  documents/page.tsx with getTranslations('portal')
- Fix portal-linked-accounts.tsx: add useTranslations, replace
  hardcoded strings, fix AlertDialogTrigger render= pattern

### FIX 8 — Invitations View (1 string)
- Replace hardcoded string with t('invitations.emptyDescription')
- Add key to members.json (de+en)

### FIX 9 — Dead Navigation Link
- Comment out memberPortal nav entry (page does not exist)

### FIX 10 — Calendar Button Accessibility
- Add aria-label + aria-hidden to all icon buttons in bookings/calendar
- Add aria-label + aria-hidden to all icon buttons in courses/calendar
- Add previousMonth/nextMonth/backToBookings/backToCourses to
  bookings.json and courses.json (de+en)

### FIX 11 — Pagination Aria Labels
- Add aria-label to icon-only pagination buttons in finance/page.tsx
- Fix Link/Button nesting in newsletter/page.tsx, add aria-labels
- Add pagination.* to common.json (de+en)
- Add common.previous/next to newsletter.json (de+en)

### FIX 12 — Site Builder Type Safety
- Add SitePage interface, replace Record<string,unknown> in page.tsx
- Add SitePost interface, replace Record<string,unknown> in posts/page.tsx
- Remove String() casts on typed properties

### FIX 14 — EmptyState Heading Level
- Change <h3> to <h2> in empty-state.tsx (WCAG heading sequence)

### FIX 16 — CmsPageShell Nullish Coalescing
- Change description ?? <AppBreadcrumbs /> to !== undefined check

### FIX 17 — Meetings Protocol Hardcoded Strings
- Replace 5 hardcoded German strings with t() in protocol detail page
- Add notFound/back/backToList/statusPublished/statusDraft to meetings.json

### FIX 18 — Finance Toolbar Hardcoded Strings
- Replace toolbar filter labels with t() calls in finance/page.tsx

### FIX 19 — Admin Audit Hardcoded Strings
- Add getTranslations('cms.audit') to audit page
- Replace title, description, column headers, pagination labels
- Add description/timestamp/paginationPrevious/paginationNext to cms.json

## Verification
- tsc --noEmit: 0 errors
- Turbopack: Compiled successfully in 9.3s
- Lint: 0 new errors introduced
- All 8 audit verification checks pass
2026-04-02 01:18:15 +02:00
T. Zehetbauer
f82a366a52 Merge remote-tracking branch 'origin/main'
Some checks failed
Workflow / ʦ TypeScript (push) Failing after 4m51s
Workflow / ⚫️ Test (push) Has been skipped
2026-04-01 14:05:13 +02:00
Zaid Marzguioui
49fd6b65b9 fix(supabase): use internal URL for all server-side clients with cookie name matching
Some checks failed
Workflow / ʦ TypeScript (push) Failing after 5m38s
Workflow / ⚫️ Test (push) Has been skipped
ROOT CAUSE FIX: All server-side Supabase clients (server-client, middleware-client,
server-admin-client) now use SUPABASE_INTERNAL_URL (http://supabase-kong:8000)
when available, with cookieOptions.name set to match the external URL's cookie key
(e.g. sb-myeasycms-auth-token). This gives us:
- Reliable Docker-internal networking (no hairpin NAT through Traefik)
- Correct session cookie matching between browser and server
- No more 500 errors on SSR pages that query Supabase

Reverted per-page try/catch workarounds since root cause is now fixed.
2026-04-01 13:53:59 +02:00
T. Zehetbauer
5e1976f07b Merge remote-tracking branch 'origin/main' 2026-04-01 13:48:10 +02:00
Zaid Marzguioui
4aa11cd408 fix: add error handling to meetings + verband dashboard pages
Some checks failed
Workflow / ʦ TypeScript (push) Failing after 5m47s
Workflow / ⚫️ Test (push) Has been skipped
SSR pages crash with 500 when Supabase queries fail (expired session,
network issues). Now catch errors and render with empty data instead
of crashing the entire page.
2026-04-01 13:40:02 +02:00
T. Zehetbauer
59546ad6d2 Add account hierarchy framework with migrations, RLS policies, and UI components 2026-03-31 22:18:04 +02:00
Zaid Marzguioui
ebd0fd4638 feat: complete CMS v2 with Docker, Fischerei, Meetings, Verband modules + UX audit fixes
Some checks failed
Workflow / ʦ TypeScript (push) Failing after 6m26s
Workflow / ⚫️ Test (push) Has been skipped
Major changes:
- Docker Compose: full Supabase stack (11 services) equivalent to supabase CLI
- Fischerei module: 16 DB tables, waters/species/stocking/catch books/competitions
- Sitzungsprotokolle module: meeting protocols, agenda items, task tracking
- Verbandsverwaltung module: federation management, member clubs, contacts, fees
- Per-account module activation via Modules page toggle
- Site Builder: live CMS data in Puck blocks (courses, events, membership registration)
- Public registration APIs: course signup, event registration, membership application
- Document generation: PDF member cards, Excel reports, HTML labels
- Landing page: real Com.BISS content (no filler text)
- UX audit fixes: AccountNotFound component, shared status badges, confirm dialog,
  pagination, duplicate heading removal, emoji→badge replacement, a11y fixes
- QA: healthcheck fix, API auth fix, enum mismatch fix, password required attribute
2026-03-31 16:35:46 +02:00