Iran VPS cannot reach api.telegram.org, and sourcing backend .env broke
on BOOKING_EXPIRY_CRON globs. Extract TELEGRAM_* safely over SSH and
notify from the foreign act_runner instead.
Updated the Vitest configuration to increase test and hook timeouts to 20 seconds, addressing flaky tests under pre-push load. Additionally, improved test cleanup procedures across multiple test files by ensuring mocks are cleared after each test, enhancing test reliability and maintainability.
Refactored the axios functional tests by removing unnecessary asynchronous imports and simplifying the setup in the `beforeEach` hook. This change enhances the readability and maintainability of the test code, ensuring it aligns with the project's coding standards.
Updated the alert message in the UserEditModal component to improve code readability by formatting the function call across multiple lines. This change enhances maintainability and aligns with the project's coding standards.
Introduced new API endpoints for managing in-app notifications. The `/api/v1/notifications/me` endpoint retrieves a paginated list of notifications for the authenticated user, while the `/api/v1/notifications/me/unread-count` endpoint returns the count of unread notifications. Enhanced the OpenAPI documentation to reflect these changes, including detailed parameter descriptions and response schemas for better clarity and usability.
Enhanced various components to utilize the alert modal for user confirmations before executing critical actions. This includes marking messages as read, saving notification rules, restoring reviews, sending replies, changing ticket statuses, and managing event commissions. The integration improves user experience by ensuring actions are intentional and provides clear feedback on the outcomes.
Updated the OpenAPI specification to format the 'tags' property as an array on multiple endpoints, ensuring consistent styling across the documentation. Additionally, simplified JSX return statements in the BookingsPage and AdminEventBookingsTab components for improved readability.
Enhanced the bookings page and admin event bookings tab by adding a new column for 'cancellationReason'. This column displays the reason for cancellations when applicable, improving the visibility of booking statuses. Additionally, removed the 'غایب' (no-show) insight stat from the event overview tab for a cleaner presentation of event insights.
Updated the padding in the completed status section of the Settlements page for better spacing. Additionally, streamlined the consumer booking action bar styles by removing redundant padding properties.
Added functionality to synchronize access token refresh across multiple tabs using the `navigator.locks` API. This prevents race conditions when refreshing tokens, ensuring that a newer token published by another tab is reused instead of rotating the refresh token unnecessarily. Introduced a new method `refreshAccessTokenAcrossTabs` and updated the `getOrRefreshAccessToken` function to utilize this new method. Enhanced error handling for 401 responses to retry with the latest stored token when applicable.
Cleaned up the pnpm-lock.yaml file by removing outdated and unused bindings for '@oxc-parser' packages, streamlining the dependency management and reducing potential bloat in the project.
Introduced a new optional query parameter `filters[readStatus]` in the openapi.json file to allow filtering by read state (read or unread). This enhancement improves the API's flexibility in managing notification states.
Added a new configuration file `.oxlintrc.json` to incorporate Oxlint into the project, allowing for improved linting of TypeScript and React code. Updated the linting scripts in `package.json` to run Oxlint alongside ESLint, ensuring a comprehensive linting process. This change enhances code quality and consistency across the codebase.
Updated the formatting of tags in the openapi.json file to use array notation consistently across all endpoints. This change improves readability and maintains a uniform structure in the API documentation.
- Introduced a new PATCH endpoint `/api/v1/notifications/me/read-all` to mark all unread notifications as read for the authenticated user.
- Added a new GET endpoint `/api/v1/events/{eventId}/faqs/page` for retrieving paginated FAQs related to a specific event, with support for pagination, sorting, and filtering.
- Updated the existing GET endpoint `/api/v1/events/{eventId}/guest-list-links/invited-guests/page` to include pagination parameters.
- Updated `TextEditor` component to use consistent class names for dropdown triggers, enhancing maintainability.
- Refactored `Dropdown` component to resolve trigger properties more reliably, ensuring proper rendering of button-like triggers.
- Modified `UserDropdown` to utilize `buttonVariants` for styling the dropdown trigger, improving visual consistency across components.
- Deleted `discovery.ts` for unused constants related to discovery page limits and sorting.
- Removed `unwrapService.ts`, a utility function for handling service results, as it is no longer needed.
- Replaced `LIST_PUBLIC_CATEGORIES` with `LIST_ADMIN_CATEGORIES_FLAT` in `ArticleFormModal.tsx`.
- Removed the "Add Event" button from the dashboard page.
- Simplified the `EventsPage` by removing the button and adjusting the layout.
- Cleaned up the `AdminEventEditPage` by removing unnecessary props.
- Deleted unused layout and page files related to event creation.
- Updated `AdminAuthContent` to use `useAdminCitiesQuery` instead of `useDiscoveryCitiesQuery`.
- Refactored `EventGuestListAccessPanel` to remove the `accessMode` prop and adjust API calls accordingly.
- Removed several unused components and tests related to event creation, enhancing project maintainability.