Ingredient Parser
Huge Ingredient Parser submodule overhaul.
This should
- Hopefully cope with a ton more ingredient variation - hopefully not too much breakage along the way.
- Enable the volumetric ingredient matches to be more accurate as there's less noise in the ingredient name.
- Give the user a better experience - parsing the ingredients should be much easier and simpler now.
- Flags: approx (approx), optional (optional), to-serve (toServe), and to-taste (toTaste) are surfaced and presented as badges.
- Instructions/states are extracted into instructions and removed from ingredient/additional, including truncation cleanups (e.g., “lukewarm” won’t leave “luke” behind).
- Alternatives: ingredient-only alts stay inline on the main line; alts with quantity/unit live in the alternatives array and are shown in the dropdown with badges (ing for ingredient, unit for quantity/unit/system).
- Unit metadata: symbols and unitSystem are preserved across conversions; teaspoons/tablespoons are treated as system-neutral to avoid skewing system detection.
- Multipliers/per-item: per-item quantities appear as a muted tail (e.g., “(per item: 50 g)”) while keeping the main quantity intact.
UI wiring: segmented Metric / US Vol / Imperial selector, compact toggle row, inline legends, and a chevron panel for alts to display structured alternative data.
Frontend
- These various options reflected in the UI
- flags with badges
- alt ingredient+unit/unit on a dropdown line
- alt ingredient piped against the original ingredient
- instructions states e.g. boiled, chopped are all shown in smaller text
- added buttons instead of checkboxes on the ingredients, looks a bit cleaner. Default measurement system is now an outlined button
- BUGFIX: the login redirect wasn't working properly
- BUGFIX: the manual screenshot script was hanging on the login page