Add finished-roast .alog uploads with Pi agent deep review and /roasts history
Test and deploy / test-and-deploy (push) Successful in 1m39s

- POST /api/roasts stores the original .alog verbatim (multiple per plan),
  parses it server-side, and kicks off an async zero-tool Pi agent review
  (grade, highlights, concerns, next-batch suggestions, plan-vs-actual)
- /roasts page: table of historical actual roasts with review summaries;
  row detail renders the BT curve as SVG with the plan curve overlaid,
  shows the full review, and offers original-.alog backup download,
  re-evaluate, and delete
- Planner's Reference curve drawer gains a multi-file finished-roast
  uploader that attaches to the open (synced) plan
- Failed reviews record the error on the row and are retryable via
  POST /api/roasts/:id/evaluate (e.g. once a model is configured)

Co-Authored-By: Claude Fable 5 <[email protected]>
This commit is contained in:
Shane Maynard
2026-08-08 20:18:22 -04:00
co-authored by Claude Fable 5
parent 84ce75dc14
commit eb82263ead
15 changed files with 1425 additions and 8 deletions
+21
View File
@@ -29,6 +29,10 @@
<span class="nav-icon" aria-hidden="true"></span
><span class="nav-label">Plans</span>
</button>
<a class="nav-item" href="/roasts"
><span class="nav-icon" aria-hidden="true"></span
><span class="nav-label">Roasts</span></a
>
<a class="nav-item" href="/inventory"
><span class="nav-icon" aria-hidden="true"></span
><span class="nav-label">Inventory</span></a
@@ -219,6 +223,23 @@
</button>
<ul class="lib-list hidden" id="alog-library-list"></ul>
<div id="alog-result" class="drawer-result"></div>
<hr style="border:none;border-top:1px solid var(--line,#e5dcd2);margin:16px 0" />
<h4 style="margin:0 0 6px">Log a finished roast</h4>
<p class="field-note" style="margin-top:0">
Upload the actual roast's .alog to attach it to this plan — you can
upload several. The Pi agent reviews each one in the background.
</p>
<label class="filebtn primary-btn"
>Upload finished roast(s)<input
type="file"
id="actual-alog-file"
accept=".alog"
multiple
/></label>
<div id="actual-alog-result" class="drawer-result"></div>
<p class="field-note" style="margin-bottom:0">
<a href="/roasts">View roast history →</a>
</p>
</div>
</aside>