Commit Graph

28 Commits

Author SHA1 Message Date
Johan Jongsma b4cbfa08f5 Fix API endpoints to match inou backend
- /api/v1/auth/send (not /api/auth/send-code)
- /api/v1/auth/verify (not /api/auth/verify)
- Check for token in response (not success: true)
2026-02-01 21:11:56 +00:00
Johan Jongsma 56f86ccc7d Fix API client to use proper JSON endpoints
- Changed to /api/auth/send-code and /api/auth/verify
- Properly check content-type is JSON
- Check for success: true in response
- Backend needs these endpoints added
2026-02-01 21:09:38 +00:00
Johan Jongsma 257cc8e802 Simplify biometric enable - user just logged in, no need to verify again 2026-02-01 21:04:27 +00:00
Johan Jongsma 999f9691ae Fix biometric enable - reset auth state first to force prompt 2026-02-01 19:39:28 +00:00
Johan Jongsma 950f2d976a Add dev mode switch for API URL
devMode = true → dev.inou.com
devMode = false → inou.com
2026-02-01 19:15:08 +00:00
Johan Jongsma 81e779f105 Connect to inou backend API, use Sora font
- Added inou_api.dart with real API calls to /send-code and /verify
- Updated auth_service to use real API
- Added http package
- Changed all text to use Sora font (inou brand font)
- Logo uses Sora w800 'i'
2026-02-01 09:10:12 +00:00
Johan Jongsma 101cb0e301 Fix class structure, thicker custom-painted 'i' logo 2026-02-01 09:04:47 +00:00
Johan Jongsma 28b73b8c0d Use CustomPainter for bold 'i' logo 2026-02-01 09:03:31 +00:00
Johan Jongsma a5c9ab4770 Try Poppins Black for bolder 'i' 2026-02-01 09:02:43 +00:00
Johan Jongsma 0d08f90e45 Add google_fonts, use Inter Black for logo 2026-02-01 09:00:37 +00:00
Johan Jongsma bcee39c9d9 Add faux-bold shadows to logo 'i' 2026-02-01 08:59:50 +00:00
Johan Jongsma 2d4decaea6 Make logo 'i' extra bold (w900, sans-serif-black) 2026-02-01 08:57:54 +00:00
Johan Jongsma 35a3ad5676 Update login screen copy and logo style
- Logo: extra bold 'i' (w800) in tighter rounded square
- Changed 'Sign in to your inou account' → 'Enter your email to continue'
- Changed 'Welcome' → 'Welcome to inou'
- Changed 'Sign in with Biometrics' → 'Use Biometrics'
2026-02-01 08:57:20 +00:00
Johan Jongsma a96d92c68e Change login to email + 6-digit OTP flow
- Removed password field
- Enter email → Continue → Enter 6-digit code
- Resend code / Change email options
- Demo code: 123456 (backend integration TODO)
2026-02-01 08:54:40 +00:00
Johan Jongsma d44b3f6a0e Add login screen with biometric setup flow
- Created AuthService for managing login state
- Created LoginScreen with email/password form
- Auto-prompts to enable biometric after first login
- Integrated login flow into main.dart
- Shows splash screen during initialization
- AuthGate wraps main app for biometric re-auth
2026-02-01 08:50:07 +00:00
Johan Jongsma 3e90415dcd fix: CardTheme -> CardThemeData, add secondaryColor for compatibility 2026-02-01 08:38:40 +00:00
Johan Jongsma 52db9d7ea6 feat: Update theme to match inou styleguide - light theme with amber accent 2026-02-01 08:38:12 +00:00
Johan Jongsma a6aca36522 Temporarily disable AuthGate for testing 2026-02-01 08:33:59 +00:00
Johan Jongsma 78e7810a7d Fix: Remove problematic height calculation and GlobalKey 2026-02-01 08:31:50 +00:00
Johan Jongsma 0c8848af1b Fix: Widget tree stability - move screen creation to build method 2026-02-01 08:30:02 +00:00
Johan Jongsma 079cbb07cf Fix: resolve dependency conflicts and align OcrResult API 2026-01-31 19:49:39 +00:00
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