- Change base image from node:22-alpine to node:22-alpine3.20
- Resolves package installation issues with Alpine 3.21 repositories
- Ensures stable access to build dependencies (python3, gcc, etc.)
This change fixes the Docker build process by using a more stable
version of Alpine Linux that has reliable package repositories.
- Move type definitions from src/types/ to src/interfaces/ for better organization
- Enhance deep linking type system documentation with detailed examples
- Update package dependencies to latest versions
- Improve code organization in README.md
- Fix formatting in WebPlatformService.ts
This change consolidates all type definitions into the interfaces folder,
improves type safety documentation, and updates dependencies for better
maintainability. The deep linking system now has clearer documentation
about its type system and validation approach.
Breaking: Removes src/types/ directory in favor of src/interfaces/
Add detailed documentation for camera switching functionality across web and mobile platforms:
- Add camera management interfaces to QRScannerService
- Document MLKit Barcode Scanner configuration for Capacitor
- Add platform-specific implementations for iOS and Android
- Include camera state management and error handling
- Add performance optimization guidelines
- Document testing requirements and scenarios
Key additions:
- Camera switching implementation for both platforms
- Platform-specific considerations (iOS/Android)
- Battery and memory optimization strategies
- Comprehensive testing guidelines
- Error handling and state management
- Security and permission considerations
This update provides a complete reference for implementing robust
camera switching functionality in the QR code scanner.
- Format Vue template attributes and event handlers for better readability
- Reorganize component props and event bindings
- Improve error handling and state management in QR scanner
- Add proper aria labels and accessibility attributes
- Refactor camera state handling in WebInlineQRScanner
- Clean up promise handling in WebPlatformService
- Standardize string quotes to double quotes
- Improve component structure and indentation
No functional changes, purely code style and maintainability improvements.
- Move src/lib/capacitor to src/libs/capacitor
- Move src/lib/fontawesome.ts to src/libs/fontawesome.ts
- Update import paths in main.capacitor.ts and main.common.ts
- Remove empty src/lib directory
This change standardizes the project structure by using the 'libs'
directory consistently throughout the codebase.
- Update capacitor.config.json:
- Change appId from com.brownspank.timesafari to app.timesafari
- Add server configuration with cleartext enabled
- Add plugins configuration for App URL handling
- Update script documentation paths:
- Change ./openssl_signing_console.sh to /scripts/openssl_signing_console.sh
- Change ./openssl_signing_console.rst to /doc/openssl_signing_console.rst
This change standardizes the app identifier and adds necessary
capacitor configurations for development, while also fixing script
documentation paths to use absolute references.
Merge multiple QR code documentation files into a single comprehensive guide
that accurately reflects the current implementation. The consolidated guide:
- Combines information from qr-code-implementation-guide.mdc,
qr-code-handling-rule.mdc, and camera-implementation.md
- Clarifies the relationship between ContactQRScanView and ContactQRScanShowView
- Streamlines build configuration documentation
- Adds detailed sections on error handling, security, and best practices
- Improves organization and readability of implementation details
- Removes redundant information while preserving critical details
This change improves documentation maintainability and provides a single
source of truth for QR code implementation details.
- Add CameraState type and CameraStateListener interface for standardized state handling
- Implement camera state tracking in WebInlineQRScanner:
- Add state management properties and methods
- Update state transitions during camera operations
- Add proper error state handling for different scenarios
- Enhance QR scanner UI with improved state feedback:
- Add color-coded status indicators
- Implement state-specific messages and notifications
- Add user-friendly error notifications for common issues
- Improve error handling with specific states for:
- Camera in use by another application
- Permission denied
- Camera not found
- General errors
This change improves the user experience by providing clear visual
feedback about the camera's state and better error handling with
actionable notifications.
- Remove redundant Advanced heading from advanced settings section\n- Make clickable text more descriptive (Show/Hide Advanced Settings)\n- Add cursor-pointer class for better UX\n- Make section heading screen-reader only for accessibility
- Add ARIA annotations and roles to AccountViewView for better screen reader support
- Add role="tooltip" to API server description
- Improve input control accessibility with proper ARIA attributes
- Add descriptive labels and aria-labels for interactive elements
- Create comprehensive README.md for Playwright test suite
- Document test structure and organization
- Add setup instructions and prerequisites
- Include troubleshooting guide and contribution guidelines
- Link to related documentation
This change improves accessibility compliance and makes the test suite
more maintainable for contributors.
- Updated ImageMethodDialog.vue to accept an isRegistered prop and show "Register to Upload a Photo" message instead of upload UI when not registered.
- Updated AccountViewView.vue to pass isRegistered to ImageMethodDialog and replace all profile photo add/upload buttons with the same message for unregistered users.
- Ensures consistent UX and prevents unregistered users from accessing any photo upload features.
- Updated WebPlatformService.takePicture() to use getUserMedia for webcam capture on desktop browsers, providing a live video preview and capture button in an overlay.
- Retained file input with capture attribute for mobile browsers and as a fallback if webcam access fails.
- Ensured interface and factory pattern compatibility; no changes required in PhotoDialog.vue or PlatformServiceFactory.
- Added a stub for writeAndShareFile to satisfy the PlatformService interface on web.
- Removed QR code border
- Changed QR code size to eliminate whitespace baked into image
- Removed scanning frame
- Removed camera selector button
- Restyled camera stop buttons in both web and Capacitor for consistency
- Added iOS safe area to Capacitor camera overlay
Dynamic padding to clear certain iOS UI elements such as the notch, dynamic island and gesture bar, to ensure they don't overlap with our own UI elements.
- Add jsQR library for QR code detection and scanning
- Implement WebInlineQRScanner class with comprehensive camera handling
- Add detailed logging throughout scanner lifecycle
- Include error handling and cleanup procedures
- Add blur detection for QR codes
- Implement FPS throttling for performance optimization
- Add device compatibility checks and permission handling
The scanner now provides:
- Camera stream management
- QR code detection with blur prevention
- Performance optimized scanning (15 FPS target)
- Detailed logging for debugging
- Proper cleanup of resources
- Add proper type annotation for onDetect result parameter
- Fix indentation and line wrapping in template
- Remove unused WebInlineQRScanner import
- Clean up button attribute ordering
- Fix whitespace and formatting issues
- Remove unused empty divs