Every module had buttons that rendered visually but did nothing when
clicked. Server actions existed for all of them. Created client
components with dialogs/forms and wired them in.
BOOKINGS MODULE:
- BookingStatusActions: Check-in/Check-out/Cancel buttons now call
updateBookingStatus server action with loading states + toast
- CreateRoomDialog: 'Neues Zimmer' opens dialog with room number,
name, capacity, price/night fields → calls createRoom
- CreateGuestDialog: 'Neuer Gast' opens dialog with first/last name,
email, phone fields → calls createGuest
COURSES MODULE:
- EnrollParticipantDialog: 'Teilnehmer anmelden' on participants
page opens dialog with first/last name, email, phone → calls
enrollParticipant
EVENTS MODULE:
- EventRegistrationDialog: 'Anmeldung' button on event detail opens
dialog with participant data + DOB → calls registerForEvent
- CreateHolidayPassDialog: 'Neuer Ferienpass' opens dialog with name,
year, description, price, date range → calls createHolidayPass
NEWSLETTER MODULE:
- CreateTemplateDialog: 'Neue Vorlage' opens dialog with name,
subject, HTML body → calls createTemplate
SITE-BUILDER MODULE:
- Posts 'Neuer Beitrag' button now links to /posts/new page
All dialogs use German labels, helpful placeholders, loading spinners,
toast notifications, and form validation appropriate for association
board members (Vereinsvorstände, 40-65, moderate tech skills).
The SEPA batch detail page was a dead end: users could create a batch
but had no way to add payment positions or generate the XML file.
Added SepaBatchActions client component with three key workflows:
1. 'Mitglieder hinzufügen' — auto-populates batch from all active
members who have a SEPA mandate and dues category (calls existing
populateBatchFromMembers server action)
2. 'Einzelposition' — dialog to manually add a single debit item
with Name, IBAN, Amount, and Verwendungszweck fields
3. 'XML herunterladen' — dialog for creditor info (Gläubiger-Name,
IBAN, BIC, Gläubiger-ID) then generates and triggers download of
the SEPA pain.008 XML file. Disabled when batch has 0 positions.
Also fixed: SEPA list page crashed because a Server Component had an
onClick handler on a <tr> — removed the invalid event handler.
Target demographic: German association treasurers (Kassenwarte) who
need a straightforward workflow for annual membership fee collection
via SEPA Lastschrift.
- fix(member-detail): display gender in German (Männlich/Weiblich/Divers)
instead of raw English enum values (male/female/diverse)
- fix(member-detail): display country names in German (Österreich, Deutschland)
instead of raw ISO codes (AT, DE)
- fix(member-statistics): total member count was always 0
getStatistics() returns per-status counts without a total key;
now computes total by summing all status counts
- fix(i18n): add 56 breadcrumb segment translations for DE and EN
Breadcrumbs were showing English path segments (Courses, Calendar,
Registrations) because translation keys for URL path segments were
missing. Added all segment-level route translations so breadcrumbs
now display in German throughout the app.
- fix(member-management): Zod v4 .partial() on refined schema crash
Separated CreateMemberBaseSchema from superRefine so .partial()
works for UpdateMemberSchema. Fixes members-cms page crash.
- fix(course-management): snake_case→camelCase stats normalization
getQuickStats RPC returns snake_case keys but templates expect
camelCase. Added normalization layer so stats cards display values.
- fix(blog): add missing cover images for 5 German blog posts
Posts referenced /images/posts/*.webp that didn't exist.
- fix(docker): remove non-existent catch_entries table from bootstrap
dev-bootstrap.sh granted permissions on catch_entries which has no
migration. Removed the stale reference.
- docs: add qa-checklist.md with full test report
The previous lint fix incorrectly renamed ctx to _ctx in server actions
that actually USE ctx.user.id for authorization. This caused runtime
'ctx is not defined' errors when creating pages, modules, etc.
Reverted all 13 action files back to using ctx properly.
- Enable all 3 modules via NEXT_PUBLIC_ENABLE_* build args + runtime env
- Fix empty-string-to-null for date/optional columns in all module APIs:
fischerei (24 fixes), verbandsverwaltung (15 fixes), sitzungsprotokolle (2 fixes)
- CACHE_BUST=12 for full rebuild with new feature flags
Course and event creation Server Actions were failing with 'Something went
wrong' because empty form strings ('') were being inserted into date/uuid
columns which reject empty strings. Now converts '' to null for all
optional fields (dates, descriptions, IDs, contact info).
Version 3 of the kit:
- Radix UI replaced with Base UI (using the Shadcn UI patterns)
- next-intl replaces react-i18next
- enhanceAction deprecated; usage moved to next-safe-action
- main layout now wrapped with [locale] path segment
- Teams only mode
- Layout updates
- Zod v4
- Next.js 16.2
- Typescript 6
- All other dependencies updated
- Removed deprecated Edge CSRF
- Dynamic Github Action runner
* 2.24.1
- Updated dependencies
- MCP Server: better compatibility with Windows
- MCP Server: allow using a custom root for better flexibility
- Version Check: use package.json version instead of number of commits
- Prettier: reformatted some files
- Add SSH_AUTH_SOCK to dev passThroughEnv to solve SSH issues; handle execSync errors
- Use GIT_SSH to fix SSH issues on Windows
- Updated Stripe version
- Updated application version from 2.24.0 to 2.24.1 in package.json.
- Enhanced error handling in billing services to include error causes for better debugging.
* chore: bump version to 2.23.13 and update dependencies
- Updated application version from 2.23.12 to 2.23.13 in package.json.
- Upgraded several dependencies including @marsidev/react-turnstile to 1.4.2, @next/bundle-analyzer to 16.1.6, @next/eslint-plugin-next to 16.1.6, and others for improved functionality and security.
- Adjusted package versions in pnpm-lock.yaml and pnpm-workspace.yaml for consistency across the project.
- Removed unused AI translation functionality from translations-comparison component to streamline the codebase.
* refactor: clean up code formatting and update Stripe API version
- Removed unnecessary blank lines in LineItemDetails component for improved readability.
- Enhanced formatting in PricingItem component for better clarity.
- Updated Stripe API version from '2025-12-15.clover' to '2026-01-28.clover' for compatibility with the latest features.
- Adjusted i18n initialization in email templates for consistency.
- Reformatted props in AdminReactivateUserDialog for better structure.
- Cleaned up type imports in ImageUploadInput component.
* chore: bump version to 2.23.10 and enhance workspace loading logic
- Updated application version from 2.23.9 to 2.23.10 in package.json.
- Refactored workspace loading functions to use async/await for improved error handling and added redirects for missing workspaces or users.
- Updated sidebar layout components to handle asynchronous data fetching and redirection more effectively.
- Minor adjustments to personal account dropdown styles for consistency.
* refactor: remove unused import from load-user-workspace.ts
- Removed the unused 'forbidden' import from the load-user-workspace.ts file to clean up the code and improve readability.
* refactor: remove debug log from workspaceLoader function
- Removed the console.log statement for workspace and user in the load-user-workspace.ts file to clean up the code and improve performance.
* chore: bump version to 2.23.11 and update dependencies
- Updated application version from 2.23.10 to 2.23.11 in package.json.
- Upgraded prettier to version 3.8.1.
- Updated various dependencies including @next/bundle-analyzer to 16.1.4, @next/eslint-plugin-next to 16.1.4, @react-email/components to 1.0.6, @stripe/stripe-js to 8.6.4, and @supabase/supabase-js to 2.91.1.
- Improved type support by upgrading @types/node to 25.0.10 and @types/react to 19.2.9.
- Enhanced i18next to version 25.8.0 for better localization support.
* chore: update dependencies and improve package configurations
- Bumped versions of several packages including @turbo/gen and turbo to 2.7.6, @next/bundle-analyzer and @next/eslint-plugin-next to 16.1.5, and @stripe/react-stripe-js to 5.5.0.
- Updated @supabase/supabase-js to 2.93.1 and added @sentry/nextjs to the workspace.
- Changed nodemailer and related types to use catalog references for better dependency management.
- Refactored global styles to include tw-animate-css and removed the old tailwindcss-animate plugin.
- Enhanced type definitions for eslint and related packages.
* chore: update pnpm-lock.yaml with new dependencies and version adjustments
- Added new dependencies: @sentry/nextjs (10.37.0), @types/eslint (9.6.1), @types/nodemailer (7.0.9), eslint (9.39.2), and eslint-config-turbo (2.7.6).
- Updated nodemailer to version 7.0.12 and adjusted its specifier to use catalog references.
- Changed the specifier for several packages to 'catalog:' for improved dependency management.
- Removed outdated references to eslint-community/eslint-utils version 4.9.0.
* feat: enhance user dialog components with success callbacks
- Added state management for open/close functionality in AdminBanUserDialog and AdminReactivateUserDialog.
- Updated BanUserForm and ReactivateUserForm to accept an onSuccess prop, allowing the dialog to close upon successful user action.
* refactor: consolidate AGENTS.md and CLAUDE.md files, update tech stack and architecture details
- Merged content from CLAUDE.md into AGENTS.md for better organization.
- Updated tech stack section to reflect the current technologies used, including Next.js, Supabase, and Tailwind CSS.
- Enhanced monorepo structure documentation with detailed directory purposes.
- Streamlined multi-tenant architecture explanation and essential commands.
- Added key patterns for naming conventions and server actions.
- Removed outdated agent files related to Playwright and PostgreSQL, ensuring a cleaner codebase.
- Bumped version to 2.23.7 to reflect changes.
- Add NEXT_PUBLIC_PRODUCT_NAME as issuer in MFA enroll call
- This improves the user experience in authenticator apps by showing the product name
- Bump version by 2 patch versions
Co-authored-by: Claude <noreply@anthropic.com>
* chore: bump version to 2.23.2 and enhance team account creation
- Updated application version from 2.23.1 to 2.23.2 in package.json.
- Enhanced team account creation to support slugs for non-Latin names, including validation and UI updates.
- Updated localization files to reflect new slug requirements and error messages.
- Refactored related schemas and server actions to accommodate slug handling in team account creation and updates.
* refactor: remove old trigger and function for adding current user to new account
- Dropped the trigger "add_current_user_to_new_account" and the associated function from the database schema.
- Updated permissions for the function public.create_team_account to ensure proper access control.
* chore: bump version to 2.22.1 and update dependencies
- Updated application version from 2.22.0 to 2.22.1 in package.json.
- Updated various dependencies including @marsidev/react-turnstile to 1.4.1, @stripe/react-stripe-js to 5.4.1, @stripe/stripe-js to 8.6.1, and react-hook-form to 7.70.0.
- Adjusted lucide-react version to be referenced from the catalog across multiple package.json files.
- Enhanced consistency in pnpm-lock.yaml and pnpm-workspace.yaml with updated package versions.
* chore: bump version to 2.23.0 and update dependencies
- Updated application version from 2.22.1 to 2.23.0 in package.json.
- Upgraded turbo dependency from 2.7.1 to 2.7.3 in package.json and pnpm-lock.yaml.
- Enhanced end-to-end testing documentation in AGENTS.md and CLAUDE.md with instructions for running tests.
- Updated AuthPageObject to use a new secret for user creation in auth.po.ts.
- Refactored team ownership transfer and member role update dialogs to close on success.
- Improved error handling for weak passwords in AuthErrorAlert component.
- Adjusted database schemas and tests to reflect changes in invitation policies and role management.
* feat: add validation for team names to restrict non-Latin characters
- Implemented a new test case to ensure team accounts cannot be created using non-Latin characters, including Cyrillic, Chinese, Japanese, Arabic, and emoji.
- Updated the team name schema to include a regex validation for Latin characters only.
- Added corresponding error message in the localization file for non-Latin character restrictions.
* chore: bump version to 2.21.18 in package.json
* - Replaced Supabase local environment variables
- Updates packages
- Force Zod v3 if peer deps require Zod v4
- Updated Dev Tool
* Use correct field for pnpm overrides
* Fix inaccuracies in the Agents files; fix type casting in `useForm`
* Updated lock file
* Be more specific when intercepting POST request in flaky e2e test
* chore: bump version to 2.21.13 and update dependencies
- Updated application version from 2.21.12 to 2.21.13 in package.json.
- Upgraded dependencies including @next/bundle-analyzer and @next/eslint-plugin-next to 16.0.8.
- Incremented @supabase/supabase-js to version 2.87.1 across multiple package.json files.
- Updated @types/node to version 24.10.2 for consistency in pnpm-lock.yaml and pnpm-workspace.yaml.
- Adjusted various package.json files to reflect updated versions for @ai-sdk/openai and @marsidev/react-turnstile.
* refactor: enhance invitation form submission handling
- Updated the invitation form submission process to wait for the response from the server after clicking the submit button, ensuring that the request is completed before proceeding.
- Cleaned up the locator for the continue button for improved readability.
* chore: bump version to 2.21.12 and implement safe redirect path validation
- Updated application version from 2.21.11 to 2.21.12 in package.json.
- Introduced `getSafeRedirectPath` and `isSafeRedirectPath` utility functions to validate user-supplied redirect URLs, enhancing security against open redirect attacks.
* fix: address page reload issue in Admin tests for CI
- Bumped versions for @next/bundle-analyzer and @next/eslint-plugin-next to 16.0.7.
- Updated react and react-dom versions to 19.2.1 across multiple package.json files.
- Incremented supabase version to 2.65.3 in pnpm-lock.yaml and pnpm-workspace.yaml.
- Adjusted various package.json files to utilize catalog dependencies for improved management.
- Updated application version from 2.21.8 to 2.21.9 in package.json.
- Upgraded dependencies including prettier to version 3.7.4, @supabase/supabase-js to version 2.86.0, and @tanstack/react-query to version 5.90.11.
- Adjusted various package.json files to reflect updated versions for lucide-react, react-hook-form, and nodemailer.
- Enhanced pnpm-lock.yaml and pnpm-workspace.yaml for consistency in package versions.
- Refactored import statements in several components for improved readability.