From 4a3d192c2c20742325147125d43058543549861d Mon Sep 17 00:00:00 2001 From: Shane Maynard Date: Sun, 9 Aug 2026 08:35:11 -0400 Subject: [PATCH] Move After-the-Roast onto actual roasts; add Artisan-importable updated .alog download MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit One system: post-roast observations (weights, colour, DTR, cup notes, 'one change next batch', disproof) now live on the uploaded roast (actual_roasts.after, migration 011), edited on the roast detail view with weights/DTR prefilled from the .alog itself. The planner's screen section is removed (the print worksheet keeps its hand-fill copy), and the lot 'last refine' suggestion reads the note from both the new home and legacy plans, newest wins. Every roast now downloads two ways: the untouched original .alog, and an updated supplemental copy with the app's data written back as valid Artisan fields (weight, beans, roastingnotes incl. the LLM review, cuppingnotes incl. linked cupping score/flavors) — serialized as a Python literal so Artisan's ast.literal_eval re-imports it. Co-Authored-By: Claude Fable 5 --- db/migrations/011_roast_after.sql | 3 + public/app.css | 2 +- public/index.html | 114 --------------------- public/js/field-help-content.js | 7 +- public/js/main.js | 6 -- public/js/roasts.js | 46 +++++++++ public/roasts.html | 90 ++++++++++++++++- server/alog.js | 33 +++++- server/app.js | 161 ++++++++++++++++++++++++------ server/openapi.js | 4 +- test/helpers.js | 2 +- test/roasts.test.js | 88 ++++++++++++++++ 12 files changed, 395 insertions(+), 161 deletions(-) create mode 100644 db/migrations/011_roast_after.sql diff --git a/db/migrations/011_roast_after.sql b/db/migrations/011_roast_after.sql new file mode 100644 index 0000000..27a009b --- /dev/null +++ b/db/migrations/011_roast_after.sql @@ -0,0 +1,3 @@ +-- Additive only. "After the roast" moves off the plan worksheet onto the actual roast row — +-- one system: the uploaded .alog, its review, and the post-roast observations live together. +ALTER TABLE actual_roasts ADD COLUMN after jsonb NOT NULL DEFAULT '{}'; diff --git a/public/app.css b/public/app.css index 8829abb..abb551d 100644 --- a/public/app.css +++ b/public/app.css @@ -2594,7 +2594,7 @@ body.show-fids .field[data-fid]::after { order: 2; margin: 0; display: grid; - grid-template-columns: repeat(5, 1fr); + grid-template-columns: repeat(4, 1fr); gap: 4px; } .section-nav a { diff --git a/public/index.html b/public/index.html index 123ef58..4922575 100644 --- a/public/index.html +++ b/public/index.html @@ -67,7 +67,6 @@ Bean Machine Log - After
@@ -1173,119 +1172,6 @@
-
-
-

After the Roast

- after cupping -
-
-
- One change per batch — arithmetic, not patience -

- Move two variables and there are four possible - explanations for what the cup does; move three and there - are eight, and you can't separate them without more - batches than you have coffee for. This worksheet makes - single-variable experiments cheap: every number has one - owner. -

-

- Weight loss is the honest instrument — (green − roasted) ÷ - green × 100 rolls total time, development, and drop - temperature into one number your scale can measure. Then - match the cup to a symptom: papery or thin → first crack - +0:30. Savory, florals gone → first crack −0:30. Sharp - acidity with no fruit → development +0:15 (a DTR under 12% - confirms it). Flat and dull → development −0:15. Flat with - no clear defect → fix the RoR shape, not the times. Write - the winner into "One change next batch" — and next time - you roast this coffee, carry it into ± Refine (1.6). That - handoff is how the plan learns. -

-
-
- - - - -
-
- - - - -
- -
- - -
- -
-