Improve build and testing configuration
Updated Gradle build scripts to enable Android resource inclusion in unit tests and optimize release builds with resource shrinking and minification.
Enhance activity launch behavior
Modified the main activity's launch mode to 'singleTop' and added 'adjustResize' to windowSoftInputMode for smoother keyboard handling.
Refine AI allowance state management
Improved the AiAllowanceStore by simplifying state handling and enhancing the decision logic for allowance requests, including better error code management for unresolved costs.
Streamline AI plan state and background work
Updated AiPlanState to use the refined AiAllowanceStore decision logic and integrated BackgroundClassificationWorker for improved background analysis runs.
Improve meal planning and stack preservation
Refactored AutoMergePlannerOptimizer to use meal IDs instead of stack IDs for planning and preservation, ensuring meals are planned together.
Enhance background classification and meal analysis
Overhauled BackgroundClassificationWorker for more robust media store syncing, improved AI analysis integration, and refined ingredient-aware auto-merging logic.
Optimize background monitoring and classification scheduling
Refined BackgroundMonitoringCoordinator to use a unique work name for classification refreshes, ensuring sequential execution and improved input data handling for retries.
Improve UI and data handling for calorie tracking
Enhanced CalorieScreen with a new Ledger system for better daily data aggregation, refined UI elements for meal display, and improved image preview and dialog interactions.
Refactor calorie timeline data models
Introduced new data models like Ledger, DayLedger, and Meal to streamline calorie tracking data representation and improve UI logic.
Streamline calorie view model and meal management
Refactored CalorieViewModel to integrate new Meal and Ledger models, improve background analysis management, and enhance image handling.
Implement daily status resolution logic
Introduced DailyStatusProvider to resolve daily status suggestions, integrating caching, allowance checks, and AI generation for personalized feedback.
Clarify fitness extra calories calculation
Updated the documentation for FitnessExtraCaloriesCalculator to accurately reflect its purpose in calculating extra calories burned beyond the daily budget.
Enhance food evaluator dialog and meal summary
Improved the MenuEvaluatorDialog by integrating the new DayLedger for accurate daily data and refining the meal summary generation for better display.
Refine ingredient-aware matching logic
Updated IngredientAwareMatcher to use MealPhoto and Meal data, improving the evaluation of merge candidates based on meal context and ML labels.
Improve AI client for meal analysis and planning
Enhanced LazyCaloriesAiClient with refined error handling, improved merge planning metadata generation, and updated analysis methods for photos and text.
Enable edge-to-edge display and improve background
Enabled edge-to-edge display for a more immersive UI and set the background color to match the theme's primary container.
Streamline monitoring notification updates
Refactored MonitoringNotificationUpdater to use a DailyStatusProvider for resolving status and suggestions, improving efficiency and accuracy.
Adjust TokenGate API client for plan usage
Modified TokenGateClient to allow disabling usage publishing for specific calls, improving flexibility in plan usage retrieval.
Introduce UsageAllowanceStatus and refine allowance logic
Created UsageAllowanceStatus to consolidate allowance information and refined the logic for determining block reasons and recovery actions.
Simplify WeightProjectionViewModelFactory
Removed unnecessary dependencies from WeightProjectionViewModelFactory, simplifying its constructor to only require the AppDatabase.
Simplify WeightProjectionViewModelFactory
Removed unnecessary dependencies from WeightProjectionViewModelFactory, simplifying its constructor to only require the AppDatabase.
Refactor WeightProjectionViewModelNonHilt with Ledger
Updated WeightProjectionViewModelNonHilt to use the new Ledger system for calculating intake averages and projections, improving data handling.
Implement FoodEvaluator for AI-driven food assessment
Introduced FoodEvaluator to provide AI-driven advice on food choices based on user context and preferences.
Enhance MealAnalysis for robust AI-driven food assessment
Refactored MealAnalysis for improved handling of photo and text analysis, refined transaction management, and better integration with MealMembership.
Implement TokenGateMealAnalysisAi for production AI analysis
Introduced TokenGateMealAnalysisAi to handle production AI requests, including photo decoding and TokenGate client interaction.
Update AppDatabase migrations for Meal and FoodImage changes
Added migrations MIGRATION_25_26, MIGRATION_26_27, and MIGRATION_27_28 to handle the introduction of the Meal table and changes to FoodImageEntity.
Add TypeConverters for FoodVerdict and EnabledBy
Included TypeConverters for FoodVerdict and EnabledBy enums in AppDatabase to support their storage in the database.
Implement DailyStatusCacheStore for caching AI suggestions
Created DailyStatusCacheStore to manage caching of AI-generated daily status suggestions, improving performance and reliability.
Simplify FoodImageDao operations
Refactored FoodImageDao by removing redundant queries and update methods, streamlining database interactions.
Refine FoodImageEntity structure
Updated FoodImageEntity to reflect the new data model, removing legacy fields and adding mealId for direct relation.
Introduce FoodVerdict and EnabledBy enums
Added FoodVerdict and EnabledBy enums to represent the AI's assessment of food and the source of the enabled state for photos.
Remove legacy Health Connect write methods
Deprecated and removed legacy methods in HealthConnectService for writing calorie consumption directly, favoring the sync approach.
Implement LegacyMealConversion for data migration
Created LegacyMealConversion to handle the conversion of legacy photo data into the new Meal and FoodImageEntity structure during database migrations.
Add MealDao and related methods for Meal management
Introduced MealDao and associated methods to manage Meal entities, including CRUD operations and queries for MealWithPhotos.
Define MealEntity for storing meal-specific data
Created MealEntity to store aggregated data for a meal occasion, including counts, calories, macros, and AI analysis results.
Introduce MealWithPhotos data class for combined meal and photo data
Created MealWithPhotos data class to represent a Meal along with its associated photos, simplifying data retrieval and display.
Implement PreMigrationCopy for database safety
Added PreMigrationCopy utility to safeguard database integrity during migrations by keeping a copy of the previous version.
Refine BackupFileService for Meal data and format versioning
Updated BackupFileService to include Meal data in snapshots, handle format versioning, and improve restore logic.
Update BackupSnapshot for Meal data and format versioning
Modified BackupSnapshot to include Meal data and updated the format version to 6, supporting the new Meal entity.
Remove unused UserPreferencesRepository
Removed the UserPreferencesRepository interface as its functionality is now handled directly by UserPreferencesDao.