Changelog
We ship every week. Here are the most recent releases — new features, UX improvements, performance, security. For what's coming next, see the public roadmap.
The internal admin now sees 3 KPIs up top (last 7d/30d/match), plus filters by actor, target type and date range. distinctActions is computed DB-side so rare actions are never lost.
After the final wizard step there's no more instant redirect: CSS confetti + a summary card with monitors/categories/active setup, with CTAs to /admin or /home.
A /pay/loyalty page to switch on a digital stamp card: required stamps, reward label, min spend. KPI overview with stamps issued and rewards redeemed.
Three new SEO-friendly routes: pricing with a 15×3 comparison table, 5 case studies with KPIs, and a 20-term glossary with DefinedTermSet JSON-LD.
A feature-by-feature table across all 5 competitor comparisons (tilby, soluti, di tiziano, zucchetti, lightspeed). Factual tone, copy written IT-first.
The 404 page is now IT-first, with a peach→mint gradient, 4 shortcut cards and a search box that leads to a filtered /blog?q=.
/ms/recipes now calculates food cost % live as you type the ingredients. MarginBadge turns mint/amber/red below/above the 30%/40% thresholds.
/ms/menu-import: bulk-add 500 rows with a category/name/description/price/allergens header. Maps IT allergens → EU14 enum codes.
Block B's command palette extended to all 3 tool shells. Search monitors/products/payments with keyboard-only navigation.
FFL bundle under the 200kB target. Dynamic imports on /pay/reports and /admin-internal/money. Framer-motion swapped for CSS transitions where it made sense.
A single raw SQL query instead of groupBy+map in JS for the /admin-internal cockpit. p95 from 480ms to 80ms.
WebhookEvent persisted with a unique on event.id. Retries from Stripe no longer duplicate ledger entries or refunds. Payment-failed email to the customer.
Shell + cockpit + customer 360 + money + team + Cmd+K. Block A of the K1-K30 cycle completed.
All empty states moved to warm-v2: mint for success-adjacent, peach for neutral, lavender for data-empty.
Composite indexes on (restaurantId, createdAt DESC) for the dashboards' top queries. Dashboard p95 from 800ms to 120ms.
Layout group, active prefetch, breadcrumb consistency, Cloudinary auto-format, bundle analyzer setup. The foundation of the new design system.
Monitor downtime heatmap, webhook delivery log with manual replay.
A single button (minimal circle) + preset chips for support requests.
Earlier versions are consolidated into macro-releases. For details on individual fixes, get in touch.
We start with a site visit and a trial menu. It's your call.
Get a free quote