diet-guard/app/pubspec.yaml

34 lines
679 B
YAML
Raw Permalink Normal View History

name: diet_guard_app
description: "Companion phone app for diet_guard: log meals on the go."
publish_to: 'none'
version: 1.0.0+1
environment:
sdk: ^3.12.2
dependencies:
flutter:
sdk: flutter
Add OAuth device flow, background notifications, and fix AGP9 release crash (Milestones 3–4) M3 – GitHub OAuth device flow: replace PAT-paste with a guided "Connect GitHub" button that runs the device-code flow; tapping with no client id now opens a setup dialog (instructions + inline paste field) rather than a buried inline hint. Bakes in the app's own OAuth App client id so fresh installs work with zero manual config. Auto-syncs immediately after connect. Verified end-to-end on the real phone: OAuth flow → token saved → PC's 48-entry log merged in (confirmed via food-bank vs manual source labels in History). M4 – Background meal-slot notifications: WorkManager periodic task (15 min floor) checks for overdue slots and posts/cancels notifications via flutter_local_notifications. New permissions: POST_NOTIFICATIONS, WAKE_LOCK, RECEIVE_BOOT_COMPLETED, REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, INTERNET (was missing — latent sync bug). "Disable battery optimization" button in Settings. Verified on real phone: WorkManager registered, forced run posted a real notification ("Meal not logged / You haven't logged your 16:00 meal yet."), isolated to background path (only caller is the WorkManager dispatcher, not any foreground lifecycle hook). AGP9 release crash fix: AGP 9 defaults isMinifyEnabled/isShrinkResources to true for release even with no proguard config; R8 stripped WorkDatabase_Impl's reflection-only constructor, crashing every launch with NoSuchMethodException. Explicitly disabled both flags in build.gradle.kts. Verified via dexdump (constructor present) and on-device launch (no crash). Proper R8 keep rules are the long-term fix; tracked. 177 tests, flutter analyze clean. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SWPUBzE24Ls9i9GMRwXnnn
2026-06-25 17:29:23 +02:00
flutter_local_notifications: ^22.0.1
flutter_secure_storage: ^10.3.1
http: ^1.6.0
image_picker: ^1.1.2
path: ^1.9.1
path_provider: ^2.1.5
Add OAuth device flow, background notifications, and fix AGP9 release crash (Milestones 3–4) M3 – GitHub OAuth device flow: replace PAT-paste with a guided "Connect GitHub" button that runs the device-code flow; tapping with no client id now opens a setup dialog (instructions + inline paste field) rather than a buried inline hint. Bakes in the app's own OAuth App client id so fresh installs work with zero manual config. Auto-syncs immediately after connect. Verified end-to-end on the real phone: OAuth flow → token saved → PC's 48-entry log merged in (confirmed via food-bank vs manual source labels in History). M4 – Background meal-slot notifications: WorkManager periodic task (15 min floor) checks for overdue slots and posts/cancels notifications via flutter_local_notifications. New permissions: POST_NOTIFICATIONS, WAKE_LOCK, RECEIVE_BOOT_COMPLETED, REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, INTERNET (was missing — latent sync bug). "Disable battery optimization" button in Settings. Verified on real phone: WorkManager registered, forced run posted a real notification ("Meal not logged / You haven't logged your 16:00 meal yet."), isolated to background path (only caller is the WorkManager dispatcher, not any foreground lifecycle hook). AGP9 release crash fix: AGP 9 defaults isMinifyEnabled/isShrinkResources to true for release even with no proguard config; R8 stripped WorkDatabase_Impl's reflection-only constructor, crashing every launch with NoSuchMethodException. Explicitly disabled both flags in build.gradle.kts. Verified via dexdump (constructor present) and on-device launch (no crash). Proper R8 keep rules are the long-term fix; tracked. 177 tests, flutter analyze clean. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SWPUBzE24Ls9i9GMRwXnnn
2026-06-25 17:29:23 +02:00
permission_handler: ^12.0.3
shared_preferences: ^2.5.5
Add OAuth device flow, background notifications, and fix AGP9 release crash (Milestones 3–4) M3 – GitHub OAuth device flow: replace PAT-paste with a guided "Connect GitHub" button that runs the device-code flow; tapping with no client id now opens a setup dialog (instructions + inline paste field) rather than a buried inline hint. Bakes in the app's own OAuth App client id so fresh installs work with zero manual config. Auto-syncs immediately after connect. Verified end-to-end on the real phone: OAuth flow → token saved → PC's 48-entry log merged in (confirmed via food-bank vs manual source labels in History). M4 – Background meal-slot notifications: WorkManager periodic task (15 min floor) checks for overdue slots and posts/cancels notifications via flutter_local_notifications. New permissions: POST_NOTIFICATIONS, WAKE_LOCK, RECEIVE_BOOT_COMPLETED, REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, INTERNET (was missing — latent sync bug). "Disable battery optimization" button in Settings. Verified on real phone: WorkManager registered, forced run posted a real notification ("Meal not logged / You haven't logged your 16:00 meal yet."), isolated to background path (only caller is the WorkManager dispatcher, not any foreground lifecycle hook). AGP9 release crash fix: AGP 9 defaults isMinifyEnabled/isShrinkResources to true for release even with no proguard config; R8 stripped WorkDatabase_Impl's reflection-only constructor, crashing every launch with NoSuchMethodException. Explicitly disabled both flags in build.gradle.kts. Verified via dexdump (constructor present) and on-device launch (no crash). Proper R8 keep rules are the long-term fix; tracked. 177 tests, flutter analyze clean. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SWPUBzE24Ls9i9GMRwXnnn
2026-06-25 17:29:23 +02:00
url_launcher: ^6.3.2
uuid: ^4.5.3
Add OAuth device flow, background notifications, and fix AGP9 release crash (Milestones 3–4) M3 – GitHub OAuth device flow: replace PAT-paste with a guided "Connect GitHub" button that runs the device-code flow; tapping with no client id now opens a setup dialog (instructions + inline paste field) rather than a buried inline hint. Bakes in the app's own OAuth App client id so fresh installs work with zero manual config. Auto-syncs immediately after connect. Verified end-to-end on the real phone: OAuth flow → token saved → PC's 48-entry log merged in (confirmed via food-bank vs manual source labels in History). M4 – Background meal-slot notifications: WorkManager periodic task (15 min floor) checks for overdue slots and posts/cancels notifications via flutter_local_notifications. New permissions: POST_NOTIFICATIONS, WAKE_LOCK, RECEIVE_BOOT_COMPLETED, REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, INTERNET (was missing — latent sync bug). "Disable battery optimization" button in Settings. Verified on real phone: WorkManager registered, forced run posted a real notification ("Meal not logged / You haven't logged your 16:00 meal yet."), isolated to background path (only caller is the WorkManager dispatcher, not any foreground lifecycle hook). AGP9 release crash fix: AGP 9 defaults isMinifyEnabled/isShrinkResources to true for release even with no proguard config; R8 stripped WorkDatabase_Impl's reflection-only constructor, crashing every launch with NoSuchMethodException. Explicitly disabled both flags in build.gradle.kts. Verified via dexdump (constructor present) and on-device launch (no crash). Proper R8 keep rules are the long-term fix; tracked. 177 tests, flutter analyze clean. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SWPUBzE24Ls9i9GMRwXnnn
2026-06-25 17:29:23 +02:00
workmanager: ^0.9.0+3
dev_dependencies:
flutter_test:
sdk: flutter
image_picker_platform_interface: ^2.10.0
Add OAuth device flow, background notifications, and fix AGP9 release crash (Milestones 3–4) M3 – GitHub OAuth device flow: replace PAT-paste with a guided "Connect GitHub" button that runs the device-code flow; tapping with no client id now opens a setup dialog (instructions + inline paste field) rather than a buried inline hint. Bakes in the app's own OAuth App client id so fresh installs work with zero manual config. Auto-syncs immediately after connect. Verified end-to-end on the real phone: OAuth flow → token saved → PC's 48-entry log merged in (confirmed via food-bank vs manual source labels in History). M4 – Background meal-slot notifications: WorkManager periodic task (15 min floor) checks for overdue slots and posts/cancels notifications via flutter_local_notifications. New permissions: POST_NOTIFICATIONS, WAKE_LOCK, RECEIVE_BOOT_COMPLETED, REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, INTERNET (was missing — latent sync bug). "Disable battery optimization" button in Settings. Verified on real phone: WorkManager registered, forced run posted a real notification ("Meal not logged / You haven't logged your 16:00 meal yet."), isolated to background path (only caller is the WorkManager dispatcher, not any foreground lifecycle hook). AGP9 release crash fix: AGP 9 defaults isMinifyEnabled/isShrinkResources to true for release even with no proguard config; R8 stripped WorkDatabase_Impl's reflection-only constructor, crashing every launch with NoSuchMethodException. Explicitly disabled both flags in build.gradle.kts. Verified via dexdump (constructor present) and on-device launch (no crash). Proper R8 keep rules are the long-term fix; tracked. 177 tests, flutter analyze clean. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SWPUBzE24Ls9i9GMRwXnnn
2026-06-25 17:29:23 +02:00
url_launcher_platform_interface: ^2.3.2
very_good_analysis: ^10.2.0
flutter:
uses-material-design: true