# Coffee workspace and Ask Bean Bro The Planner now has a compact header, editable plan name, batch summary, annotated curve, contextual URL/curve actions, and an integrated Ask Bean Bro conversation. Mobile uses Plan / Ask Bean Bro tabs. Source URL and coffee name each occupy a full-width row; other basic coffee inputs use two columns. Timing calculations and explanations are expandable. ## Plan → roast → taste → experiment - **Calendar** replaces Today and Coffee history with monthly activity and direct links to roast, cupping, brew and plan records. The matching coffee history remains available to Bean Bro as account-scoped evidence. - **Experiments** capture a question, one change and an expected cup result. Quick tasting records balance, sweetness, favorites, and whether the experiment improved the cup. Favorites reflect the user's preference, not model grades. - **Ask Bean Bro** saves its recent conversation with each plan, uses only that account's matching coffee history, and returns reviewable before/after proposals. Applying or creating a variation is explicit; stale proposals are rejected. Undo and plan history support recovery. Coffee facts and machine settings are outside the assistant's patch allowlist. - **Roast day** provides a timer and manual milestone recording in Fahrenheit. Records persist in the account-scoped local draft offline. When online, Finish & record tasting creates a finished roast once for that timer session. Manual records export as JSON and are labeled as sparse observations, not continuous telemetry. Importing an Artisan file extracts its measurements, opens the uploaded roast, and can suggest a name-based plan match for confirmation. - **Plan history** records meaningful changes transactionally. The latest 50 revisions are listed; revisions remain in personal/admin exports. Restore retains current inventory consumption, chat and roast-day records. New uploads, manual roasts and plan attachments capture plan targets; later plan edits do not rewrite those captured targets. Older records without snapshots remain clearly labeled as using the current linked plan. Past revisions or targets from before this release cannot be reconstructed. ## Model configuration Admin → Bean Bro selects the configured provider/model for chat, prefill and finished-roast reviews. Test connection makes a small real request and reports the responding model. Provider credentials remain in the protected Pi configuration on the server. Auto follows the server model overrides and configured availability. Network-dependent assistance and cloud saves require connectivity; the roast-day draft remains available offline after the app shell has been cached. ## Validation API regressions cover ownership, revision restore, scoped history/evidence, proposal allowlists, model connection permissions, idempotent manual completion, captured targets and exports. Chromium regressions cover plan switching, cloning, URL persistence, real print PDFs, chat persistence and reviewable edits, mobile tabs and field widths, offline reload with roast events, manual completion, streamed replies and calendar event links. Desktop/mobile screenshots were inspected and used to correct the layout. ## Calendar and streamed replies The logged-in home page is now an activity calendar. Today and Coffee history were removed; old Coffee history URLs redirect home. The month view and mobile activity log link to owned roasts, cupping sessions, brews, and created plans. Event dates use roast/ritual/brew timestamps where available, otherwise the record creation date is labeled “Date logged.” Month filtering respects the browser timezone. Calendar data contains lightweight event metadata, not roast curves. Bean Bro receives the same computed milestones used by the chart/report, with Fahrenheit values and explicit illustrative-versus-entered provenance. Actual measurements and preheat setpoint are separate. Named timing components explain that processing adjustments affect development. Chat requests accept text/event-stream while retaining the JSON response for other clients. Only decoded reply text streams; suggestions are validated and shown after completion. Heartbeats prevent idle buffering, disconnected clients cancel generation, and interrupted responses remain visible with retry guidance.