Ingredient substitutions: treat interchangeable ingredients as in stock for pantry recipes
- Dominant language
- Rust
- Stars
- 1.4k
- Forks
- 109
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 19
Description
From a trialing user (Discord, 2026-08-11), as a follow-on to global aisle aliases (see the alias issue). Aliases cover *same item, different name* (bell pepper / capsicum); this is about *different items that substitute for each other* in a recipe:
> I could use butter or oil for certain cooking process. If I'm out of butter, but do have oil, I would want the API to count that ingredient as in stock!
Sketch from the conversation: some way to declare substitutions — either in the .cook file itself (e.g. an `@butter|oil{}`-style alternative) or in workspace config — so that `pantry recipes` counts a recipe as cookable when any acceptable substitute is in the pantry, and the shopping list / recipe display can show the alternative.
Needs discussion on where the declaration lives (recipe syntax would require a spec update; a workspace-level substitutions config would not) and how it interacts with aisle aliases.
Contributor guide
Research direction
Start by reviewing the global aisle aliases issue and the existing .cook syntax and workspace configuration options. Determine where substitution declarations should live and how they interact with aliases, then specify the expected pantry-recipes, shopping-list, and recipe-display behavior before implementation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100