- Reorganize QR scanner to follow platform service pattern
- Move QR scanner implementations to services/platforms directory
- Update QRScannerFactory to use PlatformServiceFactory pattern
- Consolidate common QR scanner interfaces with platform services
- Add proper error handling and logging across implementations
- Ensure consistent cleanup and lifecycle management
- Add PyWebView implementation placeholder for desktop
- Update Capacitor and Web implementations to match platform patterns
- Enhanced JWT extraction and validation in getContactJwtFromJwtUrl
- Added robust error handling in decodeEndorserJwt with fallback manual decoding
- Improved QR code scanning with better type safety and error handling
- Refactored ContactQRScanShowView component for better maintainability
- Added comprehensive logging throughout the scanning process
- Improved cleanup handling for camera and listeners
- Added proper TypeScript interfaces for scan results
- Enhanced error messages for better user feedback
Security:
- Added validation for JWT format and required fields
- Improved error handling for malformed JWTs
- Added input validation for QR code URLs
- Redacted sensitive data in logs
BREAKING CHANGE: JWT handling now supports multiple URL patterns and has stricter validation
- Fix scanner listener initialization in class component
* Replace Vue ref with direct class property for scanListener
* Remove unnecessary .value accesses throughout the code
- Enhance error handling and cleanup
* Add proper cleanup on scanner errors
* Add cleanup in stopScanning method
* Improve error message formatting
* Add error handling in handleScanResult
- Improve state management
* Move state updates into try/catch blocks
* Add finally block to reset state after scan processing
* Better handling of processing states during scanning
- Add comprehensive logging
* Log each step of scanner initialization
* Add detailed error logging
* Format object logs to prevent [object Object] output
- Code style improvements
* Fix indentation throughout the file
* Consistent error handling patterns
* Better code organization and readability
- Remove legacy QR code processing with web workers
- Simplify camera permission handling and initialization
- Improve error handling and state management
- Update to use MLKit Barcode Scanner API consistently
- Fix type safety issues with error handling
- Remove unused camera and worker-related code
- Consolidate scanning logic into cleaner methods
The changes focus on using the native MLKit scanner capabilities
instead of the previous web worker implementation, resulting in
more reliable QR code scanning and better error handling.
- Move QR code processing to Web Worker for better performance
- Add comprehensive camera state tracking and logging
- Implement proper app lifecycle management
- Add image size limits and optimization (max 1024px)
- Add proper cleanup of resources (worker, timeouts, listeners)
- Improve error handling with detailed error messages
- Add TypeScript interfaces for worker messages and QR code results
- Update Vite config to properly handle Capacitor builds
Remove duplicate guidelines about accessibility and Lighthouse scoring
from README-context.md, as these are already covered in the Vue
Component Structure section.
- Add detailed explanations for SOLID principles
- Expand DRY development guidelines with implementation examples
- Add Law of Demeter and Composition over Inheritance principles
- Include Interface Segregation and Fail Fast principles
- Add Principle of Least Astonishment and Information Hiding
- Document Single Source of Truth and Principle of Least Privilege
- Add CI/CD principles and best practices
- Maintain existing accessibility and performance requirements
This update provides comprehensive development guidelines for the Time Safari project,
including practical examples and TypeScript integration.
- Refactor writeFile method to properly handle Android Storage Access Framework (SAF) URIs
- Update path construction for Android to use Download directory with correct permissions
- Enhance error handling and logging throughout file operations
- Add detailed logging for debugging file system operations
- Fix permission checking logic to handle "File does not exist" case correctly
- Improve error messages and stack traces in logs
- Add timestamp to all log entries for better debugging
- Use proper directory types (ExternalStorage for Android, Documents for iOS)
- Add UTF-8 encoding specification for file writes
This is a work in progress as we're still seeing permission issues with Android file writing.
- Add @capawesome/capacitor-file-picker dependency
- Update DataExportSection UI text to reflect new file picker behavior
- Implement file picker in CapacitorPlatformService
- Add debug logging for path handling
- Fix logger to show messages in Capacitor environment
WIP: File path handling still needs refinement
- Add PlatformCapabilities interface to define available features
- Remove isWeb(), isCapacitor(), isElectron(), isPyWebView() methods
- Update platform services to implement getCapabilities()
- Refactor DataExportSection to use capability checks instead of platform checks
- Improve platform abstraction and separation of concerns
- Make platform-specific logic more maintainable and extensible
This change decouples components from specific platform implementations,
making the codebase more maintainable and easier to extend with new platforms.
- Update react-native from 0.78.2 to 0.79.0
- Update metro and related packages from 0.81.4 to 0.82.1
- Update @react-native/virtualized-lists to 0.79.0
- Update @react-native/normalize-colors to 0.79.0
- Update @react-native/codegen to 0.79.0
- Remove unused dependencies and their related code
- Update debug configuration to use v4.4.0 instead of v2.6.9
- Update sudo-prompt to 9.1.1
- Update synckit to 0.11.3
- Gradle updated from 8.9.0 to 8.9.1
This update improves build stability and removes deprecated dependencies.
Integrate PlatformServiceFactory to provide platform-specific data export:
- Add platform-specific file saving for Capacitor and other platforms
- Use web download mechanism only in web platform
- Conditionally show platform-specific save instructions
- Add iOS/Android detection for targeted guidance
- Update success messages based on platform context
- Improve download link visibility logic for web platform
This change ensures proper file handling across web, mobile, and desktop
platforms while maintaining a consistent user experience.
- Add proper unknown type for error handling in PhotoDialog
- Remove any type in favor of unknown for better type safety
- Fix error message access with type guards
- Add detailed error logging for image upload failures
- Upgrade Gradle to 8.11.1 and Android build tools to 8.9.0
- Add Capacitor camera and filesystem modules to Android build
- Add @capacitor/camera@6.0.0 for cross-platform photo capture
- Add @capacitor/filesystem@6.0.0 for file system operations
- Maintain compatibility with existing Capacitor core v6.2.1
These plugins enable native camera access and file system operations
for the Capacitor platform implementation.
- Replace direct camera library with platform-agnostic `PlatformService`
- Move platform-specific image processing logic to respective platform implementations
- Introduce `ImageResult` interface for consistent image handling across platforms
- Add support for native camera and image picker across all platforms
- Simplify `PhotoDialog` by removing platform-specific logic
- Maintain existing cropping and upload functionality
- Improve error handling and logging throughout
- Clean up UI for better user experience
- Add comprehensive documentation for usage and architecture
**BREAKING CHANGE:** Removes direct camera library dependency in favor of `PlatformService`
This change improves separation of concerns, enhances maintainability, and standardizes cross-platform image handling.
- Add useDefineForClassFields for class field initialization
- Remove test-playwright from includes
- Add tsconfig.node.json reference
- Remove redundant node_modules exclude
- Add useDefineForClassFields for class field initialization
- Remove test-playwright from includes
- Add tsconfig.node.json reference
- Remove redundant node_modules exclude
- Remove duplicate class attributes in ProjectsView and ClaimView
- Fix attribute ordering for better readability
- Replace this references with direct variable names in templates
- Update icon-size prop to use kebab-case
- Remove unnecessary comments and improve formatting
- Fix import organization in ProjectsView
This commit resolves Vue template errors and improves code consistency.