Skip to content

Conversation

@phoneuooyd
Copy link
Owner

No description provided.

Wrapped the example recipe seeding logic in a DEBUG conditional to ensure it only runs in development builds. Added debug logging to indicate whether the example recipe is seeded or skipped.
Introduces a setup wizard that appears on first launch, allowing users to select language and choose whether to install basic ingredients. Adds SetupWizardPage, SetupWizardViewModel, localization resources, and related models and services. Updates App initialization to show the wizard on first launch and persist user choices. Refactors PreferencesService and IPreferencesService to support first launch and ingredient installation preferences. Registers new services and pages in MauiProgram.
Cleaned up the using directive for FoodbookApp by removing an outdated comment referencing AppShell.
Introduces SetupWizardPageResources for localization (including Polish and English), updates project file to embed new resources, and extends ingredient JSON to support multiple languages. Refactors ingredient seeding logic to support language selection, concurrency safety, and duplicate removal. Updates ingredient loading to use language-specific names and improves fallback and logging.
Added .resx localization files for German (de-DE) and Spanish (es-ES) for multiple pages and components, including AddRecipePage, ArchivePage, ButtonResources, HomePage, IngredientFormPage, IngredientsPage, MealFormPage, PlannerPage, RecipesPage, SettingsPage, SetupWizardPage, ShoppingListDetailPage, ShoppingListPage, TabBarResources, and UnitResources. This enhances the app's multilingual support for German and Spanish users.
Added Korean (ko-KR) resource files for all major pages and UI elements. Introduced CultureCodeToDisplayNameConverter and CultureCodeToNativeNameConverter for improved language display in the setup wizard. Updated PreferencesService and SetupWizardViewModel to support Korean, and modified SetupWizardPage.xaml to use the new converters for language selection.
Introduces a Folder model with parent-child relationships and integrates it into the database context. Adds FolderService for folder CRUD and hierarchy management, updates Recipe to support folder assignment, and implements drag-and-drop gesture support in UniversalListItemComponent for both folders and recipes.
Introduces an expandable Floating Action Button (FAB) component that supports multiple actions, including adding folders and recipes. Adds folder selection and assignment to recipes in AddRecipeViewModel, registers IFolderService in dependency injection, and updates RecipeViewModel to allow folder creation. Updates UI to use the new expandable FAB and enables folder management features throughout the app.
Refactored RecipeViewModel to support both folders and recipes in a unified Items collection, with new commands for editing and deleting both types. Updated RecipesPage and UniversalListItemComponent to use the new Items collection and commands. Improved FloatingActionButtonComponent binding and added a placeholder for an expandable FAB component.
Introduces folder navigation for recipes, including breadcrumb support and the ability to add recipes within folders. Updates the RecipeViewModel to handle folder hierarchy, navigation, and filtering. UI changes include a breadcrumb bar, back button, and visual distinction between folders and recipes in the list. Also adds converters for distinguishing folders and recipes, and ensures the floating action button collapses after use.
Moved the folder ribbon inside the card and made it flush with the card's left edge in UniversalListItemComponent.xaml. Improved layout by collapsing the ribbon for non-folders and adjusting content spacing. Also, reduced the height of the back button in RecipesPage.xaml for better alignment.
Implemented drag and drop functionality to allow moving recipes between folders. Added new drag and drop commands to RecipeViewModel, updated UniversalListItemComponent to handle drag gestures, and enabled the feature in RecipesPage. This improves usability by allowing users to organize recipes via drag and drop.
Added MoveRecipeUpAsync to RecipeViewModel and updated RecipesPage to support dropping recipes onto the breadcrumb area or back button to move them up one folder level. This improves recipe organization by allowing intuitive drag-and-drop navigation.
Refactored FloatingActionButtonComponent for cleaner property declarations, dynamic action button sizing, and improved action rebuild logic. Updated UniversalListItemComponent to visually distinguish folders by increasing font size and item height when appropriate.
Introduces a FolderEditCommand to allow renaming and editing folder descriptions, with validation and localized prompts/messages. Adds new localized resource files for folder-related UI in multiple languages. Updates UniversalListItemComponent to show an edit button for folders and wires up the new command in RecipesPage.
Ensure that the FolderId property is updated when editing a recipe so that folder assignments are correctly persisted.
Introduced a new 'FabActionButton' style in Styles.xaml for action buttons in the expandable FAB, including theme-aware colors and pressed/disabled states. Updated FloatingActionButtonComponent to use this style for consistent appearance and behavior.
Introduced FolderAwarePickerComponent with folder and recipe navigation for improved recipe selection. Updated PlannerPage to use the new component instead of the standard Picker. Added FolderRecipeTemplateSelector and supporting resources, and registered the new component in the project file. Also updated localization with a placeholder for recipe selection.
Replaces the inline expandable picker UI with a dialog-based selection flow for recipes and folders. Removes complex XAML templates and related commands, introducing a simpler interface and a new IsNotNullToColorConverter for dynamic text coloring. The code-behind now manages navigation and selection via action sheets, improving maintainability and user experience.
Upgraded several NuGet packages in both FoodbookApp.App and FoodbookApp.Tests projects to their latest versions, including EntityFrameworkCore, HtmlAgilityPack, and xUnit. Added CommunityToolkit.Common and CommunityToolkit.Mvvm packages to both projects. Updated test dependencies and adjusted PrivateAssets/IncludeAssets for some test packages to improve dependency management.
Replaces the action sheet-based recipe picker with a new FolderAwarePickerPopup component for improved UX and folder navigation. Adds ItemTypeToColorConverter for dynamic coloring, updates the FolderAwarePickerComponent to use the popup, and adjusts PlannerPage to avoid unnecessary reloads after popup closes. Updates project file to include new resources and disables Android AOT in Release to fix EF Core GUID issues.
Better sizes and visibility
-
-
Introduced a new SearchablePickerComponent with a searchable popup for improved ingredient selection in AddRecipePage. Updated styles to use DynamicResource for better theming, and adjusted RecipesPage breadcrumb styling for consistency. The AddRecipePage now uses the new component instead of a standard Picker, and related event handling was updated to support both native and custom pickers.
Changed the 'Title' resource in Korean and Polish AddRecipePage localization files from 'Add Recipe'/'Dodaj przepis' to 'Save Recipe'/'Zapisz przepis'. Improved UniversalListItemComponent.xaml to hide nutrition info for folders and visually distinguish folder items with a new background and border color.
Introduces Entity Framework Core migrations and design-time context factory for database management. Refactors value converters to use nullable reference types and adds a UnitToStringConverter. Improves AddRecipePage unit picker binding and adds popup protection logic to HomePage. Updates project file with EF Core design-time package, localization, and trimmer configuration. Adds new resource files and XAML components for pickers and popups.
Added protection against multiple opens for the meals popup in HomeViewModel and SimplePicker. Updated AddRecipePage to use UnitToLocalizedStringConverter for unit display. Minor UI cleanup in HomePage and improved ItemsSource typing in SimplePicker.
Refactored HomeViewModel to use structured item models (SectionHeader, MealTitle, MacroRow, Description) for the planned meals popup, enabling richer and more informative rendering. Updated SimpleListPopup to support these models and render them appropriately. Also removed the dropdown icon from SearchablePickerComponent and restored helper methods in HomeViewModel for improved code clarity and maintainability.
Improved the visual appearance and layout of SimpleListPopup and SearchablePickerComponent by adjusting paddings, font sizes, margins, and color bindings. Enhanced the popup's header, footer, and list item styles for better readability and consistency. Also added an emoji label to the Plans section on HomePage.
Moved system bar theme update to occur after window creation to ensure correct theme application. Removed early theme update from MauiProgram. Updated SetupWizardPage.xaml to use AppThemeBinding for better light/dark mode support and added missing converters to resources.
Changed the increase portions button to use dynamic resources for BackgroundColor and TextColor, ensuring consistent theming with the rest of the app.
Added German, Spanish, French, and Korean language resources to SettingsPageResources in both English and Polish. Updated AppThemeToLocalizedStringConverter and CultureCodeToLocalizedNameConverter to use ILocalizationService for dynamic resource lookup and to support the new languages. Improved error handling and fallback logic in both converters.
Introduced ShowMealDetailsPopupCommand and its handler in HomeViewModel to display detailed meal information in a popup. Updated HomePage.xaml to use the new command for meal item taps. In SettingsViewModel, added RefreshCollectionsForLocalization to reload pickers and collections when the app language changes, ensuring UI elements reflect the selected culture. Minor XAML adjustments were made for data templates in PlannerPage.xaml.
-
Moved all database initialization, migration, schema validation, and reset logic from MauiProgram to a new IDatabaseService/DatabaseService. Updated dependency injection and ViewModels (AddRecipeViewModel, SettingsViewModel) to use the new service, improving separation of concerns and testability.
-
-
Moved AppDbContext registration to a new extension method and standardized SQLite connection string. Added explicit PRAGMA statements (foreign_keys, journal_mode=WAL) after migrations in DatabaseService for improved reliability. Removed redundant manual table creation logic from FolderService, relying on EF migrations. Updated migration and development database files accordingly.
Added validation and fallbacks for culture names in LocalizationService and SettingsViewModel to prevent crashes and UI freezes when changing cultures. The SelectedCulture setter now guards against re-entrancy and only applies supported or neutral cultures, avoiding unnecessary collection refreshes that could cause UI loops. Debug output and comments clarify the new logic and intent.
Do not preselect the first available ingredient when adding a new ingredient to a recipe; start with empty fields and defaults. Added a new placeholder resource for ingredient selection and updated the UI to use it. Also clarified FloatingActionButton behavior for non-expandable mode.
Added 'SelectIngredientPlaceholder' and 'SelectRecipePlaceholder' entries to AddRecipePage and PlannerPage resource files in German, Spanish, French, Korean, and Polish. This improves localization support for ingredient and recipe selection placeholders.
Replaces Frame with Border and applies modern styles in IngredientFormPage for a more consistent look. Refactors FloatingActionButtonComponent to build its UI in code, improving cross-platform reliability. Updates PlannerPage to add date validation logic and robust event handling for date pickers. Refactors RecipesPage to use WeakReferenceMessenger for FAB collapse, improves command handling, and enhances drag-and-drop logic. Adds new color resources for folder cards.
Folder card background and stroke colors are now derived from the primary color with adjusted opacity, ensuring consistency with the active theme. The FloatingActionButton now uses dynamic resources for its background and text colors, allowing it to update automatically with theme changes, and sets fixed size and corner radius for visual consistency.
Added 'SelectRecipePlaceholder' to Polish resources. Updated FolderAwarePickerComponent to handle placeholder text changes by triggering property change notifications.
Refactored IngredientsViewModel and RecipeViewModel to extract core fetch logic and add hard timeouts for refresh operations, ensuring RefreshView spinners always stop. Enhanced GenericListComponent with a hard refresh timeout and two-way IsRefreshing binding. Improved FloatingActionButtonComponent to prevent double command execution and ensure correct command binding. Updated SimpleListPopup to improve color contrast in dark mode and use more readable text colors.
Introduced DataLoaded events in IngredientsViewModel and RecipeViewModel to signal when all data is fully loaded. GenericListComponent now exposes a StopRefreshRequested event and a RequestStopRefreshing method to allow pages to explicitly stop the pull-to-refresh spinner. IngredientsPage and RecipesPage subscribe to the DataLoaded event and call RequestStopRefreshing on the list component, ensuring the spinner stops exactly when data is ready. This improves UI responsiveness and prevents the spinner from persisting unnecessarily.
Removed IsBeingDragged and IsBeingDraggedOver from the Recipe database schema and marked them as [NotMapped] in the model to keep them as UI-only properties. Updated migrations and database snapshot accordingly. Simplified GenericListComponent by removing RefreshView and related refresh logic, and updated IngredientsPage and RecipesPage to remove unused loading indicators and refresh bindings.
Moved all service interfaces to a new FoodbookApp.Interfaces namespace and updated all references accordingly. Enhanced theming by introducing adaptive text and frame colors, and improved colorful background handling for better contrast and accessibility. Updated XAML components to use new dynamic resources for consistent appearance across light and dark modes.
Introduces a ThemeChanged event to IThemeService and ThemeService, allowing pages and components to react to theme or palette changes. Updates AddRecipePage, IngredientFormPage, and FloatingActionButtonComponent to listen for theme changes and refresh UI elements accordingly. Improves localization resources and fixes Polish button text. Also updates AddRecipePage to use dynamic resources for nutrition labels.
@phoneuooyd phoneuooyd merged commit 121ce70 into main Sep 18, 2025
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant