- Introduced `PosDesktopOrderBookingSelectorModal.vue` to streamline booking selection for desktop POS.
- Added `orderBookingDisplay.js` utility for handling booking display and reference value normalization.
- Created unit test `select-vehicle-form-pos.spec.js` to validate booking selection flow and registration matching.
- Implemented `run-playwright-ci-parallel.mjs` script to optimize Playwright CI with parallel testing.
- Updated styles and responsiveness for enhanced booking modal UX.
- Introduced `PosDepartmentStepMobilePopupSelectOrderBooking.vue` for mobile booking selection.
- Refactored vehicle and booking handling in `SelectVehicleFormPOS.vue` with better plate matching, booking persistence, and customer association logic.
- Updated `PosVehicle` object type to include booking matches.
- Enhanced POS transaction history and booking views with improved readability, functionality, and `data-testid` attributes.
- Adjusted `PosPopup.vue` components to support the new booking popup.
- Added `PosOrderRegistrationField.vue` for managing inline registration field inputs with autosave behavior.
- Introduced `useOrderMetadataAutosave.js` composable for seamless value normalization, dirty tracking, and delayed persistence.
- Refactored mobile and desktop POS components to integrate `useOrderMetadataAutosave` for improved field management (e.g., `POSOrderReference.vue`, `PosOrderLicensePlates.vue`).
- Updated e2e tests to cover registration field scenarios, including input normalization and persistence (`pos-mobile-order-flow.spec.js`, `admin-pos-orders.spec.ts`).
- Enhanced styling and responsiveness for registration fields in `pos.css`.
- Replaced repetitive department module URL logic with `buildDepartmentModulePath` utility in `DepartmentModulesDisplay.vue`.
- Enhanced layouts and responsive behavior across components, including `PosDepartmentStep1MobileTransactionHistory.vue` and `DepartmentDailyReport.vue`.
- Removed unused `SuperuserInvoicingLocalStore.vue` and refactored to `SuperuserInvoicingLocalStore.ts`.
- Updated media query handling and card layout adjustments in `DepartmentDailyReport.vue`.
- Added new Playwright configurations (`playwright.prod.config.ts` and `playwright.live.config.ts`) for e2e release workflows.
- Extended e2e and unit test coverage for mobile POS and department modules.
- Introduced employee fixtures in `mobilePos.js` for testing workflows involving employee data.
- Enhanced `PosDepartmentStep1MobileCustomerNotes.vue` with translated labels and data-test attributes.
- Added e2e tests for customer notes popup and translated label validation.
- Improved alignment and responsiveness for `PaginationDisplayGeneralSearchReload.vue` and related e2e tests.
- Updated button logic and styles in `GenericButton.vue` and other mobile POS components for consistent UI behavior.
- Introduced helper functions (`expectHorizontallyCentered`, `expectSameRow`, `expectAboveFixedActions`) for alignment checks in `pos-mobile-order-flow.spec.js`.
- Enhanced e2e tests with layout validations for titles, subtitles, and form inputs.
- Added `reserveSpace` prop and CSS variable handling to `PosDepartmentStepMobileFixedBottomControl.vue` for better spacing control.
- Improved layouts and responsiveness in mobile POS components like `PosDepartmentStepMobile2.vue` and `ScannerInstructions.vue`.
- Introduced `PosDesktopOrderWorkspace.vue` for improved order and customer management.
- Added `PosOrderItemsDefaultTable.vue` with detailed row actions, price tooltips, and order item grouping.
- Enhanced `LicensePlateReg1Input.vue` to preserve customer selection when switching license plates.
- Improved `PosDepartmentStep3.vue` with updated desktop layout using the new POS workspace.
- Added e2e test for customer rules tab to verify dynamic attribute reloading.
- Implemented `departmentDailyReportComplaintCustomers.js` module for handling customer complaint data, including search, normalization, and API integration.
- Added `EdgeGatewayTerminal.vue` for root shell access with session approval, dynamic status handling, and user feedback.
- Developed `mobilePos.js` for simulating mobile POS fixtures and workflows in e2e tests.
- Introduced relevant e2e and unit tests to ensure functionality and error handling across modules.
- Introduced e2e test for "Change Invoice Collection" in `change-invoice-collection.spec.ts`.
- Added unit tests for `CollectedOrderInvoiceOverview.vue` including edit flow for `closed_at`.
- Implemented tests for queue reliability, state handling, and customer actions:
- `CollectedOrderInvoicesQueueHistory.vue`: polling, error handling, richer diagnostics, and retry logic.
- `InvoicingBillingPeriod` views: refresh and queue state handling.
- Enhanced test coverage for Stripe queue functionality and related actions.
- Add `createEmbeddablePreviewUrl` utility to generate blob URLs for attachment previews.
- Introduce `releaseObjectUrl` and `onBeforeUnmount` cleanup to manage and revoke blob URLs.
- Enhance error handling and URL parsing logic for preview link generation in `POSDepartmentProcess`.
- Remove `playwright.config.js` to clean up configuration.
- Add new E2E test suites (`admin-pos-orders`, `admin-module-goals`, `admin-module-pos-mobile-order-flow`) to structure Admin module tests.
- Introduce reusable authentication and data seeding utilities in `fixtures` for streamlined test flows and maintainability.
- Add `originMigration.js` for handling allowed origins, standalone contexts, and redirect routes.
- Create `OutdatedGateway.vue` and `OutdatedInstallation.vue` error views with timer-based redirection and user instructions.
- Update router to include `/outdated-installation` and `/outdated-gateway` paths.
- Implement unit tests for migration utility methods and route guards.
- Remove debug `console.log` statements across multiple components.
- Add unit tests for `createOrderItem` to validate behavior under various conditions (e.g., missing token, invalid order ID).
- Introduce `getAttachmentContent` utility in `PosDepartmentStepMobileAttachment.vue` for streamlined attachment property handling.
- Refactor vehicle wash configuration logic in `VehicleDisplay.vue` with null-safe checks.
- Improve invoice-related logic in `ordersSyncTable.vue` using utility functions for consistent property access.
- Enhance computed properties for customer and product handling in order displays (e.g., `MyOrder.vue`, `ProductBox.vue`).
- Consolidate department lookup logic in `departmentTabs.vue` with safer handling of missing data.
- Add utility functions in `orderItemsTable.vue` for consistent product property access and computation.
- Enhance `useSelfServeLogic.js` with `setSummaryVisibleQuestions` for streamlined question visibility and ordering updates.
- Update logic to retain preview questions when summary data is unavailable.
- Add unit test to validate fallback behavior and preview question handling.
- Prevent duplicate POS orders by introducing `isCreatingOrder` flag in `POSDepartmentProcess.vue`.
- Adjust `PosDepartmentStepMobileButtonNextStep.vue` to reflect button loading state during order creation.
- Locked versions for `axios`, `sweetalert2`, and `vite` to specific releases.
- Updated multiple Babel helper and plugin packages to newer versions for enhanced functionality.
- Upgraded various esbuild packages and enforced Node.js version >=18 requirement.
- Added missing MIT licenses for dependencies in `package-lock.json` for clarity.
- Introduced logic to filter out restricted products and add-ons using new utility methods (`isProductRestricted`, `isAddonRestricted`, `canBuyAdditionalServices`) based on customer attributes.
- Updated relevant POS components to replace unfiltered lists with computed properties for restricted items.
- Enhanced maintainability by centralizing restriction checks in `POSDepartmentProcess.vue`.
- Replaced hardcoded texts in `ActionSettingsWheelButton.vue` and related components with dynamic translations using `useI18n` for improved multilingual consistency.
- Updated `en.json` with new translation keys for buttons, modals, and action labels.
- Consolidated unused translation keys and improved maintainability by centralizing reusable strings.
- Replaced hardcoded text with dynamic translations using `useI18n` or global `i18n` in multiple components and dashboards.
- Localized buttons, placeholders, labels, table headers, error messages, and object metadata, enhancing multilingual support.
- Improved maintainability by introducing and centralizing new translation keys.