kiwi/app/services/recipe
pyr0ball b223325d77 feat(shopping): locale-aware grocery links with region settings UI
Shopping links previously hardcoded to US storefronts. Users in other regions
got broken Amazon Fresh and Instacart links. Now locale is stored as a user
setting and passed to GroceryLinkBuilder at request time.

- locale_config.py: per-locale Amazon domain/dept config (already existed)
- grocery_links.py: GroceryLinkBuilder accepts locale=; routes Instacart to .ca
  for Canada, uses amazon_domain per locale, Instacart/Walmart US/CA only
- settings.py: adds 'shopping_locale' to allowed settings keys
- shopping.py: reads locale from user's stored setting on all list/add/update paths
- SettingsView.vue: Shopping Region selector (NA, Europe, APAC, LATAM)
- stores/settings.ts: shoppingLocale reactive state, saves via settings API
2026-04-21 15:05:28 -07:00
..
__init__.py feat: ElementClassifier -- ingredient element tagging with heuristic fallback 2026-03-30 22:59:46 -07:00
assembly_recipes.py fix: save, shopping list, and route ordering for Build Your Own 2026-04-14 14:48:30 -07:00
browse_counts_cache.py feat(browse-counts): add pre-computed FTS counts cache with nightly refresh 2026-04-21 15:04:23 -07:00
browser_domains.py feat(browser): expand taxonomy keyword coverage for BBQ and regional subcategories 2026-04-21 15:04:13 -07:00
element_classifier.py fix: wire recipe corpus to cloud per-user DBs via SQLite ATTACH (#102) 2026-04-18 14:21:56 -07:00
grocery_links.py feat(shopping): locale-aware grocery links with region settings UI 2026-04-21 15:05:28 -07:00
llm_recipe.py feat(recipes): 'Not today' per-session ingredient exclusions 2026-04-21 15:05:16 -07:00
locale_config.py feat(browser): expand cuisine taxonomy to 13 categories + 105 subcategories 2026-04-21 10:15:58 -07:00
recipe_engine.py feat(recipes): 'Not today' per-session ingredient exclusions 2026-04-21 15:05:16 -07:00
staple_library.py fix: staple library — consistent tofu_firm slug, load error handling, typed yield_formats, expanded test coverage 2026-03-30 23:10:51 -07:00
style_adapter.py feat: recipe engine Phase 3 — StyleAdapter, LLM levels 3-4, user settings 2026-03-31 14:15:18 -07:00
substitution_engine.py fix: wire recipe corpus to cloud per-user DBs via SQLite ATTACH (#102) 2026-04-18 14:21:56 -07:00
tag_inferrer.py fix: recipe enrichment backfill, main_ingredient browser domain, bug batch 2026-04-18 15:38:56 -07:00