- Refactored consent dialog handling to improve reliability by implementing a dedicated function that attempts to dismiss the dialog with multiple selectors.
- Added a delay mechanism to account for asynchronous rendering of the consent dialog, ensuring it is accepted promptly.
- Improved logging to provide clearer feedback on which selector was used to accept the consent dialog.
- Added a new endpoint to start an asynchronous job for fetching team data, allowing for non-blocking operations.
- Implemented job status tracking to retrieve the status of ongoing fetch jobs, enhancing user experience with real-time updates.
- Updated the frontend to initiate async fetch requests and poll for job completion, improving data retrieval efficiency and user feedback.
- Added logic to ensure the presence of a login intent field in the login form, enhancing the reliability of the login process.
- Updated the form submission mechanism to prioritize the explicit login submit button, falling back to a generic submit button if necessary.
- Improved overall interaction flow during the login process, ensuring a smoother user experience.
- Introduced failure diagnostics logging during the login process to capture URL, cookie names, and body preview on errors.
- Enhanced error handling to provide clearer insights into login issues, particularly related to CAPTCHA and password failures.
- Improved console warnings for better visibility into authentication problems encountered during login attempts.
- Introduced enhanced error detection for CAPTCHA and login failures by probing page text during cookie retrieval attempts.
- Reduced maximum polling attempts and adjusted polling interval for better performance and responsiveness.
- Updated error handling to provide clearer feedback on specific login issues encountered during the authentication process.
- Introduced a new mechanism to detect CAPTCHA readiness before form submission, enhancing login reliability.
- Adjusted timeout settings for CAPTCHA field checks to optimize performance during login attempts.
- Added diagnostic logging for better visibility into CAPTCHA state changes and interaction outcomes.
- Improved CAPTCHA interaction by adding checks for readiness before form submission, ensuring smoother login processes.
- Increased the maximum attempts for cookie retrieval to enhance reliability in detecting authentication tokens.
- Updated error messages to provide clearer feedback on login failures related to CAPTCHA and password issues.
- Added visual state tracking for CAPTCHA elements in MyTischtennisClient to improve interaction reliability.
- Increased timeout for CAPTCHA field population to ensure proper handling during login.
- Refactored MyTischtennisController to utilize myTischtennisProxyService for content rewriting and session management, streamlining the login process.
- Removed deprecated content rewriting logic, enhancing code maintainability and clarity.
- Enhanced error handling in MyTischtennisClient and MyTischtennisService to provide clearer feedback when browser executables are missing.
- Updated responses to include specific error messages and status codes, improving user guidance for setup requirements.
- Refactored MyTischtennisDialog and MyTischtennisAccount components to handle API response errors more effectively, ensuring robust login and account management processes.
- Added Playwright as a dependency to handle CAPTCHA challenges during login attempts.
- Implemented a new endpoint to retrieve the login form from myTischtennis, parsing necessary fields for user input.
- Enhanced the login process to utilize Playwright for browser automation when CAPTCHA is required.
- Updated the MyTischtennisDialog component to support local login form submission instead of using an iframe.
- Refactored the MyTischtennisController to include proxy functionality for serving resources and handling login submissions.
- Improved error handling and user feedback during login attempts, ensuring a smoother user experience.
- Added error handling in MatchService to throw an HttpError if a match is not found after an update, improving robustness.
- Enhanced sorting logic in DiaryView to ensure case-insensitive comparison for first and last names, with a stable fallback using IDs.
- Refactored currentClub watcher in ScheduleView to use an object syntax for better clarity and immediate execution on initialization.
- Added WebSocket events for match report submission and schedule updates, enhancing real-time communication between clients and the server.
- Updated matchController to emit schedule updates when match players are modified.
- Enhanced nuscoreApiRoutes to emit match report submissions with relevant data for other clients.
- Implemented socket service methods for handling incoming match report submissions and schedule updates in the frontend.
- Updated MatchReportApiDialog and ScheduleView components to handle new WebSocket events, ensuring data synchronization across clients.
- Improved score input handling by allowing whitespace in valid patterns and ensuring robust parsing of various score formats.
- Updated logic to handle edge cases for score entry, including explicit handling of negative scores and single positive numbers.
- Enhanced overall user experience by ensuring cleaner input processing and validation, maintaining data integrity during score entry.
- Introduced a new button for clearing the current set input, enhancing user control during score entry.
- Updated the keyboard layout to include the clear button, improving the overall usability of the floating keyboard.
- Adjusted the logic to ensure proper handling of set clearing, maintaining data integrity in the match results.
- Improved the floating keyboard layout by adding individual buttons for numbers 1-9, enhancing user interaction.
- Adjusted styles for the keyboard and input fields, including font size, padding, and grid layout, to improve usability.
- Ensured consistent styling for keyboard keys, enhancing the overall user experience during score entry.
- Implemented applyLineupCertificationFromMeetingDetails method to automatically set lineup certification based on meeting details.
- Enhanced the initialization process to include lineup confirmation when PINs are already signed, improving user experience and data accuracy.
- Enhanced the initializeResults method to retain existing match results when available, improving data consistency.
- Added logic to set start and end dates based on available meeting data, ensuring accurate match timing.
- Implemented populateResultsFromMeetingDetails to transfer existing set results from meeting details, enhancing data accuracy.
- Improved fallback mechanisms for match results to ensure defaults are only created when necessary.
- Added a floating keyboard overlay for set input, allowing users to enter scores without using the system keyboard.
- Updated input fields to be read-only and disabled system keyboard interactions, enhancing user experience.
- Implemented methods to manage keyboard interactions, including key input, backspace, and confirmation actions.
- Improved styling for the floating keyboard to ensure clarity and usability during score entry.
- Added extra buttons for appending ':' and '-' to score inputs in the MatchReportApiDialog component, improving user interaction.
- Implemented a method to automatically complete matches when a player wins 3 sets, enhancing match management.
- Updated styles for input elements and buttons to improve layout and usability in the ScheduleView component.
- Added new endpoints for requesting and resetting passwords in the authController.
- Updated User model to include resetToken and resetTokenExpires fields for managing password reset requests.
- Enhanced emailService to send password reset emails with secure links.
- Updated frontend routes and views to support password reset flow, including new ForgotPassword and ResetPassword components.
- Improved internationalization files with new translation keys for password reset messages across multiple languages.
- Updated the logic in the TournamentPlacementsTab component to filter and identify top 3 participants from K.O. rounds more accurately.
- Replaced the previous method of using final placements with a check for filtered K.O. rounds, enhancing the reliability of the data used in PDF generation.
- Ensured that the PDF generation process correctly handles cases where no K.O. rounds are present, maintaining clarity in the output.
- Removed placeholder variables for missing participant data in the TournamentPlacementsTab component.
- Updated the PDF generation logic to use empty strings instead of placeholders for missing data fields, improving the clarity of the generated reports.
- Adjusted cell styles to ensure consistent formatting in the PDF output.
- Changed the PDF title in the TournamentPlacementsTab component to reflect the top 3 participants instead of a generic missing data title.
- This update enhances clarity in the generated PDF reports for users.
- Enhanced the TournamentPlacementsTab component to identify and process only the top 3 participants for PDF generation.
- Added logic to handle cases where no top 3 placements are available, emitting appropriate messages to the user.
- Updated internationalization files to include new translation keys for top 3 related messages and PDF titles across multiple languages.
- Updated the TournamentPlacementsTab component to include phone numbers in the PDF generation for participants with missing data.
- Improved the layout of the PDF by adjusting column widths and changing the orientation to landscape.
- Enhanced internationalization by adding new translation keys for "phone", "generatingPDF", and "page" across multiple languages.
- Updated the button text to reflect the PDF generation status more accurately.
- Implemented a new feature to generate a PDF report for participants with missing data in mini championships.
- Added a button in the TournamentPlacementsTab component to trigger the PDF generation, which is disabled while loading.
- Enhanced internationalization by adding translation keys for the new PDF feature across multiple languages.
- Updated the TournamentTab component to pass the `isMiniChampionship` prop and handle the new `show-info` event.
- Updated the PlayerDetailsDialog component to show a placeholder message when player data is not recorded, improving user experience and clarity.
- Added a new CSS class for missing data to visually differentiate it from available information.
- Enhanced internationalization by adding translation keys for the "data not recorded" message across multiple languages.
- Introduced a new field `numberOfTables` in the Tournament model to track the number of tables for tournaments.
- Updated the tournament update logic to include `numberOfTables` when modifying tournament details.
- Added a new endpoint to set the table number for matches, enhancing match management.
- Updated frontend components to support the new `numberOfTables` feature, including input fields and table distribution logic.
- Enhanced internationalization with new translation keys for table-related features.
- Deleted the entire @mapbox/node-pre-gyp package along with its binaries and documentation files, as it is no longer maintained.
- Removed symlinks for various binaries in the node_modules/.bin directory to clean up unused references.
- This cleanup helps streamline the project by eliminating unnecessary dependencies and files.
- Introduced a `normalizePlayersList` function to handle player data from match updates, ensuring valid and consistent player arrays for `playersReady`, `playersPlanned`, and `playersPlayed`.
- Updated the logic in ScheduleView to utilize normalized player lists when setting member statuses, improving data integrity and error handling.
- Added a `normalizeList` function to filter out duplicates and invalid entries from player arrays.
- Updated the match update logic to use normalized player lists for `playersReady`, `playersPlanned`, and `playersPlayed`.
- Enhanced error handling in the ScheduleView to throw an error for failed match updates based on response status.
- Implemented a new controller method `getMatchPlayers` to fetch active members of a specified club, returning their details.
- Updated the match routes to include a new GET route for retrieving players by club ID.
- Modified the ScheduleView to include the current club ID when updating player information.
- Moved the request access button inside the no access message block for better visual coherence.
- Ensured that the button remains disabled when an access request is pending, maintaining user experience consistency.
- Improved error handling in the loadClub method to check response status directly, ensuring proper fallback club data is used when access is denied.
- Updated logic to throw an error for unexpected response statuses, enhancing user feedback and robustness in access management.
- Introduced a new translation key "accessRequestPending" across various language files to inform users that access to a club has been requested and to ask for their patience.
- Updated the ClubView component to utilize this new message for better user feedback when access is pending.
- Refactored the loadClub method to handle access checks more effectively, ensuring fallback club data is used when access is denied.
- Enhanced error handling to manage access request status and provide appropriate user feedback based on backend responses.
- Added a visual indicator for access requests with a new message when access is requested.
- Disabled the request access button once the request has been made to prevent duplicate submissions.
- Improved error handling in the requestAccess method to manage access request status more effectively.
- Reorganized club-related routes for better clarity and access control, ensuring specific routes are prioritized.
- Updated the store to reset user-specific permissions upon token setting, improving security.
- Modified the ClubView component to handle access checks more effectively, allowing for fallback club data when access is denied.
- Added a check for access permissions before loading open requests to enhance security and prevent unauthorized access.
- Updated the mounted lifecycle hook to conditionally call loadOpenRequests based on access permissions, improving user experience and performance.
- Added methods to retrieve club ID and check access permissions based on user roles and permissions.
- Refactored API calls in loadClub, loadOpenRequests, and requestAccess methods to utilize the new club ID retrieval logic.
- Enhanced error handling in loadClub to manage access denial more effectively.
- Refactored the loadClub method to handle club creation and permission checks, improving navigation based on user roles.
- Updated the route parameter from ':1' to ':clubId' in the router configuration for better clarity and consistency.
- Updated the loadPermissions action to normalize the permissions data structure, ensuring default values for role, isOwner, and permissions.
- Enhanced resource permission checks by using a fallback for undefined permissions, improving robustness in access control logic.
- Introduced data properties for managing info and confirmation dialog states, enhancing user interaction.
- Implemented auto-activation of the component upon mounting, streamlining the activation process for users.
- Replaced direct axios calls with a centralized apiClient in Register, Login, and Activate components for improved maintainability and consistency.
- Updated backend base URL logic to support different environments, enhancing flexibility in API interactions.
- Added console logging in the authController for better tracking of user registration flow.
- Introduced console logging to track the registration flow, including the generated activation code and confirmation of user creation and email sending.
- This enhancement aids in debugging and monitoring the registration process without altering the existing functionality.
- Eliminated the rollback logic for user creation in the registration process, streamlining the function and reducing complexity.
- Maintained error handling for existing email addresses while ensuring activation emails are sent without exposing user details.
- Deleted outdated test files for activity, API log, authentication, authorization, and club functionalities to streamline the test suite.
- Retained the cleanup script in package.json while removing unnecessary test dependencies, optimizing the development environment.
- Updated lodash from version 4.17.21 to 4.17.23 in package-lock.json for improved performance and security.
- Downgraded sqlite3 from version 5.1.7 to 5.0.2 in both package.json and package-lock.json to maintain compatibility.
- Upgraded @babel/runtime from version 7.28.4 to 7.28.6 in package-lock.json to incorporate the latest features and fixes.
- Added new esbuild dependencies for various architectures (aix, android, darwin, freebsd, linux) to enhance cross-platform support.
- Updated TypeScript definitions for ms and node modules to align with the latest API changes and improve type safety.
- Modified the registerUser and activate functions to return a success status instead of user data, enhancing security by not exposing sensitive information.
- Improved error handling in the registration process, including user cleanup on failure and clearer error messages for email-related issues.
- Ensured that activation emails are sent without returning user details, maintaining user privacy.
- Added email and address fields to the external participant model, allowing for more comprehensive participant information.
- Updated the tournament service and controller to handle the new fields when adding external participants.
- Modified frontend components to include input fields for email and address, improving user experience and data collection.
- Updated localization strings to support the new fields, ensuring clarity in the user interface.