Commit Graph

5 Commits

Author SHA1 Message Date
Johan Jongsma 079cbb07cf Fix: resolve dependency conflicts and align OcrResult API 2026-01-31 19:49:39 +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 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