- Implement worker-only database access to eliminate double migrations
- Add parameter serialization in usePlatformService to prevent Capacitor "object could not be cloned" errors
- Fix infinite logging loop with circuit breaker in databaseUtil
- Use dynamic imports in WebPlatformService to prevent worker thread errors
- Add higher-level database methods (getContacts, getSettings) to composable
- Eliminate Vue Proxy objects through JSON serialization and Object.freeze protection
Resolves Proxy(Array) serialization failures and worker context conflicts across Web/Capacitor/Electron platforms.
- Fixed TypeScript configuration in electron/tsconfig.json:
* Added skipLibCheck: true to resolve node_modules type conflicts
* Added allowSyntheticDefaultImports for better module compatibility
* Disabled strict mode to avoid unnecessary type errors
* Updated TypeScript version to ~5.2.2 for consistency
- Resolved SQLite plugin configuration issue:
* Changed plugin key from 'SQLite' to 'CapacitorSQLite' in capacitor.config.json
* This fixes 'Cannot read properties of undefined (reading electronIsEncryption)' error
* All 45+ SQLite plugin methods now properly registered and available
- Added Electron development scripts:
* electron-dev.sh for streamlined development workflow
* setup-electron.sh for initial Electron environment setup
- Electron app now starts successfully without TypeScript compilation errors
- SQLite plugin fully functional with proper configuration access
Status: Electron platform now working for TimeSafari development
- Add electron platform section to capacitor.config.json
- Configure deep linking with timesafari:// scheme
- Set up build options for macOS, Windows, and Linux
- Configure output directory and file inclusion
- Add platform-specific build targets (DMG, NSIS, AppImage)
- Support both x64 and arm64 architectures for macOS
- Set appropriate app categories for each platform
This enables building TimeSafari as a native desktop application
using Capacitor's Electron platform while maintaining existing
mobile and web functionality.
- Separate scanner views for web and mobile platforms: different libraries, similar layouts
- Mobile: QR code overlaid on top of full-screen camera view
- Mobile: added framing box + instruction text
- Mobile: increased debounce time to compensate for behavior of MLkit scanner
- Web: removed Capacitor-related code and platform-specific conditions
- Web: adjusted max-size of QR code and camera view to better fit newer iOS device screens
- Web + mobile: camera view remains active when a QR scan is triggered
- 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.