Second feedback-driven release. A third batch of forum testers (Eric974,
Stanovitch, and a returning Arwen) pushed on editor ergonomics, ingredient
search, and water chemistry; their notes were triaged into issues
#31–#38 plus a reopened
#7 and worked through together.
Headline: the recipe editor gains BeerSmith-style retargeting (scale to a
volume, solve to an OG or IBU, ± steppers), every recipe now shows grain-bill
percentages and a BU:GU balance gauge, and water chemistry can finally work
backwards — pick a target profile and let Werb suggest the salts.
Added
- BU:GU gauge + grain-bill percentages. Every fermentable row shows its
share of the bill by mass (read view + editor); the targets strip gains a
sixth tile, BU:GU (IBU ÷ gravity units), with a soft in-style range derived
from the style's IBU and OG ranges. Closes
#32. - Editor retargeting tools. A toolbar under the live banner: Scale to…
a new batch volume (proportional, opt-in — not a side effect of editing the
volume field), Solve to OG… (scales the whole grain bill), and Solve
to IBU… (scales the hops). Plus ± steppers on fermentable and hop amounts.
Closes #33. - Water salt suggestion (inverse calc). Pick a target profile and hit
Suggest additions: a non-negative least-squares solver over the salt→ion
matrix proposes gypsum / CaCl₂ / Epsom / table salt / baking soda, fills the
editable salt fields, and the existing forward strip shows how close the
match lands. Shares theFRACmodel with the forward calc so the two never
disagree. Closes #10. - Personal per-ingredient prices. Click any price in the cost panel to set
what you actually paid (€/kg grain, €/g hop, €/pack yeast). Overrides bypass
the global inflation coefficient and are flagged "your price"; stored
per-install, never written into the recipe (BeerJSON stays standard). Seeds
the future inventory module. Closes
#2. - Unsaved-changes guard. Leaving the editor — back button, or closing the
tab/window — now warns when the draft has unsaved edits.
Closes #35. - Out-of-sequence brew-step guard. Starting a step while earlier ones are
still pending asks for confirmation (soft — real brew days skip and reorder).
Closes #37.
Changed
- Ingredient picker ordering (#7,
reopened from v0.4). An empty query now lists alphabetically instead of in
catalog order (no more surprise "Pilsner malt" default); a prefix on the
visible name outranks a prefix on a hidden alias; and when an alias drove the
match the picker shows it (e.g. "Honey — miel") so the ordering reads sensibly. - Category-scoped fermentable search — setting a row's type to "sugar"
lists only sugars, etc. Closes
#34. - Richer bundled examples + refreshed README screenshots. Added a flagship
"West Coast IPA" sample that exercises most of the app end-to-end (stepped
mash, full boil + dry-hop schedule, salt + fining miscellaneous additions, a
sugar adjunct, and the complete BJCP envelope) and an "Oatmeal Stout" for
dark-colour contrast; backfilled full BJCP style ranges onto the existing
four so every sample now renders the in-style gauges. Regenerated the README
screenshots against the flagship so they show BU:GU, the in-style gauges, and
grain-bill percentages. A new test asserts every bundled example is valid
BeerJSON (the app silently skips invalid samples, so this guards the "Import
samples" path).
Fixed
- Style-fit gauges agree between the recipe view and the editor banner.
Both judge fit on the computed recipe (grain bill + hops), so the level
bars sit at the same spot whether you're viewing or editing. The read view
used to feed the gauge the file's claimed OG/FG/IBU/etc. while the editor
used the live compute, so the needles jumped when you toggled edit mode. The
big numbers still show the claimed values with the ≈computed sanity line +
divergence warning; only the fit gauge follows the computed reality.
Regression-guarded by an e2e that asserts the gauges are identical across
both screens. - macOS "Werb is damaged" on Apple Silicon
(#31). Documented the
quarantine workaround (xattr/ right-click → Open) and the no-install PWA
in the README and release notes. Proper Developer ID signing + notarization
is tracked for a future release.