Skip to content

feat: thicken sauces with a roux cooked from flour in a buttered frying pan - #118

Merged
JustinasLa merged 4 commits into
mainfrom
feat/thick-sauce
Nov 2, 2026
Merged

JustinasLa merged 4 commits into
mainfrom
feat/thick-sauce

Conversation

@JustinasLa

Copy link
Copy Markdown
Contributor

Why

The Main review (K2) found the saucepan's Thick tag unreachable. SauceReference.scoop counted slots of category flour, but milled flour is minted as category grain (MillingStoneHandler.buildFlour). canAdd doesn't admit grain either: it isn't a seasoning, sweetener, add-on, alcohol or bottling ingredient. So no sauce could ever be Thick.

What

  • Roux: flour in a frying pan turns into a roux (types.yml flour cooking-options.frying_pan.output, the pan-foods pattern). The butter goes into its stars, as in any frying. Without butter the pan burns it, which gives a burnt roux.
  • Saucepan: a roux (category thickener, naming.yml categories.thickener) takes one of the two ingredient places, so the other is still free for a seasoning, sugar or garnish. A second roux or a burnt one is refused with a message. Raw flour is refused with a hint to cook it first.
  • Thick: scooping a sauce that has a roux in it adds sauce_thickness thick (+5% food and nutrition). sauce_thickness is now a naming.yml prefix track, so the sauce is named e.g. Thick Garlic Sauce. A dish it's ladled onto shows that name on its sauce line, and its food includes the bonus. Sauces without a roux get no thickness tag, so names don't start with "Thin".
  • A thickener doesn't name the sauce, and it's an extra in the sauce's stars (composition.yml SAUCE_SCOOP).
  • New IA items (16x16, style of the pack's intermediates): roux, roux_burnt, roux_rotten, plus flour_heap(_rotten) so flour lies in the pan as a flat heap. Both lie flat at 45%, placed like popcorn.
  • README feature line, tests (SauceThickeningTest; the old flour scoop test now uses a roux). mvn clean verify: 1439 tests, coverage checks met.

Server config outside this repo

The frying pan's InteractibleFurniture slot whitelist must let flour in: c.grain(type=flour).

🤖 Generated with Claude Code

…ng pan

The saucepan's Thick tag counted category "flour", but milled flour is minted as
category "grain" and canAdd never admitted it, so sauce_thickness thick was
unreachable.

- Flour in a frying pan turns into a roux (types.yml cooking-option output);
  without butter it burns into a burnt roux.
- A roux (category thickener, naming.yml categories) takes one of the
  saucepan's two ingredient places; a second or burnt roux is refused with a
  reason, raw flour with a hint.
- Scooping a sauce with a roux makes it Thick. sauce_thickness is a prefix
  track, so the sauce is named "Thick Garlic Sauce" and dishes it is ladled onto
  list it that way. Sauces without a roux get no thickness tag (no "Thin").
- A thickener doesn't name the dish; it is an extra in the sauce's stars.
- roux, roux_burnt, roux_rotten and flour_heap(_rotten) IA items; flour shows
  as a flat heap in the pan.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

Important

  • Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 2c924183-6e2a-4cb6-8eb9-8d6d7e2a5ebb
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@github-actions github-actions Bot added the size:L 100-499 effective changed lines (tests excluded in mixed PRs). label Nov 1, 2026
@JustinasLa
JustinasLa merged commit b215527 into main Nov 2, 2026
3 checks passed
@JustinasLa
JustinasLa deleted the feat/thick-sauce branch November 2, 2026 04:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 effective changed lines (tests excluded in mixed PRs).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant