Commit Graph

7 Commits

Author SHA1 Message Date
Johan Jongsma 90d50aa848 feat(scan): Barcode-first scanning strategy
- Add google_mlkit_barcode_scanning dependency
- Scan priority: Barcode → OCR text → Nothing found
- Support UPC-A/E, EAN-8/13, QR, DataMatrix, PDF417, Code128/39
- BarcodeData class with product code detection and NDC hints
- ScanResult with type indicator (barcode|text|empty)
- Updated capture screen with barcode-specific UI:
  - Green overlay for barcodes, blue for text
  - Product code badge for UPC/EAN barcodes
  - Format-specific result display
- Backward compatible legacy API (extractText, getTextBlocks)
2026-01-31 19:48:38 +00:00
Johan Jongsma b7f079d9c6 Add run.sh script for easy dev workflow 2026-01-31 19:47:18 +00:00
Johan Jongsma 3979086c10 feat(input): Wire up camera and OCR scanner buttons 2026-01-31 19:44:42 +00:00
Johan Jongsma b92ac20c0b feat: Add biometric authentication
- Create BiometricService with local_auth integration
  - Check biometric availability (Face ID, Touch ID, fingerprint)
  - Authenticate with fallback to PIN
  - Session state: don't re-prompt within session
  - Configurable lock policies: always, after 5 min inactive, never

- Create AuthGate widget that wraps the app
  - Shows biometric prompt on app launch
  - Handles app resume from background
  - Activity tracking for inactivity timeout
  - Graceful error handling with user-friendly messages

- Update SettingsScreen with biometric configuration
  - Enable/disable toggle with verification
  - Lock timing policy selection
  - Edge case handling: not enrolled, not available

- Store preferences in shared_preferences
- Handle multiple failures with attempt counter
2026-01-31 19:44:18 +00:00
Johan Jongsma e8103f1ee9 feat: Add voice input service with speech-to-text
Voice Service (lib/services/voice_service.dart):
- speech_to_text package integration
- Start/stop listening with streaming partial results
- Language selection (en_US default, configurable)
- Error handling (no mic, permission denied, timeout)
- Sound level monitoring for visualizations
- Continuous dictation mode support
- Stream-based reactive API for status/transcript/levels

Voice Input Widget (lib/features/input/voice_input_widget.dart):
- Animated mic button with pulse effect while listening
- Real-time transcript display with copy button
- Waveform visualization responding to sound levels
- Tap to start/stop interactions
- Haptic feedback on interactions
- Compact mode for inline use
- Error display with auto-dismiss

Platform permissions:
- Android: RECORD_AUDIO permission
- iOS: NSMicrophoneUsageDescription, NSSpeechRecognitionUsageDescription

Input screen integration with voice toggle and continuous mode
2026-01-31 19:44:11 +00:00
Johan Jongsma 9cc40d0765 feat(webview): Add full WebView integration for inou.com/app
- Create InouWebView widget with:
  - JavaScript bridge for native ↔ web communication
  - Auth cookie/token handling
  - Pull-to-refresh support
  - Loading indicator with progress
  - Offline/error state handling with retry

- Enhance WebViewScreen with:
  - Full-screen WebView with optional app bar
  - Back button handling (WebView history first, then app nav)
  - Share functionality (copies to clipboard)
  - Menu actions (copy URL, open in browser)
  - Haptic feedback support via JS bridge

- Add deep link handling in main.dart:
  - inou.com/app/* URLs open in WebView
  - Navigator route generation for deep links

JS Bridge API:
- window.inouNativeBridge.postMessage(action, data)
- window.inouNativeBridge.share(title, text, url)
- window.inouNativeBridge.haptic(type)
- window.inouNativeBridge.setToken(token)
- window.inouNativeBridge.logout()
2026-01-31 19:42:43 +00:00
Johan Jongsma 62e39ab736 Initial inou mobile app setup
- Flutter project created with org com.inou
- Folder structure: core, features (input, webview, settings), services
- Dependencies: webview_flutter, camera, google_mlkit_text_recognition,
  speech_to_text, local_auth, permission_handler
- Basic app scaffold with bottom navigation (Home, Input, Settings)
- Android minSdk set to 24
- iOS deployment target set to 14.0
- Core: config, theme (dark mode), auth service
- Services: OCR, voice, biometrics (placeholder implementations)
- Features: WebView to inou.com/app, fancy input screen, settings
2026-01-31 19:39:33 +00:00