Commit Graph

14 Commits

Author SHA1 Message Date
1536174586 Redesign recipe creation and edit view with Form-based layout and URL import
Replace the single "+" button with a 2-option menu (Create New Recipe / Import
from URL) across RecipeTabView, RecipeListView, and AllRecipesListView. Add
ImportURLSheet for server-side recipe import with loading and error states.

Completely redesign edit mode to use a native Form layout with inline editing
for all sections (metadata, duration, ingredients, instructions, tools,
nutrition) instead of the previous sheet-based EditableListView approach. Move
delete action from edit toolbar to view mode context menu. Add recipe image
display to the edit form.

Refactor RecipeListView and AllRecipesListView to use closure-based callbacks
instead of Binding<Bool> for the create/import actions. Add preloadedRecipeDetail
support to RecipeView.ViewModel for imported recipes.

Add DE/ES/FR translations for all new UI strings.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-15 03:29:20 +01:00
c8ddb098d1 Redesign search tab, add category cards, recent recipes, and complete German translations
Overhaul SearchTabView with search history, empty/no-results states, and dynamic
navigation title. Extract CategoryCardView and RecentRecipesSection into standalone
views. Update RecipeTabView, RecipeListView, RecipeCardView, and MainView for the
modernized UI. Add all 12 missing German translations in Localizable.xcstrings.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-15 01:47:16 +01:00
7c824b492e Modernize networking layer and fix category navigation and recipe list bugs
Network layer:
- Replace static CookbookApi protocol with instance-based CookbookApiProtocol
  using async/throws instead of tuple returns
- Refactor ApiRequest to use URLComponents for proper URL encoding, replace
  print statements with OSLog, and return typed NetworkError cases
- Add structured NetworkError variants (httpError, connectionError, etc.)
- Remove global cookbookApi constant in favor of injected dependency on AppState
- Delete unused RecipeEditViewModel, RecipeScraper, and Scraper playground

Data & model fixes:
- Add custom Decodable for RecipeDetail with safe fallbacks for malformed JSON
- Make Category Hashable/Equatable use only `name` so NavigationSplitView
  selection survives category refreshes with updated recipe_count
- Return server-assigned ID from uploadRecipe so new recipes get their ID
  before the post-upload refresh block executes

View updates:
- Refresh both old and new category recipe lists after upload when category
  changes, mapping empty recipeCategory to "*" for uncategorized recipes
- Raise deployment target to iOS 18, adopt new SwiftUI API conventions
- Clean up alerts, onboarding views, and settings

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-15 00:47:28 +01:00
VincentMeilinger
2c749754f4 Bug fixes and UI polish 2024-03-10 11:56:51 +01:00
VincentMeilinger
29872611da Fixed: edited recipes were not saved locally 2024-03-08 17:45:26 +01:00
VincentMeilinger
dbe626d595 Bug fixes and UI polish 2024-03-07 19:09:39 +01:00
VincentMeilinger
92decb773e Recipe edit view fixes 2024-03-05 22:07:51 +01:00
VincentMeilinger
11359e11d4 Recipe edit view polish 2024-03-05 21:42:02 +01:00
VincentMeilinger
b5dbaad9aa Recipe edit UI polish 2024-03-05 08:39:06 +01:00
VincentMeilinger
597477544d Creating and updating recipes works in the new edit view 2024-03-04 11:58:16 +01:00
VincentMeilinger
aa45bbdbd8 Improved Recipe Editing 2024-03-01 17:35:12 +01:00
VincentMeilinger
650df2b67e Updated Duration Picker during Recipe Editing 2024-03-01 15:32:04 +01:00
VincentMeilinger
744ea76a34 Updated RecipeView 2024-03-01 14:17:24 +01:00
VincentMeilinger
d3e0366ce6 New Recipe Edit View 2024-02-18 12:25:18 +01:00