258 Commits

Author SHA1 Message Date
Torsten Schulz (local)
ac97332e6f feat: Enhance club payment claims and task automation
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 1m0s
- Added `paid_amount_cents` column to `club_payment_claims` for better tracking of payments.
- Implemented compatibility checks for the new column in `clubPaymentClaimService` and `clubTaskAutomationService`.
- Updated various views to handle read-only states when editing is not allowed.
- Refactored forms in `ClubAccountsView`, `ClubInvoicesView`, `ClubTasksView`, and `ClubCommunicationView` to use factory functions for cleaner code.
- Introduced a new migration script to add the `paid_amount_cents` column if it doesn't exist and initialize it for existing paid claims.
- Created a detailed plan for enhancing club features and ensuring stability in existing modules.
2026-07-13 17:01:13 +02:00
Torsten Schulz (local)
90e6c2f9f6 Updates, overview extended, club view implemented 2026-06-23 16:17:07 +02:00
Torsten Schulz (local)
dd91c07694 Mitgliedermeldung jetzt wieder möglich 2026-06-21 17:23:29 +02:00
Torsten Schulz (local)
302ed20a9b more club funtions, fix for team edit 2026-06-21 17:15:04 +02:00
Torsten Schulz (local)
542fae089c implementierung der ersten schritte eine komplett-suite 2026-06-19 15:47:32 +02:00
Torsten Schulz (local)
111b37b287 android version upgrade
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 48s
2026-06-10 13:03:35 +02:00
Torsten Schulz (local)
8ef1f49118 fixed date fields
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 48s
2026-06-10 09:55:50 +02:00
Torsten Schulz (local)
8d1bce2ff9 Fixed tournament - groups in end round and place 3
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 47s
2026-06-10 08:08:31 +02:00
Torsten Schulz (local)
5423f24969 members filters as panels
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 48s
2026-06-09 16:01:04 +02:00
Torsten Schulz (local)
2fa7f9b537 Better dialogs
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 45s
2026-06-09 09:54:53 +02:00
Torsten Schulz (local)
16465fafc8 Feedback-Window
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 50s
2026-06-09 07:57:36 +02:00
Torsten Schulz (local)
f0142d5682 auto-set von "hat gespielt"
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 45s
2026-06-06 12:56:48 +02:00
Torsten Schulz (local)
5194d4582f Freundschaftsspiele korrigiert
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 52s
2026-06-06 12:42:17 +02:00
Torsten Schulz (local)
5727404f88 feat: Implement filtering for regular matches and update related functionalities
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 48s
2026-05-31 18:51:00 +02:00
Torsten Schulz (local)
0ff67dae80 Implement cross-club friendly match concept with invitations and shared matches
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 49s
- Added controllers for handling friendly match invitations and shared matches.
- Created migration scripts for `friendly_match_invitation` and `friendly_match_shared` tables.
- Developed models for `FriendlyMatchInvitation` and `FriendlyMatchShared`.
- Established routes for managing invitations and shared matches.
- Implemented services for business logic related to invitations and shared matches.
- Documented the concept plan for the new feature including API endpoints and data models.
2026-05-30 17:50:35 +02:00
Torsten Schulz (local)
359527eb5b feat: Implement localization for excludeFromBilling label in diary components
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
2026-05-30 16:14:28 +02:00
Torsten Schulz (local)
9d9481ac76 feat: Add excludeFromBilling option for diary dates and update related functionality
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
2026-05-30 16:10:34 +02:00
Torsten Schulz (local)
25f3802d66 Refactor code structure for improved readability and maintainability
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 45s
2026-05-30 15:53:07 +02:00
Torsten Schulz (local)
88d852719d feat: Dynamically adjust dialog height based on screen size in DiaryCourtDrawing
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 46s
2026-05-29 17:31:57 +02:00
Torsten Schulz (local)
d6e51cd8d2 feat: Sort members by first name and then last name in member lists
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
2026-05-28 18:03:11 +02:00
Torsten Schulz (local)
7ba25b2572 feat: Sort members alphabetically by first and last name in player selection and friendly match dialogs
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 47s
2026-05-28 17:59:53 +02:00
Torsten Schulz (local)
390d1a8897 feat: Update app version to 1.6.2 and increment version code to 17
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
2026-05-28 17:40:45 +02:00
Torsten Schulz (local)
7942e6108a feat: Add home/away game labels and participant count to friendly match schedule
Some checks failed
Deploy tt-tagebuch / deploy (push) Has been cancelled
2026-05-28 17:40:23 +02:00
Torsten Schulz (local)
211420444e feat: Enhance plan item display with visual representation and interaction options
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 45s
2026-05-28 13:08:41 +02:00
Torsten Schulz (local)
4cf0ee2be8 feat: Update match display logic to correctly reflect player sets and outcomes
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 45s
2026-05-28 11:02:25 +02:00
Torsten Schulz (local)
e57cdc6ad8 Refactor code structure for improved readability and maintainability
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 53s
2026-05-27 23:53:41 +02:00
Torsten Schulz (local)
2e7cf0c28d feat: Update age group categories in training stats for better accuracy
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 46s
2026-05-22 14:49:23 +02:00
Torsten Schulz (local)
75a17d42b5 Refactor code structure for improved readability and maintainability
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
2026-05-22 14:34:16 +02:00
Torsten Schulz (local)
6adf6b73e8 feat: Simplify plan duration display logic in diary activities
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
2026-05-22 14:16:39 +02:00
Torsten Schulz (local)
84c63bc7d2 feat: Add plan duration display to diary activities and enhance styling
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
2026-05-22 14:04:49 +02:00
Torsten Schulz (local)
0f946e9514 feat: Optimize activity ordering and enhance plan item movement functionality
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 45s
2026-05-22 13:48:43 +02:00
Torsten Schulz (local)
3814d9f178 feat: Update release build of the mobile app
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 47s
2026-05-20 12:29:14 +02:00
Torsten Schulz (local)
6aa544a1de feat: Enhance socket service for club management and event handling
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 46s
- Implemented club connection management in SocketService to handle joining and leaving clubs.
- Added event handling for various real-time updates including participant changes and diary notes.
- Updated AppRoot and DiaryDetailScreen to utilize new socket service features for real-time data synchronization.
- Introduced member portrait upload functionality in DiaryDetailScreen.
- Improved clipboard management across multiple screens for better user experience.
- Updated versioning in libs.versions.toml for app version increment.
- Refactored navigation icons to use AutoMirrored icons for better compatibility.
2026-05-20 11:36:00 +02:00
Torsten Schulz (local)
1c5457ae8c feat: Update app version to 1.4.3 and increment version code to 13; enhance BottomNavigationItem label display
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 47s
2026-05-18 14:25:26 +02:00
Torsten Schulz (local)
37de4e0cb5 feat: Update app version to 1.4.2 and increment version code to 12
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
2026-05-18 14:12:26 +02:00
Torsten Schulz (local)
ecfd3bf851 feat: Implement account deletion feature with UI and API integration
Some checks failed
Deploy tt-tagebuch / deploy (push) Has been cancelled
2026-05-18 14:12:14 +02:00
Torsten Schulz (local)
b9bbd45ae9 Refactor code structure and remove redundant sections for improved readability and maintainability
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 47s
2026-05-18 13:01:35 +02:00
Torsten Schulz (local)
197f06989f feat: Implement friendly match management with socket integration and UI updates
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 48s
2026-05-18 10:02:31 +02:00
Torsten Schulz (local)
f9ab3d9932 feat: Add friendly match management features including API integration and UI updates
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
- Implemented API methods for listing, creating, updating, and deleting friendly matches.
- Enhanced the ScheduleManager to handle friendly matches, including loading and state management.
- Updated UI components to support editing and displaying friendly match results.
- Modified localization files to reflect changes in terminology for match sets.
2026-05-18 09:39:00 +02:00
Torsten Schulz (local)
5dfdcb63bc feat: Implement friendly match management features
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
- Added backend support for managing friendly matches including listing, creating, updating, and deleting matches.
- Introduced a new database table `friendly_match` with relevant fields for match details.
- Created a service layer to handle business logic related to friendly matches.
- Developed API routes for friendly match operations with appropriate authentication and authorization.
- Added a Vue component for managing participants in friendly matches, allowing selection of members and manual entry of names.
- Updated existing tournament editor screens to integrate friendly match functionalities.
2026-05-18 00:43:42 +02:00
Torsten Schulz (local)
040e758044 feat: implement table distribution logic and update UI for match assignments
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
2026-05-18 00:06:56 +02:00
Torsten Schulz (local)
697e67d46e feat: implement table assignment and distribution for tournament matches
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
2026-05-17 23:55:39 +02:00
Torsten Schulz (local)
6c7ae6860b feat: separate backend base URL configurations for release and debug builds
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 46s
2026-05-17 22:46:07 +02:00
Torsten Schulz (local)
f8f1c797e7 feat: add number of tables to tournament updates and enhance related UI components
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 47s
2026-05-16 00:18:59 +02:00
Torsten Schulz (local)
40bd5e0745 feat: improve user token handling and add club selection clearing button in settings
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
2026-05-15 16:52:26 +02:00
Torsten Schulz (local)
d955577d9a feat: update app version to 1.3.2 and increment version code to 8
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
2026-05-15 16:27:45 +02:00
Torsten Schulz (local)
3d0c298af7 feat: add club selection clearing button and improve navigation logic after login
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
2026-05-15 16:26:45 +02:00
Torsten Schulz (local)
669f3f0365 feat: update app version to 1.3.1 and increment version code to 7
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 45s
2026-05-15 16:17:11 +02:00
Torsten Schulz (local)
eb54b4f7cf feat(i18n): add scripts for locale translation and patching
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 45s
- Implemented `fill-de-extended-gaps.js` to fill missing billing/orders keys in de-extended from de.
- Created `fill-i18n-deep.py` for deep translation of locale JSONs using deep-translator with fallback options.
- Added `fill-i18n-locales.js` to translate locale JSONs and write overrides for untranslated keys.
- Introduced `fix-en-leaks.py` to translate keys that still match the en-US merge, addressing English leaks.
- Developed `patch-de-ch-swiss.js` to replace 'ß' with 'ss' in de-CH.json without deleting existing entries.
- Created `patch-en-gb-au.js` to apply UK/AU spelling corrections in en-GB and en-AU locales.
- Added shell scripts `run-fix-en-leaks.sh` and `run-i18n-deep-fill.sh` for sequential execution of translation tasks.
- Implemented `update-i18n-todo-stats.js` to update statistics in the I18N_TODO.md file based on translation completeness.
2026-05-15 15:52:54 +02:00
Torsten Schulz (local)
320010b94e feat(Networking): enhance offline handling and localization for diary and members data
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
- Added `ACCESS_NETWORK_STATE` permission in AndroidManifest.xml to monitor network connectivity.
- Introduced `NetworkConnectivityHolder` to manage network state and trigger data refresh when connectivity is restored.
- Updated `DiaryManager` and `MembersManager` to support offline caching, allowing users to view previously loaded data when offline.
- Enhanced localization by adding new keys for offline cache hints in both German and English, improving user experience during connectivity issues.
- Updated UI components to display offline cache messages, ensuring users are informed when data is being served from cache.
2026-05-15 08:10:01 +02:00
Torsten Schulz (local)
2f15827658 feat(Calendar): update localization and enhance regression checklist
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 47s
- Updated the regression checklist to reflect the completion of Phase 14.
- Incremented versionCode to 4 and versionName to 1.2.0 in build.gradle.kts for the new release.
- Added new localization keys for calendar features in multiple languages, improving user accessibility and clarity.
- Enhanced the generate-mobile-i18n script to support new calendar translations, ensuring comprehensive coverage across locales.
2026-05-15 07:55:32 +02:00
Torsten Schulz (local)
bf3e1af084 feat(TrainingGroup): add excludeFromQuickDiaryCreate feature and update related logic
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
- Introduced a new boolean field `excludeFromQuickDiaryCreate` in the TrainingGroup model to control group visibility in quick diary creation.
- Updated the `updateTrainingGroup` service method to handle the new field, allowing for dynamic updates based on user input.
- Enhanced the TrainingTimesTab component to include a checkbox for excluding groups from quick diary creation, improving user interaction.
- Updated localization files to include new strings related to the exclude feature, ensuring clarity in multiple languages.
- Refactored logic in DiaryView and mobile app to consider the new exclusion criteria when suggesting training slots.
2026-05-14 22:47:02 +02:00
Torsten Schulz (local)
83294406a4 feat(Diary): implement quick create functionality for training days and enhance localization
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
- Added a new button for quick creation of training days in the DiaryView, improving user experience.
- Implemented logic to find the next available training slot across groups and create a training day entry.
- Enhanced localization by adding new keys for quick create messages in multiple languages, ensuring better accessibility for users.
- Updated the DiaryManager to handle quick create operations and clear errors effectively.
2026-05-14 22:35:29 +02:00
Torsten Schulz (local)
95a3e9438a chore: update versioning and launcher icons
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 46s
- Incremented versionCode to 2 and versionName to 1.0.1 in build.gradle.kts for the new release.
- Updated the ic_launcher_background color in ic_launcher_colors.xml to better match the app's branding.
- Replaced multiple launcher icon assets across various resolutions to ensure consistency in the app's appearance.
2026-05-14 19:27:39 +02:00
Torsten Schulz (local)
56ebffce69 fix: update application namespace and clean up deprecated files
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 45s
- Changed application namespace from `de.tt_tagebuch.app` to `de.tsschulz.tt_tagebuch` in build.gradle.kts and AndroidManifest.xml for consistency.
- Updated DEVELOPMENT.md to reflect the correct package name for the app.
- Removed deprecated files related to AppDependencies, MainActivity, MainApplication, and PDF generation, streamlining the codebase.
- Enhanced TODO.md to reflect the current status of the Android team planning phase implementation.
2026-05-14 19:17:51 +02:00
Torsten Schulz (local)
e0196a6617 feat(TeamManagement): enhance team management features and introduce planning phase for Android
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
- Updated TODO.md to outline the new planning phase for Android, aligning it with existing web functionalities for team management.
- Refactored AppDependencies to include TeamDocumentsApi, improving API integration for team-related documents.
- Replaced MobileTeamsScreen with TeamManagementScreen in ClubStammdatenScreens for better navigation.
- Enhanced TeamManagementScreen with improved state management and UI updates for team editing and data loading.
- Added new API methods in ClubTeamsApi for managing team lineups, supporting better team planning and organization.
- Introduced new methods in MatchesApi and MyTischtennisApi to enhance match and team data handling.
2026-05-14 18:31:15 +02:00
Torsten Schulz (local)
2f3f4fb275 feat(Tournament): update tournament participation UI and localization
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
- Changed the icon for tournament participations in the navigation to better represent the feature.
- Updated localization keys for tournament participations across multiple languages, enhancing clarity and user understanding.
- Introduced a new tab for official tournament participations in the mobile app, improving navigation and access to tournament details.
- Enhanced the TournamentsScreen to include options for creating and managing official tournaments, streamlining user interactions.
2026-05-14 17:51:19 +02:00
Torsten Schulz (local)
3d1dfe9a4c feat(Localization): enhance localization for tournament statistics and UI components
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
- Added new localization keys for tournament statistics panels across multiple languages, improving user accessibility.
- Updated the TournamentsScreen in the mobile app to include a search feature and display internal tournament statistics.
- Enhanced the Tournaments API to support fetching internal tournament statistics, providing detailed insights for users.
- Improved UI components for better organization and interaction within the tournaments section, enhancing overall user experience.
2026-05-14 16:25:16 +02:00
Torsten Schulz (local)
6ef1d79a5f feat(TrainingStats): enhance training statistics view with collapsible panels and localization
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 45s
- Refactored the TrainingStatsView to implement collapsible sections for better organization of training statistics.
- Added new localization keys for training statistics panels in both German and English.
- Updated the mobile app's TrainingStatsScreen to utilize the new collapsible panel structure, improving user experience.
- Enhanced the MembersManager to merge training statistics into member data, providing a comprehensive view of member participation.
- Introduced new API methods for quick updates and transfers of member data, streamlining member management processes.
2026-05-14 16:15:19 +02:00
Torsten Schulz (local)
7981371136 feat(TrainingCancellation): enhance cancellation functionality and localization support
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
- Updated the training cancellation controller to accept training group IDs, improving the cancellation process.
- Modified the database schema to include a JSON field for training group IDs in the training cancellations table.
- Enhanced the TrainingCancellation model to support the new training group IDs field.
- Updated the training cancellation service to normalize and handle training group IDs effectively.
- Added localization support for training cancellation features across multiple languages, improving user experience.
2026-05-13 10:57:23 +02:00
Torsten Schulz (local)
004801b1a6 feat(Calendar): integrate CalendarEvent model and enhance calendar functionality
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
- Added CalendarEvent model to the backend, establishing relationships with the Club model for better event management.
- Updated server.js to include calendarEventRoutes, enabling API access for calendar events.
- Enhanced CalendarView.vue to support custom event creation and management, improving user interaction with the calendar.
- Refactored various components to streamline event handling and improve overall user experience in the calendar interface.
- Updated TODO and DEVELOPMENT documentation to reflect new calendar features and architectural decisions.
2026-05-13 10:21:30 +02:00
Torsten Schulz (local)
9be5f50ede feat(TODO): update phases for orders, billing, and calendar features
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
- Marked orders and billing tasks as complete in the TODO list, detailing the associated components and APIs.
- Introduced a new phase for calendar features, outlining tasks for navigation, data loading, and event management.
- Enhanced the AppDependencies to include BillingApi and MemberOrdersApi for improved billing and order management.
- Updated AppRoot and SettingsScreen to incorporate billing and orders sections, enhancing user navigation and functionality.
2026-05-13 00:19:30 +02:00
Torsten Schulz (local)
ea46a6d4f9 feat(CalendarView): enhance training slot merging and event normalization
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
- Added a new method to normalize training time keys, improving consistency in event handling.
- Updated the logic for merging recurring training slots to include only relevant events, enhancing calendar management.
- Improved subtitle handling for merged training slots to reflect recurring status and additional details, providing clearer event information.
2026-05-13 00:11:03 +02:00
Torsten Schulz (local)
61b1f27e5e feat(CalendarView): merge recurring training slots and enhance event filtering
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 42s
- Implemented a new method to merge recurring training slots with identical weekdays and time windows, improving calendar event management.
- Updated event filtering logic to exclude cancelled training sessions, ensuring only relevant training events are displayed.
- Enhanced the loading process to handle source errors more effectively, improving user experience in the CalendarView.
2026-05-13 00:07:47 +02:00
Torsten Schulz (local)
54d9b9fc86 feat(MatchService): enhance match filtering for own teams and update mobile app settings
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
- Added logic in MatchService to filter matches based on the user's own teams, ensuring only relevant matches are displayed.
- Updated the mobile app's TODO list to reflect progress on ClubSettings and Predefined Activities features.
- Enhanced the AppRoot and ClubStammdatenScreens to support new settings and permissions for club management.
- Introduced new API methods for creating and updating training groups and times, improving the training management capabilities.
- Refactored MembersManager to include methods for managing training groups and times, streamlining the member management process.
2026-05-13 00:01:25 +02:00
Torsten Schulz (local)
57468f1efb feat(Tournament): add official tournament participation feature
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
- Introduced functionality to load and display official tournament participation events in the CalendarView.
- Updated the API client to fetch official tournament data, enhancing the event management capabilities.
- Added new UI elements to represent official tournaments, including visual indicators and event details.
- Enhanced the ClubManager to support fetching and managing official tournament data.
- Updated the mobile app's TODO list to reflect progress on tournament-related features.
2026-05-12 23:52:54 +02:00
Torsten Schulz (local)
bea5facb7d feat(ClubSettings): add country and state code fields for regional calendar data
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
- Introduced `countryCode` and `stateCode` fields in the Club model to support regional calendar data.
- Updated ClubSettings component to allow users to select their country and state, enhancing the configuration options for clubs.
- Enhanced the ClubService to handle normalization of country and state codes during updates.
- Added new routes and middleware to support the training cancellation feature and calendar integration in the backend.
- Updated frontend navigation to include a calendar link, improving user access to scheduling features.
2026-05-12 23:46:07 +02:00
Torsten Schulz (local)
1e23171370 feat(TournamentTab): add HTML escaping utility and improve player name rendering
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 42s
- Introduced `escapeHtml` method to sanitize HTML content, enhancing security against XSS attacks.
- Refactored player name rendering in tournament results to utilize the new HTML escaping method, ensuring safe display of player names and table data.
2026-05-12 23:23:04 +02:00
Torsten Schulz (local)
48f71b9df1 chore: update .gitignore and enhance backend and mobile app functionality
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
- Added mobile app build directories and configuration files to .gitignore for cleaner repository management.
- Improved error handling in diaryMemberController by requiring diaryDateId and memberId query parameters.
- Refactored DiaryMemberService to log tag IDs instead of raw values for better debugging.
- Enhanced TournamentParticipantsTab and TournamentTab components with improved touch-action properties for better user experience.
- Updated mobile app's gradle.properties and build.gradle.kts for compatibility with AGP 9.x and Kotlin 2.1.21, including new dependencies for Coil and UCrop.
- Refactored MainApplication to simplify initialization and improved MainActivity to handle dependencies more robustly.
- Updated various UI components in the mobile app to enhance layout and functionality, including MemberDetailScreen and MemberEditScreen.
2026-05-12 23:14:31 +02:00
Torsten Schulz (local)
27f8af559b fix(DiaryView): update plan status badge rendering logic
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 45s
- Enhanced the condition for displaying the plan status badge to ensure it only renders when a valid label is present, improving clarity in the activity display.
- Refactored the loading of the training plan to use a dedicated method, streamlining the data fetching process and improving code organization.
- Initialized activity member maps after loading the training plan to ensure accurate member tracking for activities.
2026-05-12 09:49:48 +02:00
Torsten Schulz (local)
be9caf92a4 refactor(DiaryDateActivityService): improve orderId calculation logic for group activities
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
- Updated the logic for determining the maximum orderId to handle cases with and without groupId more clearly.
- Enhanced code readability by consolidating the where clause for fetching max orderId based on group context.
2026-05-08 14:02:25 +02:00
Torsten Schulz (local)
808493c06e refactor(DiaryView): streamline activity posting logic by consolidating group handling
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
- Simplified the logic for posting activities by reducing the number of API calls when a group is selected.
- Updated the handling of `groupId` to ensure it is set correctly based on the selected group filter, improving code clarity and maintainability.
2026-05-08 13:57:31 +02:00
Torsten Schulz (local)
2b16cdff53 refactor(DiaryView): simplify grouped plan table structure and improve rendering logic
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
- Removed the "Gemeinsam" header from the grouped plan table for a cleaner layout.
- Adjusted the rendering logic to conditionally display shared items and group items more efficiently, enhancing clarity in the activity display.
- Updated colspan attributes to ensure proper alignment and presentation of table data.
2026-05-08 13:50:45 +02:00
Torsten Schulz (local)
9622e9bdb7 feat(DiaryView): implement grouped plan table for enhanced activity display
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 42s
- Added a new grouped plan table view in the DiaryView component to display activities organized by groups.
- Introduced computed properties `showGroupedPlanTable` and `groupedPlanRows` to manage the display logic and data structure for grouped activities.
- Enhanced the template to conditionally render the grouped view, improving user experience and clarity in activity management.
2026-05-08 13:11:56 +02:00
Torsten Schulz (local)
d1fb6d4e74 feat(DiaryView): improve sorting of training plan items by start time
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 42s
- Introduced a new `toMinutes` function to convert time strings into minutes for accurate sorting.
- Enhanced the `filteredTrainingPlan` computed property to sort items by start time, orderId, and id, ensuring a more organized display of training plans.
- Maintained existing filtering logic while integrating the new sorting functionality for improved user experience.
2026-05-08 13:04:49 +02:00
Torsten Schulz (local)
810ad07b96 feat(DiaryView): enhance time calculation for group activities
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
- Updated the `calculateAllItemTimes` method to improve handling of group activities, ensuring accurate start and end times based on groupId.
- Introduced a global cursor for managing time across individual and group activities, enhancing the overall scheduling logic.
- Modified the template to include a new condition for displaying the plan composer field, allowing for better activity management.
2026-05-08 12:59:30 +02:00
Torsten Schulz (local)
912bf88c3f feat(DiaryDateActivity, DiaryView): integrate groupId for enhanced activity management
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 42s
- Added `groupId` field to the DiaryDateActivity model to support group-specific activities.
- Updated create and update methods in DiaryDateActivityService to handle groupId, ensuring proper validation and association with groups.
- Enhanced DiaryView component to allow selection of groups for activities, improving user experience and activity organization.
- Implemented filtering logic in DiaryView to display activities based on selected group, enhancing data clarity and usability.
2026-05-08 11:58:57 +02:00
Torsten Schulz (local)
93796cecd6 feat(DiaryView, DiaryDateActivityService): implement group filtering and enhance activity display
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
- Added a group filter dropdown in the DiaryView component to allow users to filter group activities by selected group.
- Updated the DiaryDateActivityService to include groupId in the query for maximum orderId, improving activity management.
- Enhanced the display logic for group activities to reflect the selected filter, improving user experience and data clarity.
2026-05-08 11:35:22 +02:00
Torsten Schulz (local)
940f77e29b feat(DiaryDateActivity): enhance group activity management with duration and order features
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
- Added `duration`, `durationText`, and `orderId` fields to the GroupActivity model to support detailed activity tracking.
- Updated `addGroupActivity` and `updateGroupActivity` methods in the DiaryDateActivityService to handle new fields, improving activity management capabilities.
- Enhanced the DiaryView component to allow users to input and display duration and duration text for group activities, improving user experience and data clarity.
2026-05-08 11:28:22 +02:00
Torsten Schulz (local)
25c3b90972 feat(TeamManagementView): enhance league validation logic for team management
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
- Updated league validation to consider both leagueId and plannedLeagueName, allowing for more flexible team management workflows.
- Adjusted missing items logic to reflect the new validation criteria, improving user feedback on required fields.
- Enhanced tooltip and state management to accurately represent league requirements based on the updated validation rules.
2026-05-06 09:55:53 +02:00
Torsten Schulz (local)
95bfbf86a4 feat(MemberOrder, MemberOrderHistory, MemberOrderService, OrdersPanel): add paidConfirmed field and update related logic
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 42s
- Introduced a new boolean field `paidConfirmed` in MemberOrder and MemberOrderHistory models to track payment confirmation status.
- Updated serialization functions in MemberOrderService to include `paidConfirmed` in order and history entries.
- Enhanced OrdersPanel component to allow users to set and display the `paidConfirmed` status for orders.
- Added localization support for the new `paidConfirmed` label in German.
- Adjusted related logic to ensure proper handling of the `paidConfirmed` state throughout the application.
2026-05-06 09:05:28 +02:00
Torsten Schulz (local)
4bef76d6dd feat(TeamPlanningBoard): enhance team planning UI and button functionality
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
- Updated the TeamPlanningBoard component to improve the layout and styling of the planning team button, enhancing user interaction.
- Changed button title and aria-label for better accessibility and clarity, reflecting its new function to open the team in the workspace.
- Adjusted CSS styles for planning team inputs and buttons to ensure a more responsive design and improved visual consistency.
2026-05-06 08:52:45 +02:00
Torsten Schulz (local)
01aaca5928 feat(TeamPlanningBoard, TeamManagementView): add team conversion functionality
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
- Introduced a new button in TeamPlanningBoard for converting planning teams to regular teams, enhancing team management capabilities.
- Implemented the `convertPlanningTeamToRegular` method in TeamManagementView to handle the conversion process, including validation and UI updates.
- Updated event handling to ensure seamless integration of the new feature within the existing team management workflow.
2026-05-06 07:59:10 +02:00
Torsten Schulz (local)
92aebaadb1 feat(MemberGalleryDialog): filter visible members based on participant status
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
- Updated MemberGalleryDialog to introduce a computed property, `visibleGalleryMembers`, which filters gallery members based on their participant status and a custom visibility function.
- Modified the template to use `visibleGalleryMembers` instead of `galleryMembers`, ensuring only relevant members are displayed.
- Passed `participantStatusMap` as a prop to enhance member visibility logic, improving the user experience in the member gallery.
2026-05-05 15:05:40 +02:00
Torsten Schulz (local)
d84438f52c fix(TournamentGroupsTab): allow empty values in max group size input normalization
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 42s
- Updated the normalization function in TournamentGroupsTab to permit empty values for max group size input, enhancing flexibility for user input.
- This change improves the user experience by allowing users to clear the input field without triggering validation errors.
2026-04-29 09:35:03 +02:00
Torsten Schulz (local)
715980d49c feat(TournamentGroupsTab, TournamentTab): improve input normalization and event handling
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 42s
- Enhanced input fields in TournamentGroupsTab to utilize a normalization function for numeric inputs, allowing for empty values and enforcing minimum constraints.
- Added blur event handlers to trigger updates on input loss of focus, improving user experience.
- Updated TournamentTab to remove redundant modus change handling on advancingPerGroup update, streamlining the event flow.
2026-04-29 09:29:54 +02:00
Torsten Schulz (local)
cb7a027462 feat(TournamentGroupsTab, TournamentTab): enhance input handling and normalization
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
- Updated input fields in TournamentGroupsTab to use a normalization function for better handling of numeric inputs, allowing for empty values and ensuring minimum constraints.
- Added blur event handlers to trigger updates on input loss of focus, improving user experience.
- Modified TournamentTab to use nullish coalescing for safer access to group counts, enhancing robustness against undefined values.
2026-04-29 09:16:29 +02:00
Torsten Schulz (local)
9d58f24201 feat(i18n): add 'billing' translation to multiple languages
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 41s
- Added translations for the 'billing' navigation item in various localization files, including German, English, Spanish, French, Italian, Japanese, Polish, Thai, Filipino, and Chinese.
- Ensured consistent user experience across different locales by updating the relevant JSON files.
2026-04-28 16:57:57 +02:00
Torsten Schulz (local)
a7f967a730 feat(MembersOverviewSection, i18n): add QTTR sorting option and localization support
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 42s
- Introduced a new sorting option for QTTR values in the MembersOverviewSection, enhancing data organization capabilities.
- Updated localization files for multiple languages to include translations for the new QTTR sorting option, ensuring consistent user experience across different locales.
- Implemented logic to handle QTTR sorting in the MembersView, allowing users to sort members based on their QTTR values effectively.
2026-04-28 15:12:05 +02:00
Torsten Schulz (local)
87addd0c65 feat(MembersOverviewSection): add quick filter for training groups and improve layout
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
- Introduced a new quick filter dropdown for selecting training groups, enhancing user experience in the MembersOverviewSection.
- Removed the previous training group filter from the advanced filters section to streamline the interface.
- Updated styles for the quick filter group to improve layout and responsiveness.
2026-04-28 12:13:42 +02:00
Torsten Schulz (local)
5ef7447200 feat(MemberTransferService, MemberTransferDialog): clarify member transfer process and enhance UI feedback
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
- Updated MemberTransferService to explicitly load only active members with testMembership = false, improving clarity in the transfer logic.
- Added a UI hint in MemberTransferDialog to inform users that only active members will be transferred, enhancing user experience and transparency.
2026-04-27 15:12:49 +02:00
Torsten Schulz (local)
725ede8dbf feat(BillingService, BillingView): enhance locale handling for billing PDF generation
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 42s
- Added methods to normalize and format numbers based on locale in BillingService, improving internationalization support.
- Updated _fillSessionRows and _renderBillingPdfFromTemplate methods to accept locale as a parameter for consistent number formatting.
- Modified BillingView to pass the current locale when generating billing PDFs, ensuring accurate representation of numerical values.
2026-04-25 10:07:45 +02:00
Torsten Schulz (local)
2339e12410 feat(BillingController, BillingService): enhance billing template handling and error logging
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 41s
- Updated billingController to use a dynamic upload directory for billing templates, improving file management.
- Added error handling in billingService to log warnings when templates are missing or not found, enhancing debugging capabilities.
- Improved user feedback by returning specific error messages when template-related issues occur during billing runs.
2026-04-25 10:00:50 +02:00
Torsten Schulz (local)
be9d26e51e feat(BillingService): implement fallback file path resolution for migrated workspaces
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 42s
- Added logic to search for PDF templates in known upload directories when the base file name is provided.
- Enhanced the robustness of file handling by checking multiple potential template directories for existing files.
- Improved error handling by returning null for invalid base names, ensuring cleaner path resolution.
2026-04-25 09:52:31 +02:00
Torsten Schulz (local)
5f07a3e3d6 feat(BillingService): add file path resolution for PDF templates
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
- Implemented a new method to resolve existing file paths for PDF templates, enhancing file handling robustness.
- Updated PDF storage path handling to ensure correct resolution of paths before file operations, improving error handling and reliability.
- Refactored related logic to utilize the new path resolution method across various template operations.
2026-04-25 09:46:59 +02:00
Torsten Schulz (local)
630c202fd2 style(MemberGalleryDialog): simplify participant item styling
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 42s
- Removed redundant box-shadow properties for participant items in MemberGalleryDialog to streamline the visual design.
- Enhanced clarity of participant item styling while maintaining the intended visual effect.
2026-04-25 09:42:06 +02:00
Torsten Schulz (local)
3462a5497c refactor(MemberService, MemberGalleryDialog): update image selection logic and enhance participant styling
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
- Refactored image selection logic in MemberService to prioritize primary images based on sortOrder.
- Updated MemberGalleryDialog styles for participant items, adding visual indicators and improved background colors for better user experience.
2026-04-25 09:25:40 +02:00
Torsten Schulz (local)
6ea92bef49 refactor(MatchReportApiDialog): update draft status display and improve styling
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 41s
- Removed the old draft status indicator and replaced it with a new draft status bar for better visibility.
- Enhanced the styling of the draft status bar to improve user experience and consistency.
- Updated the logic to return a 'Bereit' status when applicable, ensuring accurate draft state representation.
- Integrated local draft persistence and synchronization methods to maintain draft state effectively.
2026-04-23 11:01:04 +02:00
Torsten Schulz (local)
be1108511f feat(MatchReportApiDialog): implement draft status indicators and local draft persistence
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 42s
- Added visual indicators for draft status in the MatchReportApiDialog, displaying messages based on syncing state.
- Introduced local draft persistence functionality, allowing users to save and restore match report drafts.
- Enhanced state management for draft synchronization, including timers and error handling.
- Updated methods to ensure local drafts are persisted and cleared appropriately during the match report submission process.
2026-04-23 10:35:24 +02:00
Torsten Schulz (local)
37c3ffa899 feat(OrdersPanel): add completion state filter for order management
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 42s
- Introduced a new dropdown filter for order completion states (paid, handed_over) in the OrdersPanel component.
- Updated the filtering logic to include completion state checks when loading orders.
- Added corresponding German localization for the new filter options to enhance user experience.
2026-04-22 09:52:35 +02:00
Torsten Schulz (local)
1f477a4458 feat(OrdersPanel): implement sorting for order history entries
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 42s
- Added a new function to sort order history entries in descending order based on their timestamps.
- Integrated the sorting function into the OrdersPanel component to enhance the display of order history.
2026-04-22 09:47:52 +02:00
Torsten Schulz (local)
1d67b68b44 feat(MemberOrder): add budget field to MemberOrder and MemberOrderHistory models
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 41s
- Introduced a new budget field in both MemberOrder and MemberOrderHistory models to track budget amounts.
- Updated memberOrderService to handle budget in serialization and normalization processes.
- Enhanced OrdersPanel component to include budget input and display in the UI.
- Added German localization for the new budget term to ensure consistency across languages.
2026-04-22 08:53:57 +02:00
Torsten Schulz (local)
41bbf81958 chore: remove obsolete Android app configuration files
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 44s
- Deleted build.gradle.kts, gradle.properties, and gradlew files as part of the cleanup process.
- Removed local.properties and various generated files from the .gradle directory to streamline the project structure.
- Cleared out unnecessary build artifacts and intermediate files to improve project maintainability.
2026-04-21 15:15:21 +02:00
Torsten Schulz (local)
c8dedb10cc feat(DiaryParticipantsPanel, DiaryView): add group photo cropping functionality
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 39s
- Introduced a new button in the DiaryParticipantsPanel for opening the group photo crop dialog.
- Integrated the GroupPhotoCropDialog component in DiaryView, allowing users to manage group photos.
- Added state management for showing the group photo crop dialog and handling member image updates.
- Enhanced styling for the new button to maintain consistency with existing UI elements.
2026-04-17 14:52:26 +02:00
Torsten Schulz (local)
894c84b94a feat(DiaryParticipantsPanel): enhance gallery button styling and functionality
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 37s
- Updated the gallery button to include icons for improved visual feedback during loading states.
- Refined button styles with a new gradient background and hover effects for better user interaction.
- Adjusted button layout to ensure consistent alignment and spacing of elements.
2026-04-17 11:58:37 +02:00
Torsten Schulz (local)
9c738e8063 feat(DiaryOverview): enhance styling and layout for diary overview panels
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 37s
- Added scoped CSS styles to improve the layout and visual presentation of diary overview panels.
- Implemented responsive design adjustments for better usability on different screen sizes.
- Updated time range label formatting in DiaryView to ensure consistent display of training start and end times.
2026-04-17 11:20:46 +02:00
Torsten Schulz (local)
69418d8f9a fix(Localization): correct German translations for consistency and clarity
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 36s
- Updated various phrases in the German localization files to ensure proper spelling and grammar.
- Improved user interface text in the group photo management feature for better readability.
- Ensured consistency in terminology across the application, enhancing the overall user experience.
2026-04-16 08:24:31 +02:00
Torsten Schulz (local)
a4f6b9b8b3 feat(Localization): update and enhance localization files for multiple languages
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 39s
- Added new terms related to mobile app usage and member play interests across various languages.
- Improved existing translations for better clarity and consistency.
- Included hints for mobile club selection to enhance user experience on smartphones.
- Ensured all localization files are synchronized with the latest application features.
2026-04-15 22:48:54 +02:00
Torsten Schulz (local)
1dd7bb24ea feat(MemberGroupPhoto): implement group photo management functionality
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 38s
- Added MemberGroupPhoto model and established relationships with Club and User models.
- Introduced new routes for managing group photos in the backend.
- Enhanced frontend components to support group photo cropping and member image updates.
- Updated localization files to include new terms related to group photo processing across multiple languages.
- Refactored server.js to include MemberGroupPhoto in the synchronization process.
2026-04-15 22:45:35 +02:00
Torsten Schulz (local)
5fa34637ba feat(ClubSettings): add member data quality requirements configuration
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 38s
- Introduced new settings for member data quality requirements in club settings, allowing configuration of required fields such as street, postal code, city, phone, and email.
- Updated the backend to handle the new memberDataQualityRequirements field in club settings.
- Enhanced the frontend to display and manage these requirements in the ClubSettings view, improving user experience and data integrity.
- Added localization support for new terms related to member data quality across multiple languages.
2026-04-15 22:15:04 +02:00
Torsten Schulz (local)
4cfc82c7aa feat(ScheduleView): enhance player selection logic and eligibility checks
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 37s
- Introduced new methods to determine the lineup half for matches and fetch eligible member IDs based on the selected team.
- Improved player selection dialog to filter visible members based on active status and eligibility, ensuring a more accurate representation of available players.
- Added logic to handle preselected player IDs, enhancing the user experience during team selection.
2026-04-15 13:17:32 +02:00
Torsten Schulz (local)
3ce1702367 fix(AutoFetchMatchResultsService): improve date parsing with timezone handling
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 36s
- Enhanced date parsing logic to handle ISO strings with explicit timezones, converting them to local time before persisting.
- Added normalization and validation checks to ensure accurate date and time extraction from input strings.
- Improved robustness of the date handling functionality, ensuring better compatibility with various date formats.
2026-04-15 11:33:24 +02:00
Torsten Schulz (local)
58012e0a44 feat(SeasonSelector): implement logic to determine the current running season
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 37s
- Added a method to retrieve the current running season ID based on the current date and available season entries.
- Updated the season selection logic to default to the running season if no season is selected and `showCurrentSeason` is true.
- Enhanced localization files to include new terms related to member scopes, improving user experience across multiple languages.
2026-04-15 11:20:21 +02:00
Torsten Schulz (local)
c62e91d997 fix(TeamManagement): refine eligibility checks and streamline assignment removal
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 37s
- Adjusted member eligibility comparison logic to ensure correct validation.
- Implemented functions to remove ineligible planning assignments for teams, enhancing data integrity.
- Integrated automatic cleanup of ineligible assignments upon team updates, improving user experience.
2026-04-15 11:02:52 +02:00
Torsten Schulz (local)
7d483ebf02 fix(TeamManagement): correct member eligibility logic and add eligibility check for planning teams
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 37s
- Updated the eligibility comparison logic to ensure correct member and team index validation.
- Introduced a new function to check if a member is eligible for a planning team based on age group and gender.
- Enhanced the team drop functionality to include eligibility validation, providing user feedback for ineligible members.
2026-04-15 10:59:33 +02:00
Torsten Schulz (local)
2dff5221e3 feat(MemberPlayInterest): implement play interest management for members
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 38s
- Added new endpoints to get and set member play interests in the memberController.
- Integrated MemberPlayInterest model into the application, establishing relationships with Member and Club models.
- Updated memberRoutes to include routes for managing member play interests.
- Enhanced memberService to handle play interest retrieval and updates.
- Updated localization files to include new terms related to member play interests.
- Refactored server.js to include MemberPlayInterest in the synchronization process.
2026-04-15 10:48:10 +02:00
Torsten Schulz (local)
45c701b149 feat(SEO): update meta tags and structured data for improved search visibility
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 36s
- Revised title and description meta tags in index.html for better alignment with the application's focus on table tennis club management.
- Updated Open Graph and Twitter meta tags to reflect the new branding and features of the application.
- Enhanced structured data implementation in SeoLandingPage.vue to support JSON-LD for better SEO performance.
- Adjusted sitemap.xml to reflect updated last modified dates for improved indexing.
- Refined content in ClubMemberManagementPage.vue to emphasize member profiles and data management.
2026-04-09 09:43:38 +02:00
Torsten Schulz (local)
951842c824 feat(Dialog): enhance dialog functionality with resizing and improved positioning
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 36s
- Added support for dialog resizing, allowing users to adjust the size of non-modal dialogs.
- Implemented dynamic positioning for dialogs based on user-defined coordinates or calculated defaults.
- Updated Vuex store to manage dialog dimensions and positions effectively.
- Enhanced the BaseDialog component with resize handles and improved drag-and-drop functionality.
- Updated localization strings to include new resize functionality for better user guidance.
2026-04-08 15:09:47 +02:00
Torsten Schulz (local)
4f8e2fee89 refactor(TournamentStats): remove InternalTournamentStats dialog and streamline state management
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 36s
- Removed the InternalTournamentStats component from App.vue and its associated state management in Vuex.
- Updated the DialogManager to include InternalTournamentStats, allowing for better dialog handling.
- Refactored the TournamentsView to utilize a new method for opening the InternalTournamentStats dialog.
- Enhanced the InternalTournamentStats component by simplifying its template and removing unnecessary props and methods.
- Improved the logic for displaying tournament statistics based on club selection, ensuring a cleaner user experience.
2026-04-08 15:02:09 +02:00
Torsten Schulz (local)
757507f212 feat(TournamentStats): integrate InternalTournamentStats dialog and state management
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 36s
- Added InternalTournamentStats component to App.vue for displaying tournament statistics.
- Implemented state management for the dialog's visibility using Vuex, allowing for better control of the dialog's open state.
- Updated the TournamentsView to utilize the new Vuex mutation for opening the statistics dialog.
- Enhanced the InternalTournamentStats component with a new gender selection dropdown, replacing the previous checkbox implementation for improved user experience.
- Updated localization strings to support new filtering options and terminology related to gender and age classes across multiple languages.
2026-04-08 14:26:42 +02:00
Torsten Schulz (local)
003b8fd3bc feat(TournamentStats): update age class filtering UI and logic in InternalTournamentStats component
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 37s
- Replaced age class filtering with band and gender options for improved user selection.
- Introduced new methods for handling band and gender checkbox changes, enhancing the filtering logic.
- Updated the component's state management to accommodate selected bands and genders.
- Enhanced localization strings to support new filtering options, improving user accessibility and understanding.
2026-04-08 14:01:47 +02:00
Torsten Schulz (local)
bbd9f08e97 feat(TournamentStats): enhance internal tournament statistics with member profile integration
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 37s
- Integrated member profile data (birth date and gender) into the internal tournament statistics calculations for more accurate age class filtering.
- Removed deprecated age class filtering functions and streamlined the statistics computation process.
- Updated the InternalTournamentStats component to reflect changes in age class options and improved sorting logic.
- Enhanced localization strings across multiple languages to support new terminology related to age classes and gender, improving user accessibility and understanding.
2026-04-08 13:48:41 +02:00
Torsten Schulz (local)
30994adee8 feat(TournamentStats): enhance age class sorting and localization for tournament statistics
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 36s
- Improved the sorting logic for age class options in the InternalTournamentStats component, incorporating gender and name for better organization.
- Added new utility functions for handling gender labels and age class sorting values, enhancing clarity in tournament statistics.
- Updated localization strings across multiple languages to reflect changes in age class and gender terminology, improving user accessibility and understanding.
2026-04-08 13:12:19 +02:00
Torsten Schulz (local)
27f8186d91 feat(TournamentStats): enhance internal tournament statistics with age class filtering
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 37s
- Updated the `getInternalTournamentPlayerStats` endpoint to accept age class keys for more granular statistics.
- Introduced new utility functions for handling age class filtering in the internal tournament stats service.
- Enhanced the InternalTournamentStats component with a new age class filter UI, allowing users to select specific age classes for their statistics.
- Updated localization strings across multiple languages to support the new age class filtering feature, improving user accessibility and understanding.
2026-04-08 12:50:20 +02:00
Torsten Schulz (local)
c1b8b2c665 feat(TournamentStats): refine internal tournament scoring and enhance UI features
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 36s
- Updated the scoring logic for internal tournaments to reflect percentage-based placements, improving clarity and fairness in rankings.
- Refactored the `groupPointsFromRankings` function to `groupPercentFromRankings` for better readability and accuracy in calculations.
- Enhanced the InternalTournamentStats component with a new PDF export feature and improved dialog positioning for better user experience.
- Updated localization strings across multiple languages to align with the new scoring system and UI enhancements, ensuring better accessibility and understanding for users.
2026-04-08 11:20:46 +02:00
Torsten Schulz (local)
43dbd5442a feat(TournamentStats): update internal tournament scoring logic and UI enhancements
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 36s
- Revised scoring system for internal tournaments to assign points based on placement (1st = 100, 2nd = 99, etc.), with adjustments for tied ranks and a cap at 101 points.
- Refactored `groupPointsFromRankings` function for improved clarity and efficiency.
- Enhanced the InternalTournamentStats component UI, integrating a dialog for better user interaction and accessibility.
- Updated localization strings across multiple languages to reflect the new scoring system and UI changes, improving user understanding and experience.
2026-04-08 11:02:34 +02:00
Torsten Schulz (local)
4a53801a54 feat(TournamentStats): add internal tournament statistics endpoint and localization updates
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 37s
- Implemented a new endpoint `getInternalTournamentStats` in the tournament controller to retrieve statistics for internal tournaments based on club ID and selected months.
- Enhanced the tournament service to compute player statistics, including absolute and average rankings.
- Updated tournament routes to include the new statistics endpoint.
- Added localization strings for internal tournament statistics in multiple languages, improving user accessibility and experience.
- Integrated the new statistics component into the TournamentsView for better user interaction.
2026-04-08 10:40:33 +02:00
Torsten Schulz (local)
50fa07d0b7 feat(i18n): enhance localization files with new configuration prompts
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 35s
- Added new localization strings across multiple languages for missing configuration prompts, including messages for league selection and MyTischtennis URL requirements.
- Updated TeamManagementView to display missing configuration alerts, improving user guidance during team setup.
2026-04-02 09:14:07 +02:00
Torsten Schulz (local)
a94ad55a2d Revert "feat(UI): enhance styling and accessibility across components"
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 34s
This reverts commit cf57ade3f0.
2026-04-02 08:46:52 +02:00
Torsten Schulz (local)
cf57ade3f0 feat(UI): enhance styling and accessibility across components
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 35s
- Added `-webkit-overflow-scrolling: touch` and `overscroll-behavior-y: contain` to App.vue for improved scrolling behavior on touch devices.
- Updated DialogManager.vue to include `min-height: 0` and `overflow-x: hidden` for better content management.
- Set `min-height: 0` in TeamManagementOverview.vue and TeamManagementView.vue to ensure consistent layout.
- Enhanced localization files across multiple languages to include new terms for user administration, improving user experience.
2026-04-02 08:43:26 +02:00
Torsten Schulz (local)
8503c9a79d feat(TeamManagement): enhance TeamListCard and TeamManagementOverview with improved accessibility and styling
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 34s
- Updated TeamListCard to include keyboard accessibility features, allowing users to trigger edit actions via keyboard events.
- Refactored TeamListCard layout for better visual organization, including a new league row for improved information display.
- Enhanced styling for TeamListCard, including hover and focus states for better user interaction.
- Adjusted grid layout in TeamManagementOverview for improved responsiveness and spacing.
- Removed redundant styles from TeamManagementView, centralizing styling in TeamListCard for consistency.
2026-04-02 08:37:41 +02:00
Torsten Schulz (local)
68b8455340 feat(ClubTeam): add planned league name field and localization updates
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 34s
- Introduced a new field for planned league name in the ClubTeam model, allowing for better team categorization.
- Updated create and update club team endpoints to handle the new planned league name field.
- Enhanced the PDF generation feature to include planned league name in the output.
- Improved localization files across multiple languages to incorporate new terms related to the planned league, ensuring a consistent user experience.
- Updated the TeamManagementView to display and edit the planned league name, enhancing user interaction.
2026-04-02 08:17:13 +02:00
Torsten Schulz (local)
9454761e34 feat(PDFGenerator): add team lineup PDF generation and localization updates
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 35s
- Implemented a new feature to generate a PDF for team lineups, including detailed information such as club name, team name, league, season, gender, and age group.
- Enhanced localization files across multiple languages to include new terms related to the PDF generation feature, ensuring a consistent user experience.
- Updated the TeamManagementView to include a button for downloading the lineup as a PDF, improving accessibility for users.
2026-04-02 08:07:38 +02:00
Torsten Schulz (local)
fd02655be4 style(MembersView): enhance age class line styling
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 36s
- Added white-space nowrap property to .tt-age-class-line and .tt-age-class-line--next classes to prevent text wrapping, improving the visual layout of age class lines in the MembersView component.
2026-04-02 07:25:54 +02:00
Torsten Schulz (local)
c76b5f32e2 fix(i18n): update last training filter hint across multiple languages
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 35s
- Revised the lastTrainingFilterHint in localization files for German, English (AU, GB, US), and Swiss German to enhance clarity regarding the age-class column and details available on row hover.
- Improved consistency in terminology across different language files to ensure a better user experience.
2026-04-01 16:46:32 +02:00
Torsten Schulz (local)
2d43967c81 feat(MembersOverview): add last training filter and localization updates
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 35s
- Introduced a new filter for last training in the MembersOverviewSection, allowing users to filter members based on their last training date.
- Updated the MembersView to handle the new last training filter state and integrate it into the member sorting and display logic.
- Enhanced localization files across multiple languages to include new terms related to the last training filter and its options.
- Improved member row tooltip to display last training information, enhancing user experience and clarity.
2026-04-01 16:41:54 +02:00
Torsten Schulz (local)
59034ff397 feat(MembersOverview): add training participations column toggle and localization updates
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 35s
- Introduced a checkbox in the MembersOverviewSection to toggle the visibility of the training participations column.
- Updated the MembersView to handle the new toggle state and display training participations accordingly.
- Enhanced localization files across multiple languages to include the new term for the training participations column.
- Refactored member age class display logic to improve clarity and maintainability.
2026-04-01 16:28:00 +02:00
Torsten Schulz (local)
8b9a4b7bca feat(MembersOverview): add season filter and enhance age group selection
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 37s
- Introduced a new season filter dropdown in the MembersOverviewSection for selecting the season start year.
- Enhanced age group selection by organizing options into groups for better clarity and added new age categories.
- Updated localization files to include new terms related to the season filter and age classifications across multiple languages.
- Improved the overall layout and styling of the filter components for a better user experience.
2026-04-01 15:26:08 +02:00
Torsten Schulz (local)
b62b61505c fix(deploy): update SSH key handling in deployment workflow
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 39s
- Changed the SSH key handling in the Gitea deployment workflow to use a base64 encoded key, improving security and compatibility.
- Updated the SSH connection commands to reference the new key file, ensuring successful deployment connections.
2026-03-31 15:50:13 +02:00
Torsten Schulz (local)
49df0cc381 chore(deploy): remove obsolete deployment script from Gitea workflows
Some checks failed
Deploy tt-tagebuch / deploy (push) Failing after 0s
- Deleted the deploy.sh script as it is no longer needed for the deployment process.
2026-03-31 13:49:38 +02:00
Torsten Schulz (local)
5eff1d63aa feat(ClubTeam): enhance club team management with lineup features and member eligibility
- Added teamGender and teamAgeGroup fields to ClubTeam model for better categorization.
- Updated create and update club team endpoints to handle new fields and default values.
- Implemented getClubTeamLineup and updateClubTeamLineup functions for managing team lineups.
- Enhanced member management with adultReleaseApproved and adultReserveApproved fields in Member model.
- Updated frontend views to support new lineup features and member eligibility flags.
- Improved localization for new terms related to team management and member eligibility across multiple languages.
2026-03-31 13:44:28 +02:00
Torsten Schulz (local)
cb7830571b feat(TrainingStats): enhance training statistics view and participant details
- Updated TrainingStatsService to include member details (first name, last name) in participant data.
- Modified TrainingDetailsDialog to remove unnecessary time display for training sessions.
- Added new filters for training days in TrainingStatsView, allowing users to select specific training days and view attending members.
- Enhanced localization files to support new training day filter and participant-related strings across multiple languages.
2026-03-28 13:35:34 +01:00
Torsten Schulz (local)
0df8674353 feat(TournamentService): implement seeded knockout match generation and enhance qualifier handling
- Added a new function to build seeded legacy knockout matches, improving match pairing logic based on group affiliations.
- Refactored qualifier selection process to utilize a ranked participants map, ensuring better handling of advancing participants and unused qualifiers.
- Updated knockout match handling to incorporate seeded results, enhancing the overall tournament flow and participant management.
2026-03-28 12:15:40 +01:00
Torsten Schulz (local)
2043942e02 feat(TournamentWorkspaceHeader): enhance UI layout and tab functionality
- Updated the TournamentWorkspaceHeader component to improve the layout with a new class for the workspace header.
- Introduced a tournament tabs panel with buttons for navigating between configuration, participants, groups, and results, enhancing user interaction.
- Added computed properties and methods for managing tab states and results sub-tabs, streamlining tournament management.
- Improved styling for better visual hierarchy and user experience.
2026-03-28 12:05:04 +01:00
Torsten Schulz (local)
e4be66b469 fix(i18n): update problem configuration description across multiple languages
- Simplified the problemConfigDescription in Spanish, Filipino, French, Italian, Japanese, Polish, Thai, Tagalog, and Chinese to remove the mention of "at least one class," ensuring clarity and consistency in translations.
2026-03-28 11:54:19 +01:00
Torsten Schulz (local)
0554a68eb7 feat(TournamentService, TournamentResultsTab): enhance knockout match handling and UI interactions
- Introduced new functions for determining knockout round order and building preferred knockout matches based on qualifiers.
- Updated TournamentResultsTab to include collapsible sections for group matches and knockout rounds, improving user experience.
- Added data properties and methods to manage the visibility of match sections and handle tournament class checks.
- Refined UI elements for better interaction, including toggle buttons and improved styling for match sections.
2026-03-28 11:48:10 +01:00
Torsten Schulz (local)
92d29dc64e feat(TournamentTab): improve knockout section handling and data validation
- Refactored stages and advancements data retrieval to ensure proper handling of empty or invalid responses.
- Added scrollToKnockoutSection method to enhance user experience by automatically scrolling to the knockout section after initiating tournament actions.
- Updated knockout operation flow to include scrolling behavior, ensuring better visibility of the knockout stage during tournament management.
2026-03-28 11:20:34 +01:00
Torsten Schulz (local)
2c11f6b975 chore(dependencies): update package versions in package-lock.json and package.json
- Upgraded nodemailer from version 7.0.9 to 8.0.4 for improved email handling.
- Updated brace-expansion, flatted, picomatch, and socket.io-parser to their latest versions across frontend and backend for better performance and security.
- Incremented versions of other dependencies like sequelize and jspdf to ensure compatibility and access to new features.
2026-03-28 11:18:16 +01:00
Torsten Schulz (local)
68f14eb5d6 feat(TournamentConfigTab, TournamentResultsTab): enhance stage configuration and knockout actions
- Added ensureStageConfigurationPersisted method to validate and save stage advancements, ensuring proper configuration before advancing stages.
- Updated advanceStage method to call ensureStageConfigurationPersisted, improving the flow of tournament advancement.
- Introduced primary action buttons in TournamentResultsTab for starting and resetting knockout rounds, enhancing user interaction during tournament management.
- Styled results-primary-actions for better visibility and usability in the results tab.
2026-03-28 11:15:38 +01:00
Torsten Schulz (local)
7fdbe85d3c feat(TournamentService, TournamentConfigTab): enhance tournament advancement logic and knockout stage handling
- Introduced a new function to compare advancement candidates based on multiple criteria, improving the selection process for tournament participants.
- Updated participant data structure to include additional metrics for better ranking and comparison.
- Enhanced the TournamentConfigTab to automatically configure knockout stage settings when applicable, ensuring a smoother user experience during tournament setup.
2026-03-28 11:09:40 +01:00
Torsten Schulz (local)
adefb120c0 feat(TournamentResultsTab, TournamentTab): add knockout operation handling
- Introduced knockoutOperationInProgress state to manage button states during knockout operations in TournamentResultsTab.vue.
- Updated button elements to disable during ongoing operations, enhancing user experience and preventing multiple submissions.
- Integrated knockoutOperationInProgress state in TournamentTab.vue to control the flow of knockout-related actions.
2026-03-28 10:57:29 +01:00
Torsten Schulz (local)
9d023b534d feat(SEO, Sitemap, Routing): enhance SEO and sitemap for new features
- Updated update-sitemap.sh to include new URLs for Vereinssoftware, Mitgliederverwaltung, Trainingsplanung, and Turniersoftware with appropriate lastmod dates and change frequencies.
- Enhanced server.js and seo.js with SEO configurations for the new pages, ensuring proper indexing and descriptions.
- Added new routes in router.js for the additional features, improving navigation and user access.
- Updated Home.vue to include links to the new features, enhancing user engagement and visibility.
2026-03-27 11:42:11 +01:00
Torsten Schulz (local)
a7d3e5b094 feat(Sitemap, SEO): update sitemap generation and SEO configurations
- Enhanced update-sitemap.sh to generate a new sitemap structure with lastmod dates for additional URLs.
- Updated SEO configurations in server.js and seo.js to allow indexing for impressum and datenschutz pages.
- Introduced a list of noindex prefixes to manage SEO settings dynamically based on route paths.
- Added structured FAQ schema in index.html to improve search engine visibility and user engagement.
2026-03-27 11:22:55 +01:00
Torsten Schulz (local)
ddb3025b84 feat(App): improve layout responsiveness and overflow handling
- Added min-width and max-width properties to App.vue for better layout control.
- Enhanced main-content and content classes with overflow-x hidden and box-sizing border-box to improve responsiveness and prevent overflow issues.
2026-03-27 10:57:52 +01:00
Torsten Schulz (local)
85cf0d0ddc feat(ScheduleLayoutShell, ScheduleView): refine layout and responsiveness
- Enhanced ScheduleLayoutShell.vue with improved width and box-sizing properties for better layout management.
- Updated ScheduleView.vue to ensure consistent width handling and overflow properties, enhancing mobile responsiveness and user experience.
2026-03-27 10:51:41 +01:00
Torsten Schulz (local)
37f9ba83aa feat(ScheduleLayoutShell, ScheduleView): enhance layout and overflow handling
- Updated ScheduleLayoutShell.vue to improve overflow properties and ensure better layout management for tab panels and workspace components.
- Enhanced ScheduleView.vue with max-width adjustments and touch-action properties for improved responsiveness and user interaction on mobile devices.
2026-03-27 10:23:54 +01:00
Torsten Schulz (local)
32ba433008 feat(AutoFetchMatchResultsService, ScheduleView): enhance date and time parsing for match results
- Implemented a new method in AutoFetchMatchResultsService to parse match date and time from various formats, improving robustness in handling date inputs.
- Updated storeMatchResult method to utilize the new date parsing logic, ensuring accurate match date handling.
- Enhanced ScheduleView to maintain consistent display of match dates and times, improving user experience in the schedule table.
2026-03-26 19:34:46 +01:00
Torsten Schulz (local)
c7d51efb5d feat(MatchReportApiDialog): implement meeting details polling functionality
- Added methods to start and stop polling for meeting details at regular intervals.
- Introduced logic to build a signature for meeting details to detect changes.
- Enhanced data handling to update meeting information based on the latest fetched details.
- Improved error handling during polling to ensure robustness in data retrieval.
2026-03-25 18:43:52 +01:00
Torsten Schulz (local)
c2a31d3b24 feat(Tournament): add doubles tournament support and related UI enhancements
- Updated tournamentController.js and tournamentService.js to include isDoublesTournament parameter for tournament creation and updates.
- Modified Tournament model to add isDoublesTournament field, allowing differentiation between singles and doubles tournaments.
- Enhanced frontend components (TournamentConfigTab, TournamentParticipantsTab, TournamentTab) to support doubles tournament configuration and display.
- Added internationalization keys for doubles tournament labels and hints in multiple languages.
- Improved participant assignment logic for doubles tournaments to ensure proper class assignments.
2026-03-25 11:49:47 +01:00
Torsten Schulz (local)
64090d9ff0 feat(MatchReportApiDialog, ScheduleLayoutShell, ScheduleView): enhance lineup management and layout improvements
- Updated MatchReportApiDialog.vue to improve lineup tab accessibility based on team status.
- Enhanced player selection filtering to ensure only valid players are displayed in lineups.
- Modified ScheduleLayoutShell.vue to adjust overflow properties for better layout handling.
- Improved ScheduleView.vue with new methods for sorting matches by date and combining league matches, enhancing match display and user experience.
- Added sticky header styling for better visibility in match lists.
2026-03-25 10:12:50 +01:00
Torsten Schulz (local)
02f1bed452 feat(MemberOrders): implement member orders feature
- Added new models and routes for managing member orders and order history.
- Updated server.js to include member order routes and sync functionality.
- Enhanced frontend with new components and dialogs for viewing and managing orders.
- Integrated internationalization support for order-related texts across multiple languages.
- Updated navigation and views to include access to the new orders feature, improving user experience.
2026-03-24 17:01:57 +01:00
Torsten Schulz (local)
e55ee0f88a style(App): update navigation icons for improved clarity
- Replaced navigation icons in App.vue to better represent their respective sections, enhancing user experience and visual consistency.
2026-03-20 10:53:58 +01:00
Torsten Schulz (local)
128b13c679 style(App): add padding adjustment for collapsed sidebar
- Introduced a new CSS rule to add top padding to the sidebar content when the sidebar is collapsed, improving layout consistency and visual appearance.
2026-03-20 10:43:23 +01:00
Torsten Schulz (local)
65d464eab9 style(App, ScheduleLayoutShell, ScheduleView): enhance layout for full-height routes
- Updated App.vue to conditionally apply full-height styles based on the current route.
- Modified ScheduleLayoutShell.vue to ensure proper height and overflow handling for better layout consistency.
- Adjusted ScheduleView.vue to support full-height content display, improving user experience on specific routes.
2026-03-20 10:40:42 +01:00
Torsten Schulz (local)
5a9e5913a6 style(DiaryParticipantsPanel, Home): enhance layout and responsiveness
- Added horizontal overflow to the diary sidebar for better content management.
- Updated participant row layout to use CSS grid for improved alignment and spacing.
- Adjusted participant name styling to prevent overflow and ensure text is truncated with ellipsis.
- Introduced new authentication action buttons in Home.vue for better user access to registration and login.
- Enhanced mobile responsiveness of the Home view with updated flex and grid properties.
2026-03-20 10:33:38 +01:00
Torsten Schulz (local)
80f8934bc8 style(ScheduleView): improve table responsiveness and layout
- Added minimum widths to player selection table and player name for better layout consistency.
- Adjusted checkbox cell width and added minimum width for improved alignment.
- Enhanced mobile responsiveness with media queries for table padding and minimum widths, ensuring a better user experience on smaller screens.
2026-03-20 10:27:21 +01:00
Torsten Schulz (local)
36690980b7 feat(ViteConfig, App, Router, DialogManager, MembersView, ScheduleView, ClubView, Home, TournamentsView, TrainingStatsView): enhance performance and responsiveness
- Updated Vite configuration to improve chunking strategy and set a chunk size warning limit.
- Refactored App.vue and DialogManager.vue to utilize async component loading for better performance.
- Modified router.js to implement lazy loading for various views, optimizing initial load times.
- Enhanced MembersView, ScheduleView, ClubView, and TournamentsView with responsive design adjustments for improved mobile usability.
- Improved styling and layout in Home.vue and TrainingStatsView to enhance user experience across different screen sizes.
2026-03-20 10:20:48 +01:00
Torsten Schulz (local)
cc6d1f6ebe feat(App, ScheduleView): implement mobile club picker and location dialog
- Added a mobile club picker dialog to enhance club selection on mobile devices, allowing users to select or create a club easily.
- Introduced a location dialog in ScheduleView to display match location details, improving user experience when viewing schedules.
- Updated internationalization files to include new translation keys for mobile club picker hints and location information.
- Enhanced responsive design in various components to ensure a seamless experience across different viewport sizes.
2026-03-20 10:02:38 +01:00
Torsten Schulz (local)
cbc5054f1f feat(i18n, CourtDrawingTool, MembersOverviewSection): enhance internationalization and UI components
- Added new i18n keys for improved translations in the CourtDrawingTool and MembersOverviewSection components.
- Updated CourtDrawingTool to utilize translation keys for various UI elements, enhancing user experience and accessibility.
- Enhanced MembersOverviewSection with translation support for search and filter functionalities, improving usability for non-German speakers.
- Introduced new scripts in package.json for i18n auditing and status checking, streamlining localization management.
2026-03-20 09:05:15 +01:00
Torsten Schulz (local)
542d741428 feat(MembersOverview, MembersView): add training group filtering and display enhancements
- Introduced a new training group filter in MembersOverviewSection for improved member management.
- Updated MembersView to support the new training group selection and display last training date for members.
- Enhanced computed properties to dynamically generate training group options based on member data.
- Improved filtering logic to include selected training group, refining member search capabilities.
2026-03-19 16:10:39 +01:00
Torsten Schulz (local)
9d01ab6ce1 feat(App): enhance club selection and routing logic
- Updated the club selection dropdown to trigger a method on change, improving user interaction.
- Removed the load club button, streamlining the selection process.
- Introduced a computed property for view reloading based on the current club and route.
- Refactored club selection handling to ensure proper routing when selecting a new club or creating one.
2026-03-18 22:03:45 +01:00
Torsten Schulz (local)
269f648ad7 feat(CourtDrawing): enhance CourtDrawingDialog and CourtDrawingTool components
- Updated CourtDrawingDialog to improve layout and responsiveness, including a new drawing dialog body structure and styling adjustments.
- Enhanced CourtDrawingTool with a comprehensive exercise selection workflow, allowing users to configure exercises with detailed options for start positions, strokes, and targets.
- Introduced new UI elements for better user interaction and streamlined the process of adding additional strokes.
- Improved overall styling for a more cohesive and user-friendly experience.
2026-03-18 21:50:31 +01:00
Torsten Schulz (local)
76cc8d9c30 feat(MembersView, i18n): add 'activeDataIncomplete' scope and update member filtering
- Introduced a new translation key for 'activeDataIncomplete' in the German locale.
- Updated MembersView to include filtering for members with active status but incomplete data, enhancing member management capabilities.
2026-03-18 21:17:25 +01:00
Torsten Schulz (local)
b13d33c72c feat(TrainingStatsService, MembersView, TrainingStatsView): enhance training statistics and member management features
- Added new functions in TrainingStatsService to calculate monthly trends and member distribution based on training participation.
- Updated MembersView to improve the display of training groups and address potential data entry issues with visual hints.
- Enhanced TrainingStatsView with new filters for weekdays and training groups, and improved the layout for displaying training statistics, including average participation and attendance rates.
- Introduced additional statistics panels for better insights into training performance and member engagement.
2026-03-18 21:07:52 +01:00
Torsten Schulz (local)
dc15b48b80 refactor(App, Router, Login): streamline authentication flow and enhance route management
- Replaced manual logout handling in App.vue with a dedicated logout method for cleaner code.
- Updated router.js to add public meta properties to several routes, improving route access management.
- Implemented a global navigation guard to redirect unauthenticated users to the login page when accessing protected routes.
- Modified the login process in Login.vue to support redirecting users back to their intended destination after successful login.
2026-03-18 18:20:28 +01:00
Torsten Schulz (local)
c441d4a049 feat(Home): enhance SEO content and layout for improved user engagement
- Added a new SEO-focused section introducing the Vereinssoftware for Tischtennisvereine, detailing its features and benefits.
- Included multiple search topic articles to highlight key functionalities such as member management, training planning, and tournament organization.
- Updated styles for the new sections to ensure a responsive and visually appealing layout.
- Enhanced the SEO copy to clarify the software's relevance in search results, targeting specific user queries.
2026-03-18 18:16:11 +01:00
Torsten Schulz (local)
f94914703a feat(SEO): implement SEO configuration and meta tag management
- Added SEO defaults and route-specific configurations for improved search engine visibility.
- Introduced functions to normalize paths and retrieve SEO settings based on the current route.
- Enhanced server-side rendering to dynamically update meta tags for title, description, and robots directives.
- Created a utility for managing SEO-related meta and link tags in the frontend, ensuring consistent application of SEO practices across routes.
- Updated sitemap with new last modification dates and removed outdated entries for better search engine indexing.
2026-03-18 18:15:01 +01:00
Torsten Schulz (local)
0bb636b91d style(DiaryParticipantsPanel, DiaryView): enhance responsive design and layout
- Updated styles in DiaryParticipantsPanel to improve participant row layout and ensure proper word breaking for names.
- Adjusted styles in DiaryView for better mobile responsiveness, including changes to column display and sidebar padding.
- Ensured consistent minimum width settings across components to enhance overall UI coherence.
2026-03-18 18:09:59 +01:00
Torsten Schulz (local)
bf40927efb refactor(MembersOverviewSection): simplify layout and enhance filtering options
- Removed unnecessary subtitle and member statistics display for a cleaner interface.
- Introduced a collapsible section for advanced filters, improving user experience by organizing search and filter options.
- Maintained existing functionality while enhancing the overall layout and accessibility of member filtering features.
2026-03-18 18:07:01 +01:00
Torsten Schulz (local)
9340ee3509 feat(MemberService, SchedulerService): implement inactive member cleanup functionality
- Added a new method in MemberService to clean up inactive members who haven't trained in the last specified days, enhancing data management.
- Integrated the cleanup method into SchedulerService to run automatically via a scheduled job, improving system maintenance.
- Updated the MembersView to reflect changes in member data, ensuring a consistent user experience.
2026-03-18 18:03:15 +01:00
Torsten Schulz (local)
eea3372057 feat(MembersOverviewSection, MembersView): add age range filter and enhance member scope display
- Introduced age range inputs in the MembersOverviewSection for filtering members by age, allowing users to specify a minimum and maximum age.
- Updated the MembersView to handle new age range properties and emit corresponding updates.
- Enhanced the display of member scope chips by separating label and count for improved readability and styling.
- Refactored related components to ensure consistent functionality and styling across the application.
2026-03-18 17:10:37 +01:00
Torsten Schulz (local)
563a7e8dde feat(MemberTtrHistory): implement TTR history management and UI enhancements
- Added new endpoints in the member controller for retrieving and refreshing TTR history.
- Integrated TTR history functionality into the member service, allowing for seamless data retrieval and updates.
- Updated the member model to include a field for TTR history player ID, enhancing data tracking.
- Enhanced the MembersView to display TTR history with a dedicated dialog for better user interaction.
- Improved the MyTischtennisClient to support fetching historical player IDs, enriching the data provided to users.
- Refactored various components to ensure consistent styling and functionality across the application.
2026-03-18 15:34:10 +01:00
Torsten Schulz (local)
79adad9564 feat(audit, frontend, backend): introduce audit scripts and enhance error handling
- Added new npm scripts for auditing frontend size and inline TODOs, improving code quality management.
- Enhanced error handling in the `nuscoreApiRoutes` to return specific validation error statuses, improving API response clarity.
- Updated SQL migration documentation to establish a clear process for manual migrations and ensure backward compatibility.
- Refactored various components to align with new design standards, enhancing UI consistency across the application.
2026-03-18 11:23:03 +01:00
Torsten Schulz (local)
b7b40f5a9b refactor(MembersView, TeamManagementView, ScheduleView, OPTIMIZATION_TODO): componentize views and update optimization tasks
- Completed the componentization of `MembersView`, `TeamManagementView`, and `ScheduleView` to improve maintainability and reduce file sizes.
- Extracted specific sections into dedicated components, enhancing the focus on core functionalities within each view.
- Updated the optimization documentation to reflect the completion of these tasks, ensuring clarity on the current state of the project.
2026-03-17 16:46:33 +01:00
Torsten Schulz (local)
414c5ccee5 refactor(autoFetchMatchResultsService, MYTISCHTENNIS_AUTO_FETCH_README.md, Optimization TODO): enhance data processing and documentation
- Refactored the `autoFetchMatchResultsService` to separate single and double player statistics processing into distinct methods, improving code clarity and maintainability.
- Updated the README to reflect the current status of rating updates and match results, marking them as active and detailing their functionalities.
- Closed several TODOs in the optimization documentation, confirming the implementation of previously outlined tasks and ensuring no open inline TODOs remain in the main views.
2026-03-17 16:04:10 +01:00
Torsten Schulz (local)
6320c5ca72 feat(DialogExamples, DiaryParticipantsPanel, ImageViewerDialog, MatchReportApiDialog, MemberGalleryDialog, LogsView, TeamManagementView, TournamentTab, i18n): enhance UI components and localization
- Updated various UI components to improve styling and user experience, including DialogExamples, DiaryParticipantsPanel, ImageViewerDialog, and MatchReportApiDialog.
- Introduced new participant status filter in DiaryParticipantsPanel, allowing for 'excused' status.
- Enhanced image upload section in ImageViewerDialog with improved layout and styling.
- Refactored MatchReportApiDialog to streamline pin input handling and feedback mechanisms.
- Added functionality to filter members in MemberGalleryDialog based on a new `shouldShowMember` prop.
- Improved styling in LogsView for better readability and user interaction.
- Refactored TeamManagementView to utilize a new TeamListCard component for better code organization and maintainability.
- Updated TournamentTab to enhance the tournament workspace header with improved data display and interaction.
- Expanded localization files to include new keys for participant status and other UI elements, enhancing accessibility for users in both English and German.
2026-03-17 16:00:30 +01:00
Torsten Schulz (local)
483d5d2bc7 feat(ParticipantController, ParticipantModel, ParticipantRoutes, DiaryParticipantsPanel, i18n): implement participant status management and UI updates
- Added functionality to update participant attendance status, allowing for 'excused' and 'cancelled' states.
- Enhanced the participant model to include a default attendance status and validation for status values.
- Updated participant routes to support status updates and integrated new status handling in the participant controller.
- Modified the DiaryParticipantsPanel to visually indicate participant status and added a toggle for changing status.
- Expanded localization files to include new keys for participant status, improving accessibility for users in both English and German.
2026-03-17 15:23:35 +01:00
Torsten Schulz (local)
46812a0c14 fix(DiaryView): improve drag-and-drop item reordering logic
- Updated the drag-and-drop functionality to correctly handle item indices during reordering, ensuring accurate updates to the training plan.
- Enhanced error handling by loading the training plan after a successful reorder, improving user experience and stability.
2026-03-17 14:54:47 +01:00
Torsten Schulz (local)
1c1f05400f feat(DiaryView): enhance drag-and-drop functionality for training plan items
- Added a new class for sortable rows in the training plan table, improving the drag-and-drop experience.
- Updated the sortable initialization to target the new class, ensuring proper item handling during reordering.
- Implemented a check in the drag end event to prevent errors when no item is moved, enhancing stability.
2026-03-17 14:47:57 +01:00
Torsten Schulz (local)
c325a5a4d6 feat(CourtDrawingDialog, DiaryView): conditionally display duration fields in diary entries
- Updated the CourtDrawingDialog to conditionally render duration input fields based on the new `showDurationFields` property, enhancing user experience.
- Modified the DiaryView to pass the `show-duration-fields` prop, ensuring proper integration with the updated dialog functionality.
- Improved the overall logic for displaying diary fields, allowing for more dynamic user interactions.
2026-03-17 14:34:10 +01:00
Torsten Schulz (local)
b16743d27d feat(CourtDrawingDialog, DiaryView, i18n): add diary fields for duration and group selection
- Introduced new diary fields in the CourtDrawingDialog for inputting duration as text and minutes, along with a group selection dropdown.
- Implemented logic to calculate duration from text input, enhancing user experience in managing diary entries.
- Updated the DiaryView to support the new diary fields, ensuring proper data handling and integration with existing functionalities.
- Expanded localization files for English and German to include new keys related to the diary fields, improving accessibility for users.
2026-03-17 14:26:47 +01:00
Torsten Schulz (local)
afe51f399c feat(Scheduler, MatchService, PredefinedActivity): enhance scheduling and match fetching features
- Added new scheduler routes to manage scheduling functionalities.
- Updated match fetching logic to include a scope parameter for more flexible data retrieval.
- Introduced a new field `excludeFromStats` in the PredefinedActivity model to manage activity visibility in statistics.
- Enhanced the diary date activity controller to handle predefined activities, improving activity management.
- Refactored various services to support new features and improve overall data handling.
2026-03-17 14:10:35 +01:00
Torsten Schulz (local)
f1cfd1147d feat(TeamManagementView, i18n): enhance team management interface and localization
- Added new summary cards to display team statistics, including total teams, fully configured, partially configured, and teams without leagues.
- Implemented search and filter functionality for teams, improving user navigation and management.
- Expanded German localization file with new keys for team management features, enhancing the experience for German-speaking users.
- Updated the layout for automatic job information, improving clarity and user interaction.
2026-03-17 09:04:45 +01:00
Torsten Schulz (local)
44b2b9fdbf feat(DiaryParticipantsPanel): add gallery button and loading state
- Introduced a new button in the DiaryParticipantsPanel for opening the gallery, with a loading state to indicate when the gallery is being created.
- Added a new `galleryLoading` property to manage the button's disabled state and text dynamically.
- Enhanced the layout of the participant toolbar for better user experience.
2026-03-17 00:30:42 +01:00
Torsten Schulz (local)
d0b6e6f0ac feat(DiaryView, i18n): improve diary overview with new readiness indicators and localization updates
- Refactored the DiaryView to implement a tabbed overview for training day, details, and groups, enhancing user navigation.
- Added a readiness panel to display the status of training day elements, including training window, participants, and open plan items.
- Expanded the German localization file with new keys for readiness indicators and checklist items, improving the experience for German-speaking users.
2026-03-17 00:28:36 +01:00
Torsten Schulz (local)
bf770291f6 feat(DiaryView, i18n): enhance diary view with new training day features and localization updates
- Added new sections in the DiaryView for displaying active training day details, including training window, participants, and free activities.
- Implemented toggle functionality for displaying training day and group details, improving user interaction.
- Expanded German localization file with new keys and translations related to training days, groups, and activities, enhancing the user experience for German-speaking users.
2026-03-17 00:16:19 +01:00
Torsten Schulz (local)
2347dccafe feat(memberTransferService, trainingStatsService, i18n): enhance member transfer logic and update localization files
- Updated the member transfer service to only load active members with `testMembership = false`, improving data accuracy during transfers.
- Introduced new functions in the training stats service to count missed training weeks, enhancing training participation tracking.
- Expanded localization files for multiple languages, adding new keys and translations for member management features, improving user experience across the application.
2026-03-16 23:42:28 +01:00
Torsten Schulz (local)
43f96b2491 feat(tournamentService): add validation for stage advancements and enhance tournament configuration
- Implemented a new function `validateStageAdvancements` to ensure the integrity of stage advancements in tournaments, including checks for valid indices, types, and configurations.
- Enhanced the `isGroupAdvancementReady` function to verify group readiness based on match completion and participant positions.
- Updated the tournament management interface to include new validation logic, improving the overall robustness of tournament setup.
- Refactored tournament-related components to improve user experience and ensure accurate data handling across the application.
2026-03-16 22:17:37 +01:00
Torsten Schulz (local)
e1dccb6ff0 feat(OfficialTournaments): redesign tournament management interface
- Introduced a new admin panel for importing tournaments via PDF upload, enhancing user experience for tournament management.
- Reorganized the layout to include tabs for events and participations, improving navigation and accessibility of tournament data.
- Updated event listing with options to edit and delete tournaments, streamlining tournament management tasks.
- Enhanced the visual presentation with clearer headers and descriptions for better user guidance.
2026-03-16 14:12:20 +01:00
Torsten Schulz (local)
adc8857e29 refactor(DiaryView): optimize time checking logic and sound playback
- Simplified the time checking logic for training start and end times, reducing redundancy.
- Introduced a mechanism to prevent repeated sound playback for the same activity marks.
- Enhanced sound playback functions to reset and play sounds more reliably, improving user experience during training sessions.
2026-03-13 17:04:48 +01:00
Torsten Schulz (local)
a030e07b46 refactor(clubSettings): remove myTischtennis club ID and update related logic
- Removed the myTischtennis club ID field from club settings and related backend logic.
- Updated the database migration to eliminate the my_tischtennis_club_id column.
- Adjusted frontend components and services to reflect the removal of the club ID, ensuring the use of association member number instead.
- Enhanced user interface hints to clarify the use of association member number for rankings.
2026-03-12 10:34:10 +01:00
Torsten Schulz (local)
ad09a45b17 feat(clubSettings): enhance club settings with myTischtennis integration
- Added new fields for myTischtennis club ID, federation nickname, and auto-fetch rankings in the club settings.
- Updated the backend to handle the new settings in the updateClubSettings method.
- Implemented automatic ranking updates for clubs based on the new settings in the autoUpdateRatingsService.
- Enhanced the frontend to support the new settings, including validation and user interface updates for better user experience.
2026-03-12 10:25:49 +01:00
Torsten Schulz (local)
595e2eb141 style(LogsView): update success log background color for scheduler runs
- Changed the background color for successful scheduler runs (status 200) from yellow to green for better visibility and user experience.
2026-03-12 10:15:59 +01:00
Torsten Schulz (local)
4251dd6989 feat(clickTtTournamentRegistrationService): add participant registration navigation steps
- Introduced additional steps to navigate to the participant registration section by clicking on 'Teilnehmeranmeldung'.
- Ensured the page waits for the DOM to load and dismisses consent overlays, improving user experience during the registration process.
2026-03-11 21:22:49 +01:00
Torsten Schulz (local)
dba290c1d4 feat(clickTtTournamentRegistrationService): enhance error handling and diagnostics for tournament registration
- Added detailed diagnostics to capture page content and URLs during registration failures, improving error reporting.
- Implemented a function to build a debug HTML path for saving page content, aiding in troubleshooting.
- Updated error handling to include relevant diagnostic information in error messages, enhancing clarity for users.
2026-03-11 21:16:23 +01:00
Torsten Schulz (local)
8776c01e47 refactor(clickTtTournamentRegistrationService): optimize tournament search and link retrieval logic
- Streamlined the tournament search process by caching the results page URL to avoid redundant searches.
- Enhanced the link retrieval mechanism to focus on table rows, improving accuracy in finding relevant tournament links.
- Updated scoring criteria for link selection to better prioritize relevant entries based on tournament and competition context.
2026-03-11 21:10:52 +01:00
Torsten Schulz (local)
fb39aa0e8b feat(clickTtTournamentRegistrationService): implement competition registration saving logic
- Added a new method `_saveCompetitionRegistration` to handle the saving of competition registrations, improving code organization and readability.
- Replaced direct calls to clickTtPlayerRegistrationService for saving with the new method, enhancing maintainability.
- Implemented error handling to verify successful registration and provide feedback if the registration confirmation is not displayed.
2026-03-11 21:00:52 +01:00
Torsten Schulz (local)
f49250e988 refactor(clickTtTournamentRegistrationService): improve link retrieval and scoring logic
- Updated link retrieval to target specific content areas, enhancing accuracy in finding tournament links.
- Added filters to exclude irrelevant links based on href patterns, improving the relevance of selected links.
- Enhanced scoring mechanism for link selection by incorporating additional criteria, ensuring better matching of tournament entries.
2026-03-11 20:58:59 +01:00
Torsten Schulz (local)
555e36ea39 feat(clickTtTournamentRegistrationService): enhance tournament title processing and link retrieval
- Added functions to tokenize tournament titles and generate a search profile, improving the accuracy of title matching.
- Updated the link retrieval logic to utilize the new title processing methods, enhancing the selection of tournament links based on normalized and tokenized title data.
- Improved scoring mechanism for link selection to prioritize relevant tournament entries, ensuring better user experience during registration.
2026-03-11 20:55:14 +01:00
Torsten Schulz (local)
2f82886ad6 feat(officialTournament): add auto-registration for tournament participants
- Implemented a new endpoint to automatically register participants for official tournaments using the Click-TT service.
- Added a corresponding method in the frontend to trigger the auto-registration process, enhancing user experience by simplifying participant management.
- Updated the official tournament controller and routes to support the new functionality.
2026-03-11 20:47:44 +01:00
Torsten Schulz (local)
36ed320893 feat(MembersView): add HTML support for info dialog details
- Introduced a new property `detailsHtml` to the info dialog for rendering HTML content.
- Added a new method `showInfoHtml` to display messages with HTML details.
- Updated the Click-TT application submission flow to utilize the new HTML details feature for improved user feedback.
2026-03-11 20:19:16 +01:00
Torsten Schulz (local)
9d13a2e211 refactor(clickTtPlayerRegistrationService): improve nationality selection logic
- Updated nationality selection to handle multiple selectors, enhancing flexibility in form filling.
- Added checks for 'WONoSelectionString' and specific values to improve validation during player registration.
- Streamlined the selection process by breaking out of the loop once a valid selection is made, improving efficiency.
2026-03-11 17:32:02 +01:00
Torsten Schulz (local)
7cb6b66971 refactor(clickTtPlayerRegistrationService, memberController): improve error handling and diagnostics
- Updated error response structure in memberController to include detailed information instead of a trace array, enhancing clarity for the client.
- Enhanced ClickTtPlayerRegistrationService to capture and return detailed information about the selected search result and last submission attempt, improving error diagnostics.
- Modified frontend to format and display the new detailed error information, providing better context for users during registration failures.
2026-03-11 17:25:15 +01:00
Torsten Schulz (local)
312a1d9d8a refactor(clickTtPlayerRegistrationService): enhance application search and link handling
- Introduced a new function to normalize comparable text for improved matching during application searches.
- Updated the _openApplicationAfterSearch method to accept member data, enhancing the accuracy of application link retrieval based on expected name and birth date.
- Improved error handling to provide clearer feedback when no matching application entry is found, ensuring better user guidance during the registration process.
2026-03-11 17:21:29 +01:00
Torsten Schulz (local)
bfd6068c5c refactor(clickTtPlayerRegistrationService): update nationality selection and gender handling
- Modified nationality selection logic to include an additional condition for 'WONoSelectionString' and a specific value '209', enhancing form validation.
- Updated gender mapping to exclude disabled options, improving the accuracy of gender selection during player registration.
2026-03-11 17:12:09 +01:00
Torsten Schulz (local)
ab466adde7 refactor(clickTtPlayerRegistrationService): enhance error diagnostics and HTML file handling
- Added directory creation for debug HTML file paths to ensure proper file generation during error handling.
- Improved diagnostics object to capture additional error context, including URL and sanitized body text, enhancing troubleshooting capabilities.
- Streamlined error handling to maintain partial diagnostics even when certain data retrieval fails, improving robustness in error reporting.
2026-03-11 17:04:49 +01:00
Torsten Schulz (local)
a77926838b refactor(clickTtPlayerRegistrationService): update debug HTML file path generation
- Modified the buildDebugHtmlPath function to use path.join for constructing the file path, ensuring compatibility across different operating systems.
- This change enhances the maintainability of the code by standardizing file path handling.
2026-03-11 16:42:23 +01:00
Torsten Schulz (local)
c0efd56c9c feat(clickTtPlayerRegistrationService): add debug HTML file generation for error diagnostics
- Introduced a new function to generate a timestamped HTML file containing the page content during error handling, improving diagnostics for failed registration attempts.
- Enhanced error reporting to include the path to the generated HTML file, providing better context for troubleshooting issues in the registration flow.
2026-03-11 16:37:08 +01:00
Torsten Schulz (local)
79cec02c1a refactor(clickTtPlayerRegistrationService): improve nationality and country selection logic
- Replaced direct option selection with a new method that selects options based on partial label matching, enhancing flexibility in form filling.
- Introduced the _selectOptionByLabelContains method to streamline the selection process for nationality and country fields, improving code maintainability.
2026-03-11 16:34:11 +01:00
Torsten Schulz (local)
c1cf903196 refactor(clickTtPlayerRegistrationService): enhance application form filling and consent handling
- Updated the _fillApplicationForm method to include trace logging and improved handling of form fields, ensuring all necessary data is filled correctly.
- Introduced a new method to check and fill empty fields, streamlining the form completion process.
- Added consent overlay dismissal to improve user experience during the registration flow.
2026-03-11 16:31:23 +01:00
Torsten Schulz (local)
6a18d4ce0f refactor(clickTtPlayerRegistrationService): enhance search form handling and error reporting
- Updated the _fillSearchForm method to include trace logging and improved error handling for missing search forms, ensuring better feedback during the registration process.
- Enhanced the _openApplicationEntry method to streamline application entry checks and improve error messaging for missing elements, contributing to a more robust registration flow.
2026-03-11 16:25:34 +01:00
Torsten Schulz (local)
cf376a8f68 refactor(clickTtPlayerRegistrationService): streamline application entry handling
- Replaced the method for ensuring application entry visibility with a more direct approach to open the application entry, improving code clarity and reducing complexity.
- Enhanced error handling to provide clearer feedback when the application entry cannot be found, ensuring better user guidance during the registration process.
2026-03-11 16:14:25 +01:00
Torsten Schulz (local)
5c9901209c feat(clubSettings): enhance club settings UI with loading and error handling
- Added loading and error states to the club settings view, improving user feedback during data retrieval.
- Introduced new translations for error messages in the German locale, enhancing localization support.
- Updated the save method to alert users when no club is selected, ensuring clarity in user actions.
2026-03-11 16:08:47 +01:00
Torsten Schulz (local)
8750ac6d65 fix(clickTtPlayerRegistrationService): improve error messaging for missing association member number
- Updated the club retrieval logic to include specific attributes, enhancing data accuracy.
- Enhanced error handling to provide detailed feedback when the association member number is missing, including the club name for better context.
2026-03-11 15:58:34 +01:00
Torsten Schulz (local)
2919ee3764 feat(clickTtPlayerRegistrationService): enhance registration flow with club context and error handling
- Integrated Club model to retrieve association member number during player registration, ensuring necessary data is available.
- Added methods to select club context and ensure application entry visibility, improving navigation within the Click-TT interface.
- Enhanced error handling for missing association member numbers, providing clearer feedback to users during the registration process.
- Updated consent overlay handling to streamline user interactions and improve automation in the registration flow.
2026-03-11 15:55:21 +01:00
Torsten Schulz (local)
7196fae28e feat(server, models, services, frontend): integrate Click-TT account functionality
- Added ClickTtAccount model and integrated it into the server and database synchronization processes.
- Updated ClickTtPlayerRegistrationService to utilize ClickTtAccount for user account management, enhancing the registration flow.
- Modified frontend components to include navigation to Click-TT account settings and updated routing to support the new account view.
- Improved error handling and user feedback in the registration process, ensuring clarity in account-related operations.
2026-03-11 15:47:58 +01:00
Torsten Schulz (local)
2ddb63b932 feat(clickTtPlayerRegistrationService): enhance login flow and consent handling
- Added a new constant for the Click-TT login URL to streamline navigation during the login process.
- Improved the login flow by directly navigating to the login URL if no direct login fields are found, enhancing user experience.
- Introduced a method to dismiss consent overlays, improving the automation of the registration process by handling consent banners effectively.
2026-03-11 15:36:24 +01:00
Torsten Schulz (local)
8fc754c235 feat(clickTtPlayerRegistrationService, MembersView): enhance Click-TT registration flow and UI feedback
- Replaced the abort confirmation flow with a new function to open the application after a search, improving user experience by directly navigating to the application.
- Updated error handling to provide clearer messages when a confirm dialog is encountered, enhancing traceability.
- Modified the MembersView to track application submission status and display detailed success/error messages, improving user feedback during the registration process.
- Introduced a new method to format and display trace details, aiding in debugging and user communication.
2026-03-11 15:31:37 +01:00
Torsten Schulz (local)
139d169fcc fix(clickTtHttpPageRoutes): improve inline confirm element handling and logging
- Updated the regex for matching inline confirm elements to enhance accuracy in capturing onclick attributes.
- Improved logging to include the full onclick value during inline confirm inspections, aiding in debugging.
- Adjusted the output format for inline confirm elements in logs to JSON for better readability and traceability.
2026-03-11 13:28:58 +01:00
Torsten Schulz (local)
de1382b57e feat(clickTtHttpPageRoutes): add inline confirm elements summarization and logging
- Introduced a new function to summarize inline confirm elements in HTML, capturing relevant attributes for better tracking of user interactions.
- Enhanced the proxy navigation script to log details of inline confirm elements, improving traceability during proxy interactions.
- Updated the existing functionality to ensure inline confirm elements are logged when present, contributing to better debugging and user experience.
2026-03-11 13:25:18 +01:00
Torsten Schulz (local)
08095ce22e feat(memberController, memberRoutes, MembersView): implement Click-TT player registration feature
- Added a new endpoint for Click-TT player registration in memberController, allowing submission of existing player applications.
- Integrated the new endpoint into memberRoutes for handling requests.
- Updated MembersView to include a button for initiating Click-TT registration, with user confirmation and loading state management.
- Enhanced UI feedback for registration status, improving user experience during the application process.
2026-03-11 13:17:59 +01:00
Torsten Schulz (local)
9c30cd181c feat(clickTtHttpPageRoutes): add inline confirm handling to proxy navigation script
- Introduced a new function to manage inline confirm dialogs, allowing user confirmation before proceeding with actions triggered by inline event handlers.
- Enhanced the proxy navigation script to prevent default actions if the inline confirm is not accepted, improving control over user interactions.
- Updated logging to capture confirmation dialog details for better traceability during proxy interactions.
2026-03-11 13:04:37 +01:00
Torsten Schulz (local)
c1f45b2b98 feat(server): add raw body parsing for multipart/form-data and application/octet-stream
- Implemented a new middleware to handle raw body parsing for specific content types, allowing for larger payloads up to 5mb.
- Enhanced form body serialization to support Buffer input, improving compatibility with various data formats during proxy interactions.
2026-03-11 12:45:25 +01:00
Torsten Schulz (local)
e5e1ccba82 feat(clickTtHttpPageRoutes): enhance form submission handling and logging
- Added logic to track the last submitter for forms, improving the accuracy of form data submissions.
- Implemented checks to append hidden fields for submitters without existing form fields, ensuring all relevant data is captured.
- Enhanced logging for form submissions to include submitter details, improving traceability and debugging capabilities during proxy interactions.
2026-03-11 12:37:01 +01:00
Torsten Schulz (local)
3ea9cdd611 feat(clickTtHttpPageRoutes): add sensitive data masking and form body summarization
- Introduced functions to mask sensitive values in form submissions and summarize form body data, enhancing security and logging capabilities.
- Updated the proxy POST route to log detailed information about submitted forms, including field counts and redacted values for sensitive keys.
- Enhanced error handling for URL-encoded body parsing, improving robustness in form data processing.
2026-03-11 12:25:45 +01:00
Torsten Schulz (local)
1398e8911a feat(clickTtHttpPageRoutes, ClickTtView): enhance script injection for improved HTML handling
- Added checks to inject the navigation script into the <head> or <body> of HTML responses, ensuring proper script placement for enhanced functionality.
- Updated ClickTtView to include a reference for the iframe, improving access to the iframe element for future interactions.
- Enhanced overall HTML processing during proxy interactions, contributing to a more robust user experience.
2026-03-11 00:06:42 +01:00
Torsten Schulz (local)
c40ee04e9e feat(clickTtHttpPageRoutes): add inline script normalization for improved HTML processing
- Introduced a new function, normalizeInlineScriptStrings, to standardize inline script content in HTML, ensuring proper handling of escape characters and line breaks.
- Updated the proxy GET and POST routes to utilize the new normalization function, enhancing the robustness of HTML processing during proxy interactions.
- Enhanced existing URL validation logic to include additional allowed domains, improving overall proxy functionality.
2026-03-10 23:33:40 +01:00
Torsten Schulz (local)
dee96a9445 feat(clickTtHttpPageRoutes): enhance HTML processing for proxy handling
- Introduced a new function, applyOutsideScriptTags, to safely transform HTML while preserving script tags, improving the handling of links, meta-refresh, and form actions.
- Updated existing functions to utilize the new transformation method, ensuring that proxy URLs are correctly applied without disrupting script execution.
- Enhanced error handling in HTML processing functions to maintain robustness during URL rewriting operations.
2026-03-10 23:18:45 +01:00
Torsten Schulz (local)
4484f122d2 feat(clickTtHttpPageRoutes): extend proxy URL validation to include liga.nu
- Added a new function, isAllowedProxyUrl, to validate URLs against an updated list of allowed domains, including liga.nu.
- Updated existing checks in the proxy GET and POST routes to utilize the new validation function, ensuring consistent error messaging for unsupported URLs.
- Enhanced error responses to reflect the inclusion of liga.nu in the allowed domains, improving user guidance during proxy interactions.
2026-03-10 23:06:46 +01:00
Torsten Schulz (local)
df95753f4d refactor(clickTtHttpPageRoutes): optimize proxy navigation script for improved readability and performance
- Refactored the proxy navigation script by restructuring the code into a more concise format using an array to build the script content, enhancing readability.
- Maintained the core functionality while ensuring compatibility with existing event handling and URL management logic.
2026-03-10 23:02:46 +01:00
Torsten Schulz (local)
79ce79db8c fix(clickTtHttpPageRoutes): improve event handling in proxy navigation script
- Added a check to prevent default actions if the event has already been prevented, ensuring better control over link navigation.
- Changed the event listener from capturing to bubbling phase to enhance compatibility with other event handlers in the document.
2026-03-10 22:57:06 +01:00
Torsten Schulz (local)
59d7c3559c feat(clickTtHttpPageRoutes, ClickTtView): implement proxy navigation script and enhance URL selection
- Added a new function to inject a navigation script into HTML responses, enabling seamless proxy navigation for links and form submissions.
- Updated the ClickTtView component to include new preset URL options for HTTV and TTDE login, improving user experience by providing quick access to common links.
- Adjusted form handling logic to support the new preset URLs, ensuring proper URL management during proxy interactions.
2026-03-10 22:48:54 +01:00
Torsten Schulz (local)
71ac054d48 feat(ClickTtView): add URL template selection for 'url' page type
- Introduced a new dropdown for selecting predefined URLs when the page type is set to 'url', enhancing user experience by providing quick access to common links.
- Included options for HTTV and TTDE login URLs to streamline navigation for users.
2026-03-10 22:39:26 +01:00
Torsten Schulz (local)
c472bb1fdc fix(clickTtHttpPageRoutes, clickTtHttpPageService): update effective page URL handling in proxy routes
- Introduced a new variable, effectivePageUrl, to ensure the correct URL is used for rewriting links and form actions in both GET and POST proxy requests.
- Updated the logic to derive the page origin from effectivePageUrl, enhancing the accuracy of base tag handling for relative URLs.
- Enhanced logging in the fetchWithLogging function to include the response URL, improving traceability in HTTP requests.
2026-03-10 22:37:30 +01:00
Torsten Schulz (local)
0e4d1707fd feat(logging): enhance HTTP request logging with additional payload details
- Introduced new fields in the HttpPageFetchLog model to capture request and response headers, bodies, and method for improved logging granularity.
- Updated the logging service to serialize and store these new details during HTTP fetch operations, enhancing traceability and debugging capabilities.
- Modified the clickTtHttpPageRoutes to include the new logging features, allowing for optional payload inclusion in log queries.
2026-03-10 22:26:37 +01:00
Torsten Schulz (local)
4f3a1829ca feat(clickTtHttpPageRoutes): add meta-refresh URL rewriting for proxy handling
- Implemented a new function to rewrite meta-refresh URLs in HTML, ensuring redirects after login are routed through the proxy while maintaining session integrity.
- Updated the proxy GET and POST endpoints to include the new meta-refresh handling, enhancing the overall functionality of the proxy interactions.
- Improved error handling in the new function to ensure robustness in processing HTML content.
2026-03-10 22:15:37 +01:00
Torsten Schulz (local)
bacc6b994d refactor(clickTtHttpPageRoutes): standardize variable names for clarity in proxy response handling
- Renamed variables for the response body and content type to improve code readability and maintainability.
- Ensured consistent usage of the new variable names throughout the proxy response processing logic, enhancing overall code clarity.
2026-03-10 22:10:16 +01:00
Torsten Schulz (local)
c5a88324c3 feat(clickTtHttpPageRoutes): enhance proxy functionality with session management and cookie handling
- Introduced session ID management to maintain user sessions across proxy requests, improving tracking and logging capabilities.
- Added functions to extract and format cookies, enabling proper cookie handling for requests and responses.
- Updated link and form action rewriting functions to include session IDs, ensuring seamless integration with the proxy.
- Enhanced the proxy GET and POST endpoints to manage cookies effectively, improving the overall robustness of the proxy interactions.
2026-03-10 22:08:20 +01:00
Torsten Schulz (local)
cab06f9ad6 feat(clickTtHttpPageRoutes): implement form action rewriting and proxy for POST requests
- Added a new function to rewrite form actions in HTML to route submissions through the proxy, enhancing logging for login actions.
- Implemented a POST endpoint for the proxy to handle form submissions, including validation for target URLs and forwarding requests with appropriate headers.
- Enhanced error handling and response management for the new proxy functionality, ensuring robust interaction with external services.
2026-03-10 22:03:32 +01:00
Torsten Schulz (local)
c87cebba36 feat(clickTtHttpPageRoutes): add base tag handling for relative URLs in proxy response
- Implemented logic to dynamically insert a base tag in the HTML response for relative URLs, ensuring proper resolution of form actions during login.
- Enhanced the existing proxy route to improve handling of HTML content fetched from target URLs.
2026-03-10 22:01:39 +01:00
Torsten Schulz (local)
a3148a3781 feat(readme): add configuration details for link rewriting and update proxy URL handling
- Introduced a new section in the README for environment variable configuration related to link rewriting, specifying BACKEND_BASE_URL and BASE_URL usage.
- Updated the clickTtHttpPageRoutes to dynamically construct the proxy base URL from environment variables, enhancing flexibility for different deployment environments.
2026-03-10 21:57:43 +01:00
Torsten Schulz (local)
c13f426b3d feat(tournaments): add update functionality for official tournaments
- Implemented an API endpoint to update the title of official tournaments, including error handling for non-existent tournaments.
- Enhanced the frontend to allow users to edit tournament titles directly, with input validation and feedback for successful updates or errors.
- Updated the German localization file to include new strings for editing titles and error messages.
2026-03-10 21:54:03 +01:00
Torsten Schulz (local)
ea6acd8c6c chore(dependencies): update package-lock.json for dottie, dompurify, and immutable
- Bumped dottie version from 2.0.6 to 2.0.7.
- Updated dompurify from 3.3.1 to 3.3.2, adding node engine compatibility.
- Upgraded immutable from 5.1.3 to 5.1.5.
2026-03-10 21:43:50 +01:00
Torsten Schulz (local)
c324da3938 fix(App.vue): update user permissions check and enhance dropdown behavior
- Changed the condition for displaying the click-TT link from admin status to a more specific permission check (canManagePermissions).
- Adjusted dropdown styling to improve usability by setting a maximum height and enabling vertical scrolling while hiding horizontal overflow.
2026-03-10 21:41:43 +01:00
Torsten Schulz (local)
f35e0510e7 feat(tournaments): enhance age eligibility logic and date parsing
- Improved the getCutoffDate method to derive cutoff dates from performance class if not explicitly provided.
- Updated getAgeLimitFromText to handle various age class formats, returning structured age limit objects.
- Introduced getBirthYearFromPerformanceClass to extract birth year information from performance class strings.
- Refined isEligibleByAge to incorporate new eligibility rules based on performance class and age limits, ensuring accurate age validation for tournament participation.
2026-03-10 21:39:50 +01:00
Torsten Schulz (local)
13379d6b24 feat(logging): add HTTP page fetch logging and enhance click-TT proxy functionality
- Introduced a new logging mechanism for HTTP requests to click-TT/HTTV pages, improving traceability and debugging capabilities.
- Implemented a proxy endpoint for iframe embedding, allowing direct HTML retrieval with enhanced error handling and validation for input URLs.
- Updated the frontend to include a new navigation link for the click-TT feature, accessible to admin users.
- Added a new route for the click-TT view in the router configuration.
2026-03-10 21:27:40 +01:00
Torsten Schulz (local)
055dbf115c feat(diary): improve predefined activities UI and enhance socket event integration
- Updated UI components for managing predefined activities to enhance user experience and accessibility.
- Improved socket event integration for real-time updates related to predefined activities, ensuring seamless interaction with the diary service.
- Refactored related mappers to support new UI changes and maintain data consistency across the application.
2026-03-10 21:24:45 +01:00
Torsten Schulz (local)
78f1196f0a feat(android): configure API and socket endpoints for debug and release builds
- Added API and socket base URLs for both debug and release configurations in gradle.properties.
- Enhanced build.gradle.kts to utilize environment variables for dynamic endpoint configuration.
- Updated debug build type with specific application ID suffix and version name suffix for better differentiation.
- Included necessary dependencies for improved functionality and compatibility.
2026-03-10 21:18:29 +01:00
3619 changed files with 358857 additions and 48826 deletions

View File

@@ -0,0 +1,53 @@
name: Deploy tt-tagebuch
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
env:
SSH_HOST: ${{ vars.PROD_HOST }}
SSH_PORT: ${{ vars.PROD_PORT }}
SSH_USER: ${{ vars.PROD_USER }}
steps:
- name: Show resolved non-secret config
run: |
echo "SSH_HOST=$SSH_HOST"
echo "SSH_PORT=$SSH_PORT"
echo "SSH_USER=$SSH_USER"
- name: Prepare SSH
run: |
set -e
mkdir -p ~/.ssh
printf '%s' "${{ secrets.PROD_SSH_KEY_B64 }}" | base64 -d > ~/.ssh/id_deploy
chmod 600 ~/.ssh/id_deploy
ssh-keygen -l -f ~/.ssh/id_deploy
ssh-keyscan -p "$SSH_PORT" "$SSH_HOST" >> ~/.ssh/known_hosts
- name: Test SSH connection
run: |
set -e
ssh -i ~/.ssh/id_deploy \
-o StrictHostKeyChecking=no \
-o BatchMode=yes \
-o ConnectTimeout=10 \
-p "$SSH_PORT" \
"$SSH_USER@$SSH_HOST" \
"echo SSH OK"
- name: Run deployment script
run: |
set -e
ssh -i ~/.ssh/id_deploy \
-o StrictHostKeyChecking=no \
-o BatchMode=yes \
-o ConnectTimeout=10 \
-p "$SSH_PORT" \
"$SSH_USER@$SSH_HOST" \
"/usr/local/bin/actualize-tagebuch.sh"

9
.gitignore vendored
View File

@@ -9,3 +9,12 @@ backend/images/*
backend/backend-debug.log
backend/*.log
backend/.env.local
mobile-app/.gradle/
mobile-app/.idea/
mobile-app/.kotlin/
mobile-app/build/
mobile-app/composeApp/build/
mobile-app/shared/build/
mobile-app/local.properties
mobile-app/signing.properties

0
System Normal file
View File

View File

@@ -1,2 +0,0 @@
#Thu Mar 05 14:01:17 CET 2026
gradle.version=8.7

View File

@@ -1,92 +0,0 @@
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("org.jetbrains.kotlin.plugin.serialization")
id("org.jetbrains.kotlin.plugin.compose")
}
android {
namespace = "de.trainingstagebuch.app"
compileSdk = 34
defaultConfig {
applicationId = "de.trainingstagebuch.app"
minSdk = 26
targetSdk = 34
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary = true
}
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
buildFeatures {
compose = true
}
packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
}
}
tasks.register<Exec>("checkI18nHardcodedUiStrings") {
workingDir = rootProject.projectDir
commandLine("bash", "scripts/check_no_hardcoded_ui_strings.sh")
}
tasks.named("preBuild").configure {
dependsOn("checkI18nHardcodedUiStrings")
}
dependencies {
val composeBom = platform("androidx.compose:compose-bom:2024.10.01")
implementation("androidx.core:core-ktx:1.13.1")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.8.7")
implementation("androidx.activity:activity-compose:1.9.3")
implementation(composeBom)
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.ui:ui-graphics")
implementation("androidx.compose.ui:ui-tooling-preview")
implementation("androidx.compose.material3:material3")
implementation("androidx.navigation:navigation-compose:2.8.3")
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7")
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7")
implementation("androidx.datastore:datastore-preferences:1.1.1")
implementation("com.squareup.retrofit2:retrofit:2.11.0")
implementation("com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0")
implementation("com.squareup.okhttp3:okhttp:4.12.0")
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
testImplementation("junit:junit:4.13.2")
debugImplementation(composeBom)
debugImplementation("androidx.compose.ui:ui-tooling")
debugImplementation("androidx.compose.ui:ui-test-manifest")
}

View File

@@ -1,2 +0,0 @@
#- File Locator -
listingFile=../../../../outputs/apk/debug/output-metadata.json

View File

@@ -1,2 +0,0 @@
appMetadataVersion=1.1
androidGradlePluginVersion=8.5.2

View File

@@ -1,10 +0,0 @@
{
"version": 3,
"artifactType": {
"type": "COMPATIBLE_SCREEN_MANIFEST",
"kind": "Directory"
},
"applicationId": "de.trainingstagebuch.app",
"variantName": "debug",
"elements": []
}

Some files were not shown because too many files have changed in this diff Show More