mcp-recipes 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,10 +4,75 @@ All notable changes to this project are documented here. The format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the versions follow
5
5
  [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
- ## [Unreleased]
7
+ ## [1.2.0] - 2026-08-07
8
8
 
9
9
  ### Changed
10
10
 
11
+ - A mass stated behind the thing counted is read as the size of one of them.
12
+ "1 dinde de 3 kg" names one bird and says what it weighs, and multiplying the
13
+ count answered a dinner for twelve with a bird and a half. Lines of that shape
14
+ come back as the page published them, with a note saying the figure gives a
15
+ size and that more people means a bigger bird. A container keeps counting:
16
+ "2 boîtes de 400 g de tomates" states what one boîte holds and goes on to name
17
+ what is in it, and an equivalence such as "450 g (1 livre) de spaghetti"
18
+ restates one quantity twice and is scaled on both sides.
19
+
20
+ - A comparison tells apart the two moments a source can fail in. Searching and
21
+ then opening the version a search offered are two different readings, and a
22
+ source missing from a comparison was described as one whose search did not
23
+ answer whichever of the two had happened. Every row of `per_source` now
24
+ carries a `read` field saying what became of the version that source offered,
25
+ and the notes name the moment that failed.
26
+
27
+ - A search Marmiton answers with nothing is counted as an answer. Marmiton
28
+ serves a 404 on its results page when no recipe matches, and reading that as a
29
+ failed source put "Marmiton did not answer" in front of a reader for a search
30
+ Marmiton had answered. Every other failure stays a failure, so a site that
31
+ cannot be reached is never read as a site that holds nothing.
32
+
33
+ - A list of results carrying none of the words asked for says so. A source
34
+ ranking a title on the letters it opens with answers "chameau farci" with a
35
+ chapeau and a gâteau château. When no title returned carries a word of the
36
+ query, the answer names that, and the rows read as candidates to check.
37
+
38
+ ## [1.1.0] - 2026-08-07
39
+
40
+ ### Changed
41
+
42
+ - The three readings a comma can take are now told apart. English groups
43
+ thousands with it and French marks the decimal, so "1,500 g flour" is fifteen
44
+ hundred grams and "1,500 kg de farine" is a kilo and a half. Where a line
45
+ gives no sign which language it is in, both readings stand and they differ by
46
+ a factor of a thousand, so the line comes back as published and says why
47
+ rather than under a guess.
48
+
49
+ - A figure that was never a count is no longer multiplied. "4 to 5-pound
50
+ boneless pork loin roast" describes one roast and was doubled into eight to
51
+ ten of them, and an amount stated "par personne" or "per person" already
52
+ carries the change the factor asks for. Both come back as the page published
53
+ them, with a note saying which of the two it is.
54
+
55
+ - The quantity behind the word that hid it is read. "~1 cup water", "about 6
56
+ medium lemons" and "environ 6 citrons" carried an amount that was answered as
57
+ if the line had none, and "1 grosse pincée de sel" lost the pincée, and with it
58
+ the fact that a pincée is held to no better than the hand. Both now read
59
+ through to the figure and the measure, and put the word and the sign back
60
+ where the page had them.
61
+
62
+ - HTML entities are decoded, brackets a page left empty are dropped, "recipe"
63
+ naming another dish takes its plural on the count, and "livre" is read as the
64
+ pound a French page glosses a weight with.
65
+
66
+ - An approximate measure lands its count on a whole one. There is no half of a
67
+ hand: the size of one pincée is the cook's and the count is the whole of what
68
+ the measure can say, so "1 pincée de sel" halved keeps the pincée and the line
69
+ reports that it moved, where it answered "1/2 pincée" and called the
70
+ arithmetic exact.
71
+
72
+ - A gousse d'ail and a clove of garlic stop at the half rather than the quarter,
73
+ as the person who cooks these recipes has them, and a baie de genévrier and
74
+ une étoile de badiane are counted whole.
75
+
11
76
  - How finely a counted thing divides now follows the size of one of them against
12
77
  what a recipe puts in, and two families come out of that one comparison. Each
13
78
  family is read in both languages, because where a food falls on that
@@ -50,11 +115,9 @@ All notable changes to this project are documented here. The format follows
50
115
  Each holds enough that a quarter is still a portion someone serves, so the
51
116
  answer is now `1/4 pot de crème fraîche`, exact. The word is read wherever it
52
117
  stands, so `1 petit pot de crème` gets the same floor.
53
- - Une gousse, une tranche and a slice divide as far as the quarter. Each is
54
- already cut off something larger, and the board that produced one takes a
55
- corner off it in the same gesture, so `1 gousse d'ail` reduced to a quarter
56
- comes back as `1/4 gousse d'ail` where it came back as a half, and
57
- `4 gousses d'ail` reads `1 gousse d'ail`.
118
+ - Une tranche and a slice divide as far as the quarter. Each is already cut off
119
+ something larger, and the board that produced one takes a corner off it in the
120
+ same gesture, so a quarter of a tranche de pain is a crouton.
58
121
  - Une pastèque and a watermelon, une pintade and a guinea fowl, un poulet and a
59
122
  chicken, un poireau and a leek, une banane and a banana, une mangue and a
60
123
  mango, un rôti and a roast, un avocat, un reblochon and une bûche divide as
@@ -68,8 +131,8 @@ All notable changes to this project are documented here. The format follows
68
131
  `3 cuisses de poulet` at a half now that the whole poulet goes to the quarter.
69
132
  - `clove` is read on the line that writes it, having named two foods with one
70
133
  answer between them. Garlic in the line makes it the gousse d'ail, which a
71
- knife takes to a quarter, so `4 cloves garlic, minced` reduced to a quarter
72
- reads `1 clove garlic, minced`. On its own, or written `whole cloves`, it is
134
+ knife splits in two, so `4 cloves garlic, minced` reduced to a quarter reads
135
+ `1 clove garlic, minced`. On its own, or written `whole cloves`, it is
73
136
  the clou de girofle dropped into the pot and fished back out: nothing about it
74
137
  is measured, so `4 whole cloves` halved reads `2 whole cloves` where it read
75
138
  `1 whole clof`. The French words need none of this, each naming one food and
@@ -99,6 +162,21 @@ All notable changes to this project are documented here. The format follows
99
162
  unchanged, and the divisibility now comes from the thing counted, so
100
163
  `1 ea. onion` goes to a quarter and `12 ea. eggs` lands on a whole number.
101
164
 
165
+ ### Fixed
166
+
167
+ - A French produce name opening on an accent is recognised again. A word
168
+ boundary sits between ASCII letters, so the pattern never matched at the start
169
+ of "échalote", and a shallot reduced to a quarter was clamped up to a half and
170
+ told it no longer held its share. The name is now read with its accents folded
171
+ away, so it comes back as "1/4 échalote", exact.
172
+
173
+ - A second quantity left at its published size is reported on a French line. The
174
+ vocabulary is keyed without accents and the line writes "cuillère à soupe" with
175
+ them, so the sentence was never reached.
176
+
177
+ - Rounding happens in the smaller of the two units when the answer moves to a
178
+ bigger one, so a promotion no longer costs precision the page had.
179
+
102
180
  ## [1.0.0] - 2026-02-06
103
181
 
104
182
  First release.
@@ -144,4 +222,5 @@ First release.
144
222
  - A nightly canary against the real sites, which opens an issue when one of them
145
223
  changes something this server reads.
146
224
 
225
+ [1.1.0]: https://github.com/smeet666/mcp-recipes/releases/tag/v1.1.0
147
226
  [1.0.0]: https://github.com/smeet666/mcp-recipes/releases/tag/v1.0.0
package/LICENSE CHANGED
File without changes
package/README.md CHANGED
@@ -59,9 +59,8 @@ clou de girofle, a zeste and a zest go with it, having no half anyone takes.
59
59
 
60
60
  A few measures go the other way and divide further. A pot, a bouteille, a
61
61
  bottle, a jar and a block hold enough for a quarter to be a portion someone
62
- serves. Une gousse, une tranche and a slice are already cut off something
63
- larger, and the board that produced one takes a corner off it in the same
64
- gesture. And a word can state a number of things rather than a measure of them,
62
+ serves. Une tranche and a slice are already cut off something larger, and the
63
+ board that produced one takes a corner off it in the same gesture. And a word can state a number of things rather than a measure of them,
65
64
  so `2 dozen mushrooms` at three quarters comes back as **18 mushrooms**. A blanc
66
65
  belongs to whichever food the line named: the white of an egg is counted whole,
67
66
  a blanc de poulet is meat and halves.
@@ -82,8 +81,8 @@ taken by squeezing half the fruit, and a quarter of one has to be poured out and
82
81
  measured back.
83
82
 
84
83
  The word `clove` names two foods, and the line says which. Garlic in the line
85
- makes it the wedge broken off a bulb, the gousse d'ail, which a knife takes to a
86
- quarter; on its own, or written `whole cloves`, it is the dried flower bud, the
84
+ makes it the wedge broken off a bulb, the gousse d'ail, which a knife splits in
85
+ two; on its own, or written `whole cloves`, it is the dried flower bud, the
87
86
  clou de girofle, and a count of those lands on a whole number.
88
87
 
89
88
  - `3 eggs` taken from six people to twenty-five gives **13 eggs**, and never a
package/dist/index.d.ts CHANGED
File without changes