Skip to content

Werb v0.5.0

Latest

Choose a tag to compare

@github-actions github-actions released this 09 Jun 07:46

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 the FRAC model 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.

Deferred

  • Inline-editable recipe view (#36)
    — kept the v0.4 view/edit split + the new unsaved guard; full inline editing
    is its own design effort.
  • Recipe layout density (#38) —
    awaiting reproduction details (device / resolution) from the reporter.