Releases: micha16372/everyday-runtime
Release list
v0.4.1 — New look
Changed
- New look: colour tokens from Radix Colors (MIT), Tabler icons (MIT), ring gauges
for "how likely needed" (estimates marked with~and a dashed track), product
avatars by category, bottom navigation on phones, deal cards with the usual price
struck through, and tappable assistant suggestions built from your own products. - Punchier copy in English and German: shorter, active, benefit-first. Tabs are
now Now, List, Pantry and History. Estimates are still clearly marked as guesses.
Fixed
- Taps on icons now reach their buttons (SVG
pointer-events).
Docs
Everyday Runtime v0.4.0 — Talk to your list
Talk to your shopping list — in German or English, for free — and let any AI assistant or automation use it.
„Hab 2 Milch für 1,98 gekauft beim Discounter“ → Notiert: 2 l Milch gekauft für 1,98 € bei Discounter.
Added
- Talk to your list: a free, offline German/English sentence parser on Now —
“Milch ist leer”, “2 Kaffee auf die Liste”, “Hab 2 Milch für 1,98 gekauft beim
Discounter”, “Was brauchen wir?”, “Ist Kaffee gerade günstig?”. Answers come from
the engine, in the language you use; voice via the phone keyboard microphone. - AI tools for Twenty's AI chat / MCP:
everyday-needs,everyday-product,
everyday-updateand theeveryday-shoppingskill. The model talks, the engine
decides — small models and few tokens are enough. - docs/AI.md (English and German): the AI tiers and why they stay cheap.
- MCP: the tools appear in Twenty's own MCP server (
/mcp) as
app_everyday_needs,app_everyday_product,app_everyday_update, so any MCP
client (Claude, ChatGPT connectors, Cursor …) can read and update the list. POST /s/talk: one sentence in, answer out — for phone shortcuts, Home
Assistant, n8n, chat bots and NFC tags.- Twenty workflow actions “Everyday: what do we need?” and “Everyday: record what
happened” (e.g. a weekly list by email). - docs/INTEGRATIONS.md (English and German) with ready-to-use examples.
Tests
177 unit tests (including 40 real phrasings), 8 integration tests that call the AI tools and POST /s/talk against a real Twenty server, CodeQL and dependency review. The tools were also executed through Twenty's MCP server (tools/list → execute_tool).
Upgrading
git pull && yarn install && yarn twenty apply. No data model change. To use the AI chat, configure an AI provider in your Twenty workspace; the talk box works without one.
Docs: AI.md · INTEGRATIONS.md · ROADMAP.md
Everyday Runtime v0.3.0 — German, active questions, price radar
Everyday Runtime now speaks German, asks before it guesses, and knows what things usually cost.
Kaffee — 4,99 € statt sonst ~6,79 € · Guter Preis: 4 Pck. kaufen — reicht etwa 48 Tage, spart etwa 7,20 €.
Added
- German user interface (#11): all screens, explanations, prices and questions
in German or English; follows the Twenty user language, with a DE/EN switch. The
demo household is German when the app is. - Active questions (#28): “Still enough coffee?” — the app asks where one answer
helps most (at most three, never nagging). - Price radar (#29): price history per product, usual price and recent low,
great/good/usual/expensive judgement while typing a price, price alerts,
stock-up recommendation with estimated saving, “Good prices for you” on Now. - Open Food Facts / Open Prices (#30): product data and community prices by
barcode, on request, viaGET /s/community-prices; importable as price
observations. - New
PriceObservationobject; products get shelf life and a price alert. - Vision (English and German), re-planned roadmap with milestones.
Changed
- The domain returns translatable messages next to the English texts; the English
output andGET /s/needsare unchanged. - Privacy documentation describes the one optional outside call (barcode to Open
Food Facts).
Tests
128 unit tests (engine, questions, prices, deals, Open Food Facts parsers, German rendering, a check that every UI text is translated), 3 integration tests against a real Twenty instance, CodeQL and dependency review in CI; browser run-through in English (desktop, 390 px touch, dark) and German.
Upgrading from 0.2.0
git pull && yarn install && yarn twenty apply. The new PriceObservation object and product fields are added automatically; existing data is untouched.
Privacy note
The only outside call is optional: “Community prices” sends a product's barcode to Open Food Facts / Open Prices when you press it. See PRIVACY.md.
Where this is heading: VISION.md · Deutsch · ROADMAP.md · Try it: DEMO.md
Everyday Runtime v0.2.0 — Quantities and corrections
Everyday Runtime estimates what a household probably needs — with a confidence and a reason — instead of pretending to track exact stock. This release makes the estimates respond to how much you buy and to your corrections.
Milk — Bought today · 3 l usually lasts ~7 days
Added
- Quantity-aware estimates (#2): purchase quantities give a typical use per
day; a bulk purchase lasts longer, a small one runs out sooner. Reported
consumption with a quantity moves the expected run-out by the share used. - Learning from corrections (#3): earlier “Empty” and late “Still have it”
reports adjust how long a product is expected to last (bounded to 0.5–2×, a
single report counts half), explained in “Why?”. - Product details show “Lasts about”, the typical use per day and a “Learned from
your corrections” hint. - DEMO.md: a three-minute walkthrough of the workflow, with updated screenshots.
- Governance: CODE_OF_CONDUCT (Contributor Covenant 2.1), SUPPORT, MAINTAINERS.
- Dependabot configuration (grouped monthly updates) and a dependency review
check on pull requests; CodeQL default setup enabled for the repository.
Fixed
- Switching tabs kept the scroll position; on phones the Products tab opened
below its search field. Each tab now starts at the top. - “Use per day” is rounded coarsely (e.g. ~0.4 l instead of ~0.41 l).
- Accessibility (axe): no
tabpanelrole on<main>, no heading-level jump in
product details.
Changed
- Tooling: oxlint 1.85, GitHub Actions
checkout/setup-nodev7 and
dependency-review-actionv5 (Dependabot); the test configs use Vite's built-in
resolve.tsconfigPathsinstead of thevite-tsconfig-pathsplugin. - CONTRIBUTING describes branches, the pull request workflow, commit expectations
and scope. - The npm publish workflow runs on demand only (it no longer starts on version
tags) and enables Corepack. - Actions from
twentyhq/twentyare pinned to a commit SHA instead ofmain.
Tests
- 89 unit tests (41 for the inference engine), lint and typecheck; 3 integration tests against a disposable Twenty instance in CI; CodeQL and dependency review.
- Manual browser run-through on desktop, 390 px phone (touch) and dark mode: 33/33 workflow steps, no console errors, no HTTP 5xx, no axe violations in the app region.
Upgrading from 0.1.0
No data model change: git pull && yarn install && yarn twenty apply. Existing observations are used as they are; estimates for products bought with varying quantities or with earlier “Empty” reports may change — the “Why?” panel explains how.
Known limitations
Unchanged from 0.1.0: whole history is loaded into the browser (#6), English UI only (#11), one household per workspace (#4), Twenty's aria-disabled widget container (#12).
Try it in three minutes: DEMO.md · ROADMAP.md · CONTRIBUTING.md
Everyday Runtime v0.1.0 — Explainable Smart Shopping
First public release of Everyday Runtime — a self-hosted shopping assistant, built as a Twenty app, that estimates what a household probably needs from partial information. It does not try to track exact stock; it gives a probability, a confidence and a reason.
Milk — Probably low · 89%
Last purchased 6 days ago · usual interval ~5 days
What's in 0.1.0
Explainable inference — a deterministic engine in plain TypeScript (src/domain), no AI service or API key needed. Per product it returns a state (confirmed / likely / possible / unknown), a confidence, a need score and a one-line reason. It handles direct reports (empty, needed, bought, still there), purchase rhythms (median of recent intervals), consumption, conflicting reports and stale evidence. Every suggestion has a “Why?” with the full explanation. Direct reports are labelled Confirmed, inferences Estimate.
Now — what is probably needed, with percentage, a plain headline and the reason.
Shopping list — quick add (2 milk, coffee x3), items added by a person vs. suggested ones (with the confidence at the time), mark bought with quantity and optional price and store, “Not now” for suggestions.
Products — per-product details (last bought, usual interval, confidence, recent evidence) with It’s empty, Still have it, Bought, Add to list, Archive.
Activity — every observation grouped by day: exactly the evidence the engine uses.
Demo household — five products that show each rule within a minute.
GET /s/needs — authenticated JSON endpoint with the same results, as groundwork for integrations.
Self-hosted and private
All data stays in your own Twenty workspace. The app has no backend of its own, no telemetry and makes no third-party calls. See docs/PRIVACY.md.
Twenty integration
Four custom objects, one full-page front component, one logic function route. Tested against Twenty 2.42 (twenty-sdk 2.42.0). Installation: see the Quick start.
Tests
- 75 unit tests (28 for the inference engine), lint and typecheck in CI
- 3 integration tests running the main workflow against a disposable Twenty instance in CI
- manual browser run-through on desktop, 390 px phone width and dark mode
Known limitations
- The whole history (up to 2,000 observations / 1,000 list items) is loaded into the browser.
- Purchase quantities are stored but not yet used for estimates.
- One household per workspace; no per-person attribution in the UI.
- English UI only.
- Twenty renders the app inside a container marked
aria-disabled="true"; some screen readers may announce it as disabled. GET /s/needswithout a token returns HTTP 500 from the Twenty server instead of 401.
Next
ROADMAP.md · Contributions and real-world feedback welcome: CONTRIBUTING.md. If a suggestion felt wrong, please use the “Suggestion felt wrong” issue template.
Full changelog: CHANGELOG.md