Releases: hessius/MeticAI
MeticAI v2.3.0
MeticAI v2.3.0 — Brewing Coach & Guided Experience 🎉
What's New
☕ Espresso Compass: After pulling a shot, tell MeticAI how it tasted (sour/bitter, weak/strong) and get suggestions for your next attempt — based on Barista Hustle's Espresso Compass, adapted to Meticulous.
🎛️ Tweak variables before brewing: Adjust dose, temperature, and all other variables on the fly without changing the saved profile.
🔍 Find Similar profiles: Browse your catalogue and discover related profiles based on tag matching.
📝 Actionable shot analysis: Analysis now gives you specific, selectable recommendations you can apply directly to your profile.
🖼️ Profile images: Download images and better image generation.
🧹 Catalogue edit mode: Cleaner default view. Tap Edit to export, rename, or bulk-delete profiles.
⚡ 71% smaller initial load: App loads much faster thanks to code-splitting.
♿ Accessibility improvements: Keyboard navigation, screen reader support, and reduced-motion throughout.
🐛 Plus a bunch of bug fixes (pour-over persistence, preheat, run shot improvements, mobile layout, etc.)
Installation
docker pull ghcr.io/hessius/meticai:latestOr upgrade:
curl -fsSL https://raw.githubusercontent.com/hessius/MeticAI/main/update.sh | bashMeticAI v2.3.0-beta.2
MeticAI v2.3.0-beta.2
Highlights
- fix(preheat): Don't load profile before preheat — prevents machine auto-starting extraction when temperature is reached
- fix: Preheat-only stays on Run/Schedule page (no erroneous navigation to live view)
- fix: Control center shows newly selected profile immediately (not stale profile)
What's Changed
- chore(release): bump version to 2.3.0-beta.2
- fix(preheat): don't load profile before preheat to prevent auto-start
- fix: preheat-only navigation and stale profile in control center
- fix(docker): bump s6-overlay to 3.2.2.0 (3.2.0.x releases return 404)
- fix(runShot): save-as-new shows correct name in live view and saves to catalogue
- fix(liveView): remove Power line from live shot chart
- fix: scroll to top on all intra-component view transitions
- feat: profile image improvements — download, auto-scroll, no-text prompt
- fix(variables): filter emoji info vars and exempt base vars from unused warning
- fix(runShot): improve variable adjust panel and fix preheat subtitle
- fix(profiles): move export/delete buttons to edit mode in catalogue
- docs: update v2.3.0 testing checklist with accessibility and pour-over results
- fix(pour-over): add doseGrams and brewRatio to Pydantic preferences model
- fix(a11y): add aria-labels to back buttons and chart containers
- fix(ui): improve recommendation dialog layout on mobile
- fix(runShot): variable panel reliability, i18n, save-as-new toggle, preheat nav
- fix(profiles): clean up catalogue UI with image cache and profile thumbnails
- fix: disable watchtower in dev overlay to prevent image replacement
- fix: pre-select profile during preheat phase (#281)
- docs: update Continuity auto-generated sections
- fix: show variable adjust panel when navigating with initial profile
- feat: bulk delete profiles from machine
- fix: persist doseGrams and brewRatio in pour-over preferences
- feat: ephemeral profile loading + fix variable panel bug (#281)
- feat(recommendations): replace AI with structural profile comparison
- feat(analysis): support stage exit trigger and limit edits via recommendations
- fix(ui): use mt-4 for shot annotation card spacing
- fix(i18n): replace 50+ hardcoded error strings with t() calls
- feat(pour-over): persist coffee weight and brew ratio across sessions
- fix: cross-cutting improvements + accessibility tests
Docker
docker pull ghcr.io/hessius/meticai:v2.3.0-beta.2
docker pull ghcr.io/hessius/meticai:betaMeticAI v2.3.0-beta.1
MeticAI v2.3.0-beta.1 — Brewing Coach & Guided Experience
🚀 New Features
Espresso Compass (#261)
Interactive 2D taste input (sour/bitter, weak/strong) with descriptor selection. After pulling a shot, tell MeticAI how it tasted and get AI-powered recommendations for your next attempt.
Temporary Variable Adjustments (#281)
Tweak profile variables (dose, temperature, pressure, flow targets) before running a shot — without saving changes to the profile. Run-without-saving support plus "Save as New" option for keepers.
Profile Recommendations (#95)
AI recommends profiles based on tag similarity scoring. "Find Similar" overlay in the profile catalogue helps you discover related profiles.
Analysis-to-Edit Pipeline (#258)
Shot analysis now generates structured, actionable recommendations. Select which suggestions to apply — edits are made directly to the profile.
Profile Catalogue Edit Mode
Export, rename, and delete buttons are now behind an Edit toggle — cleaner default view, full control when you need it. Bulk delete support included.
Profile Image Improvements
Download profile images, auto-scroll gallery, and improved prompt generation.
♿ Accessibility (#186)
- Landmarks, skip navigation, and live regions throughout the app
- All icon-only buttons have descriptive aria-labels
- Charts have role="img" with descriptive labels
- prefers-reduced-motion support across all animations
- 25+ accessibility i18n keys across all 6 locales
⚡ Performance
- Code-splitting: 13 views lazy-loaded (main bundle 1,807 KB → 516 KB, 71% reduction)
- Recharts and framer-motion in separate async chunks
- Granular error boundaries on all lazy-loaded views
🐛 Bug Fixes
- Variable adjust panel: reliability improvements, correct grouping (base vs. custom), unused variable warnings, emoji info variables filtered out
- Pour-over: dose and brew ratio now persist across sessions
- Preheat: subtitle no longer shows when preheat is disabled; profile pre-selected during preheat phase
- Live view: removed Power line from chart (not useful for espresso)
- Recommendation dialog: improved mobile layout
- Profile catalogue: image caching, thumbnail improvements
- Scroll-to-top on all intra-component view transitions
- 50+ hardcoded English error strings replaced with i18n t() calls
📦 Dependencies
- Vite 8.0.0 (Rolldown-based builds)
- React 19.2.4, framer-motion 12.37.0, tailwindcss 4.2.1
- 31 dependency bumps total (Python + NPM)
📊 Stats
- 105 files changed, 15,336 insertions, 3,743 deletions
- 6 locales fully updated (en, de, es, fr, it, sv)
- 0 lint errors, all tests passing
Installation (Beta Channel)
Docker (beta tag):
docker pull ghcr.io/hessius/meticai:betaPin to this exact version:
docker pull ghcr.io/hessius/meticai:2.3.0-beta.1latest tag is unchanged — stable users are not affected.
Built from commit: 1a57c72
MeticAI v2.2.2
MeticAI v2.2.2
What's Changed
- wording re img model
- fix: resolve model name at call time, handle empty env, add tests
- fix: update Gemini model from deprecated gemini-2.0-flash to gemini-2.5-flash
Installation
Quick Install:
curl -fsSL https://raw.githubusercontent.com/hessius/MeticAI/main/scripts/install.sh | bashDocker:
docker pull ghcr.io/hessius/meticai:v2.2.2Upgrading from v1.x:
curl -fsSL https://raw.githubusercontent.com/hessius/MeticAI/main/scripts/migrate-to-unified.sh | bashBuilt from commit: 5f3d21b
MeticAI v2.2.1
MeticAI v2.2.1
What's Changed
- fix(hotfix): recipe mode crash from variable shadowing translation function
Installation
Quick Install:
curl -fsSL https://raw.githubusercontent.com/hessius/MeticAI/main/scripts/install.sh | bashDocker:
docker pull ghcr.io/hessius/meticai:v2.2.1Upgrading from v1.x:
curl -fsSL https://raw.githubusercontent.com/hessius/MeticAI/main/scripts/migrate-to-unified.sh | bashBuilt from commit: f581b58
MeticAI v2.2.0
MeticAI v2.2.0
🚀 What's New
Profile Management
- Full profile catalogue with machine sync and auto-sync option (#182, #192)
- Edit profiles directly in the app (#257)
- Add markdown notes to any profile (#225)
Shot Tracking
- Star ratings and comments on every shot (#179)
- New Shot Analysis view for reviewing your history (#259)
Smarter Setup
- Auto-detect your Meticulous via mDNS inside the UI (#216)
- AI description controls — choose when Gemini generates profile descriptions (#234)
Under the Hood
MachineServiceabstraction for cleaner machine communication (#252)- Lazy-load canvas-confetti — remove ~40 kB from main bundle (#188)
- 15 dependency upgrades
Installation
Quick Install:
curl -fsSL https://raw.githubusercontent.com/hessius/MeticAI/main/scripts/install.sh | bashDocker:
docker pull ghcr.io/hessius/meticai:v2.2.0macOS:
Download MeticAI.dmg
Upgrading from v1.x:
curl -fsSL https://raw.githubusercontent.com/hessius/MeticAI/main/scripts/migrate-to-unified.sh | bashMeticAI v2.1.0 — Pour-Over Mode, AI-Free Operation & Faster Profiles
MeticAI v2.1.0 — Pour-Over Mode, AI-Free Operation & 95% Faster Profiles
Continuing the biggest MeticAI release yet. v2.1.0 brings full pour-over brewing support with Meticulous machine integration, the ability to run entirely without AI, dramatically faster profile generation, and a beta testing program — plus localization, developer tooling, and dozens of quality-of-life improvements.
🎯 Marquee Features
☕ Pour-Over Mode with Machine Integration
A complete pour-over brewing experience with three distinct modes:
- Free Mode — Manual timer and scale tracking with flow rate display, perfect for any technique
- Ratio Mode — Set your coffee-to-water ratio and let MeticAI guide your pours with real-time weight targets, bloom tracking, and auto-tare
- Recipe Mode — Follow famous pour-over recipes step-by-step (Hoffmann V2, Tetsu Kasuya 4:6, Scott Rao V60, Lance Hedrick Single Pour, and more) with precise timing and weight guidance
All three modes integrate directly with the Meticulous hardware — MeticAI creates a temporary profile, loads it onto your machine, monitors the shot lifecycle (idle → preparing → ready → brewing → drawdown → purging → done), and cleans up automatically. Drawdown timing continues after the shot ends with an on-chart annotation.
🚀 Up to 95% Faster Profile Generation
A new distilled knowledge mode (now the default) reduces prompt tokens by 61%, cutting generation time dramatically. Combined with the new OEPF validation pipeline with automatic retry and real-time SSE progress tracking (5-phase segmented progress bar with elapsed time), profile creation is faster and more reliable than ever.
🔓 AI-Free Operation
Gemini API key is now fully optional. MeticAI gracefully hides all AI-dependent features when no key is configured — you get full machine control, pour-over mode, shot history, and settings without any AI dependency. Perfect for users who want a clean espresso dashboard without AI profile generation.
🧪 Beta Testing Program
Opt in to beta updates directly from Settings. Includes:
- One-toggle beta/stable channel switching
- Automatic Watchtower-compatible image tag management
- Built-in feedback form that creates GitHub issues
- Smart notifications when newer betas or stable catch-up versions are available
- Full i18n support across all 6 languages
🔧 Additional Improvements
- Localization (i18n) — Comprehensive English and Swedish translation coverage; framework for German, Spanish, French, and Italian (482+ new translation keys across 6 locales)
- Python SDK Migration — Replaced Gemini CLI subprocess calls with native Python SDK function-calling for better reliability and error handling
- Addon Management — New
scripts/addons.shandscripts/addons.ps1for toggling services (Watchtower, Tailscale, Home Assistant) post-install - Dependency Upgrades — ESLint v10, react-hooks v7 (all 5 strict rules enforced), lucide-react, react-resizable-panels v4, FastAPI 0.135.1, and more
- Profile Robustness — UUID enforcement, partial-data fallback for broken profiles, duplicate profile prevention
- Developer Experience — Integration test suite (21 tests) for real Meticulous hardware, agent configuration, workflow skills, and 8 new Playwright E2E specs
📊 By the Numbers
| Metric | Value |
|---|---|
| Files changed | 135 |
| Lines added | 27,061 |
| Lines removed | 1,605 |
| Commits | 103 |
| Python tests | 689 |
| Web tests | 269 |
| E2E specs | 8 new |
| Total tests | 958+ |
| Issues resolved | 13 |
| Beta releases | 8 |
📋 Issues Resolved
- #176 — AI-free operation (Gemini API key optional)
- #193 — Pour-over mode
- #214 — Python SDK migration (replace CLI subprocess)
- #215 — Addon management scripts
- #220 — Comprehensive i18n localization
- #227 — Token-optimized distilled prompt mode
- #229 — Validation pipeline with retry + SSE progress
- #232 — Temporary/ephemeral profile support
- #235 — Local integration tests with real machine API
- #236 — Beta testing program with channel toggle
- #237 — Pour-over Meticulous machine integration
- #255 — Complex Dependabot dependency upgrades
- #256 — react-hooks v7 strict rule compliance
🛠 Installation
Quick Install (Linux/macOS):
curl -fsSL https://raw.githubusercontent.com/hessius/MeticAI/main/scripts/install.sh | bashDocker:
docker pull ghcr.io/hessius/meticai:v2.1.0Windows:
irm https://raw.githubusercontent.com/hessius/MeticAI/main/scripts/install.ps1 | iexUpgrading from v2.x: If you have Watchtower enabled, the update will happen automatically. Otherwise, run the install script again — it detects existing installations and upgrades in place.
Upgrading from v1.x:
curl -fsSL https://raw.githubusercontent.com/hessius/MeticAI/main/scripts/migrate-to-unified.sh | bashFull changelog: v2.0.5...v2.1.0
MeticAI v2.1.0 Beta 1
MeticAI v2.1.0 Beta 1
Thank you for helping test MeticAI 2.1.0! This is the first beta release of the next major feature update. Your feedback is invaluable — please report bugs, feature requests, and UX issues via the in-app feedback button or by opening a GitHub issue.
What's New in 2.1.0
Pour-Over Mode (New!)
A dedicated pour-over brewing mode with real-time machine integration:
- Ratio-based brewing — set your coffee-to-water ratio and let MeticAI guide you
- Live flow-rate graph with bloom phase indicator and smoothed curves
- Drawdown timing — automatic detection of drawdown phase
- Weigh-from-Scale support — use the machine scale to set your dose
- Auto-start — machine starts automatically when you begin pouring (waits for machine readiness)
- Mobile-optimized UX — swipe navigation, responsive layout, taller graphs on mobile
- Desktop two-column layout for larger screens
AI Profile Creation Improvements
- Token-optimized prompts with distilled espresso knowledge for faster, better profiles
- OEPF pre-validation — profiles are validated against the Open Espresso Profile Format schema before upload, with automatic retry on validation errors
- SSE progress streaming — real-time progress updates during profile generation
- Drag & drop image upload — drop a photo of your coffee bag directly onto the UI
- Profile import fix — imported JSON profiles now correctly upload to the Meticulous machine
- Improved profile summaries with re-import instructions
Localization
- Full English and Swedish translations across all screens
- i18n support infrastructure for additional languages
Beta Testing Program
- Beta channel toggle in Settings — opt in to receive pre-release updates automatically
- In-app feedback button for reporting bugs and suggestions
- Automatic updates between beta versions via Watchtower
Other Improvements
- Optional Gemini API key during installation (AI-free operation supported)
- Post-install addon manager for Watchtower, Tailscale, and Home Assistant
- Improved shot history and analysis history views
- Better error handling throughout
What Needs Testing
This is a beta release. The following areas especially need your attention:
Profile Creation (Priority: High)
- Analyze a coffee bag photo — does the AI analysis look correct?
- Generate a profile — does it validate and upload to the machine successfully?
- Try drag & drop image upload
- Import a JSON profile from file — does it appear on the machine?
- Check the SSE progress updates during generation — smooth or glitchy?
Pour-Over Mode (Priority: High)
- Start a pour-over session in Ratio mode
- Does auto-start work? (Machine should start when you begin pouring)
- Is the live flow graph readable and smooth?
- Does the bloom phase indicator appear at the right time?
- Try "Weigh from Scale" — does it read the dose correctly?
- Test on mobile — is the layout usable? Does swipe navigation work?
- Test on desktop/tablet — does the two-column layout look right?
- Start a new shot after completing one — does it reset properly?
General UX
- Switch between English and Swedish in Settings
- Enable the beta channel toggle — does it show the correct channel?
- Use the feedback button to submit a test report
- Browse shot history and analysis history
Installation
New beta install:
export METICAI_TAG=beta REPO_BRANCH=version/2.1.0; curl -fsSL https://raw.githubusercontent.com/hessius/MeticAI/version/2.1.0/scripts/install.sh | bashExisting users — switch to beta:
Enable "Beta Channel" in Settings, or manually set METICAI_TAG=beta in your .env file and run:
docker compose pull && docker compose up -dDocker pull:
docker pull ghcr.io/hessius/meticai:betaAuto-Updates
If you have Watchtower enabled (default), you will automatically receive:
- Future beta updates (beta 2, beta 3, etc.)
- The stable 2.1.0 release when it ships
No manual intervention needed once you're on the beta channel.
Built from branch version/2.1.0 at commit 648c3a1
MeticAI v2.0.5
MeticAI v2.0.5
What's Changed
- fix: unified 2.0.5 branch for readiness and profile generation (#222)
- Revert "Merge pull request #218 from hessius/feat/2.0.5-version-bump-and-ci-bun-retry"
- fix(updates): improve watchtower detection and diagnostics
- fix(profiles): support data-uri and url image sources in image proxy
- fix(ci): address PR review feedback for Bun retry and version alignment
- chore(release): bump to 2.0.5 and harden Bun setup retries
- fix(commands): prevent auto-start when selecting profile in control center
- chore: add mobile-web-app-capable meta tag
- fix: resolve machine IP from settings across bridge and server
- fix: use React state for profile image fallback handling
- fix: publish real power telemetry to live chart
- fix: add defensive null guards across frontend components
- fix: harden backend data loaders with type validation
- feat: upgrade Docker base image to Python 3.13-slim
- chore(deps): bump fastapi 0.133.0 → 0.133.1
- fix: installer garbled output and volume warnings on lightweight distros
- fix(ci): update bun lockfile and add missing Pester test mocks
Installation
Quick Install:
curl -fsSL https://raw.githubusercontent.com/hessius/MeticAI/main/scripts/install.sh | bashDocker:
docker pull ghcr.io/hessius/meticai:v2.0.5Upgrading from v1.x:
curl -fsSL https://raw.githubusercontent.com/hessius/MeticAI/main/scripts/migrate-to-unified.sh | bashBuilt from commit: 934a933
MeticAI v2.0.1
MeticAI v2.0.1
What's Changed
- chore: bump version to 2.0.1
- fix: propagate METICULOUS_IP to s6 container environment on settings save
- fix: return 503 for machine connection errors, disable strict content-type
- chore(deps): bump fastapi to 0.133.0, fix codecov file→files input
- chore(deps): bump httpx from 0.26.0 to 0.28.1 in /apps/server (#206)
- chore(deps): bump codecov/codecov-action from 4 to 5 (#209)
- chore(deps): bump eslint-plugin-react-refresh (#212)
- chore(deps): bump aiohttp (#211)
- chore(deps): bump uvicorn from 0.40.0 to 0.41.0 in /apps/server (#205)
- chore(deps): bump docker/build-push-action from 5 to 6 (#210)
- chore(deps): bump actions/upload-artifact from 4 to 6 (#204)
- chore(deps): bump actions/setup-python from 5 to 6 (#202)
- chore(deps): bump actions/checkout from 4 to 6 (#207)
- fix: improve install scripts and Windows documentation
- fix: remove Icon\r files that break Windows git clone
- docs: fix incorrect /api/v1/ paths in README (should be /api/)
- docs: add Windows installation guide, update/migration guide, and trim README
Installation
Quick Install:
curl -fsSL https://raw.githubusercontent.com/hessius/MeticAI/main/scripts/install.sh | bashDocker:
docker pull ghcr.io/hessius/meticai:v2.0.1Upgrading from v1.x:
curl -fsSL https://raw.githubusercontent.com/hessius/MeticAI/main/scripts/migrate-to-unified.sh | bashBuilt from commit: 3472efd