Changelog

We ship every week. Here's the receipt.

V5 Ultimate is currently on v5.10.001.407. Every customer-visible change lands here the day it ships — new modules, improvements and fixes. Subscribe in-app to get an unread dot when there's something new.

Release notes

Most recent first.

Doc intake — Wave 3 (bulk Apply + alias learning loop)

Deep-extract recommendations are now actionable in bulk. Tick the rows you trust, hit "Apply N selected", and for every match we silently write the supplier-side spelling into the vendor / customer / item alias tables — so the next document with the same supplier text matches instantly with no AI call needed. Each row now also shows a short human-readable match reason, up to three alternative candidates (with their similarity scores and what they matched on), and a normalized UoM/pack-size chip. Applied rows dim with a green checkmark so it's obvious what's already been actioned without losing the audit trail.

  • newBulk Apply on the intake AI panel — select all, select matches only, or pick individual rows; one click stamps applied_at on each rec.
  • newPer-row "Teach" button on matched recs — writes the supplier-side alias so the same spelling auto-matches next time with zero AI cost.
  • improvedEach recommendation now shows match reason, top-3 alternatives (clickable to inspect score + match field), and a normalized UoM/pack chip.
  • improvedApplied recommendations dim with a green checkmark and a timestamp — clear audit trail of what's already been actioned.

Doc intake — Wave 2 (server-side fuzzy matching + alias learning + UoM normalizer)

Deep-extract matching just got dramatically better. Vendor / customer / item / bin lookups now run server-side with pg_trgm trigram indexes — accurate even on huge catalogs, and fast enough to return top-5 candidates per entity. Every match comes with an explanation ("supplier code matched ours exactly", "name similarity", or "we've seen this spelling before"), top-3 alternative candidates if you want to override, and a normalized UoM/pack-size (25 KG bag → qty 25, uom kg, pack bag). New alias tables (vendor_aliases / customer_aliases / item_aliases) are in place so when you accept a match, the supplier-side spelling is remembered and the next document scores a perfect hit automatically.

  • newpg_trgm-powered match_vendors / match_customers / match_items / match_locations RPCs return top-5 ranked candidates with attribution (code_exact / name / code / alias).
  • newVendor, customer and item alias tables — auto-learn supplier-side spellings so repeat docs match instantly.
  • newUoM + pack-size normalizer: "25 KG bag", "BOX/12", "1x500ml bottle" all parsed into structured { qty, uom, pack }.
  • improvedMatch explainability — every push recommendation now carries a human-readable reason and up to 3 alternative candidates.

Doc intake — Wave 1 complete (dedup, attachment recursion, totals reconciliation)

Wave 1 of the universal doc-intake hardening plan is now live end-to-end. Uploading the same file twice is free — we hash every file on the way in (SHA-256) and reuse the prior AI analysis instead of re-running expensive passes. Drop an email file (.eml) and every attachment inside it is now uploaded as its own child intake row, linked back to the parent. Deep-extract now also reads the table footer: subtotal, tax, shipping, grand total and currency are captured, and if the line items don't add up to the printed total, a high-visibility ⚠ reconciliation warning is raised so you catch supplier errors before they hit your books.

  • newFile-hash duplicate detection — re-uploading the same PDF reuses the prior classification + deep-extract instead of re-running AI.
  • newEmail attachment recursion — .eml / .msg files now spawn a child intake row per attachment, linked via parent_file_id.
  • improvedDeep-extract now reads document totals (subtotal, tax, shipping, grand total, currency) and reconciles them against the line-item table.
  • improvedLine-item schema gained line_total and country_of_origin to support supplier-side audit + duty calculation.

Doc intake — Wave 1 foundations (email attachments + dedup schema)

First slice of the universal doc-intake hardening plan. Email files (.eml/.msg) now have their base64 attachments pulled out and surfaced as separate child files — the next upload pass will treat each as its own intake row. Schema is also in place for file-hash duplicate detection (so the same PDF uploaded twice stops re-running expensive AI passes) and parent/child linkage between an email and its attachments.

  • improvedEML / MSG parser now extracts base64 attachments and lists them in the email body summary.
  • improvedDocument intake schema gained file_sha256 (for dedup) and parent_file_id (for email → attachment linkage). Wiring into the upload flow follows in the next release.

Doc intake — universal file acceptance + AI deep-extract

Doc intake now accepts ANY file type — PDFs, images, CSV/XLSX, HTML, RTF, EML/MSG emails, Word/ODT, JSON, source code, plain text, even unknown binaries — and never rejects an upload. After the fast classifier finishes, each file gets a 'Run deep extract (GPT-5)' button: heavy-reasoning AI pulls every party, document number, line item and bin out of the file, fuzzy-matches them against your vendors, customers, items and warehouse bins, and shows one-click 'Open' (existing match) or 'Create' (prefilled new) actions. Designed for messy real-world docs: a supplier PO, sales order, packing list, CoA, supplier email — all flow through the same pipeline.

  • newUniversal extractor: HTML, RTF, EML/MSG, DOCX, XLSX, ODT, JSON, XML, source code and unknown text-shaped binaries all parsed in-browser. No more 'unsupported file type'.
  • newAI deep-extract (GPT-5 with high reasoning) — extracts parties, documents, line items, locations and free-text notes from every classified file.
  • newPush recommendations: each extracted entity gets a 'match existing' or 'create new (prefilled)' action with confidence score, ready to apply from the intake row.
  • improvedDaily soft cap of 200 deep extracts per workspace prevents accidental AI-credit drain.

Doc intake → one-click bin import

Drop a CSV or XLSX export of warehouse bins / racks / location codes into Doc intake and click 'Import bins from this file' — the warehouse importer now opens with the file already parsed and the preview filled in. Pick the target warehouse, review, and click Import. Zones, aisles and racks are auto-created if they don't exist; duplicate bin codes are skipped. Same flow works for files you upload from any source — CSV, XLSX or pasted text.

  • newIntake files classified as `locations` now route to /app/warehouse/import with the rows pre-loaded — no copy-paste between screens.
  • improvedWarehouse importer accepts XLSX as well as CSV (each sheet flattened to CSV in the textarea).
  • improvedExisting intake files already classified as `locations` were re-pointed at the importer so the 'not found' dead-end is gone.

Linked items tab — one place to build a product / formula

Every approved formula now has a Linked items tab — a single canvas to attach the line-clearance checklist, equipment & assets, SOPs / documents / training, and finished testing / labels / packaging. No more hunting through menus to wire a new product up. Scheduling a work order is never blocked: if any linked item needs attention (cal due soon, SOP pending revision, training overdue), a soft FYI dialog lists them and a single Schedule anyway button continues to the work-order form. The earlier hard-block + manager override e-sig has been retired — training enforcement still happens at the kiosk on the day, where it belongs.

  • newLinked items tab on /app/formulas/$id — 4 sections (line clearance & checklists, equipment & assets, SOPs / documents / training, testing / labels / packaging) with per-section Link / Add buttons.
  • newHeader chip shows 'All linked' or 'N to review' — informational, click to jump to the tab.
  • newSchedule attention dialog: when items need review, lists them at click time and proceeds on a single Schedule anyway button — no e-signature required.
  • improvedRemoved the hard-block + manager override flow on Start work order. Scheduling is never blocked from the master; operator-level gating (training, calibration) still enforces at the kiosk.

Glossary pillar cluster — 5 long-form guides + compliance deep-links

Four new 4,000-word pillar pages join 21 CFR Part 11: eDHR (820.184), eBMR (211.188), MMR (211.186) and FSMA 204. /compliance now deep-links into specific anchors of each guide so search engines see one topical cluster, not five orphan pages. JSON-LD upgrades on every pillar: BreadcrumbList, Article image + dateModified, named author, hasPart anchors, visible <time> + byline.

  • new/glossary/edhr, /glossary/ebmr, /glossary/mmr, /glossary/fsma-204 — each a ~4,000-word pillar with sticky ToC, sources, FAQ, full schema.
  • new/compliance now has a Deep dives section with 20 contextual deep-links pointing at specific clause anchors inside the long-form glossary entries.
  • improvedLong-form glossary schema now emits BreadcrumbList JSON-LD, Article image + dateModified, named author, and hasPart anchors for every section.
  • improvedVisible byline + <time> element on every pillar page (E-E-A-T signal for YMYL/regulatory content).

Long-form glossary pillar pages

Flagship 4,000-word guide for 21 CFR Part 11 — first of five SEO pillar pages.

  • new/glossary/21-cfr-part-11 is now a full 4,100-word pillar page with sticky ToC, sources, FAQ, Article + FAQPage schema.
  • newLong-form glossary schema (src/data/glossary-longform) — any glossary slug can be upgraded from short dictionary entry to pillar page.
  • improved/glossary/$term auto-detects long-form entries and renders the richer layout; falls back to the existing short layout for the other ~80 terms.

Marketing · Glossary + global Cmd-K search

Two big findability upgrades. (1) A new /glossary owns the SEO for every regulated-manufacturing acronym — eDHR, eBMR, MMR, DHR, DMR, DHF, CoA, 21 CFR Part 11, EU Annex 11, GAMP 5, CSV/CSA, IQ/OQ/PQ, FSMA 204, KDE, CTE, GS1-128, SSCC, EDI 856, UDI, DSCSA, MoCRA, PIF, HACCP, CCP, RG 1.86, 21 CFR 212, QP release, ISO 13485/9001, FSSC 22000, SQF, BRCGS, GFSI, MES/WMS/QMS/ERP/LIMS, SDS, FEFO/FIFO, OEE, SOP and more — each with its own /glossary/$term SEO page, related industries, related V5 features, related terms, JSON-LD DefinedTerm markup and CFR/ISO anchors. (2) A global Cmd-K (or '/') command palette across the marketing site searches industries, features, glossary, changelog and key pages in one place. Search button now sits in the header.

  • new/glossary index with full-text search, category and industry filters, A-Z jump nav.
  • new/glossary/$term per-term SEO pages with regulatory anchors, related industries, related features and JSON-LD DefinedTerm markup.
  • newCmd-K / Ctrl-K command palette searches industries, features, glossary, changelog and static pages.
  • newInline <Term> tooltip component — wrap any acronym to get a dotted-underline link to its glossary entry.
  • improvedSearch button added to the marketing header.

Marketing · ROI calculator — industry-specific

The /roi-calculator is now industry-aware. Pick from 9 industry profiles (Pharma, Medical Devices, Dietary Supplements, Food, Bakery, Cosmetics, Radiopharma, Cannabis, Process & Consumer) and the inputs, savings drivers, defaults and terminology all retune. Pharma sees BMR + QP release + deviation + CAPA cycle; medical devices sees DHR + UDI + CAPA + complaints; food sees FSMA 204 CTEs + recall scope + CCP holds; bakery sees allergen changeover + mislabel events; cosmetics sees MoCRA listings + PIF + adverse events; radiopharma sees decay correction + conditional release + RG 1.86 surveys; supplements sees CoA review + late identity failures + label-to-formula. URL carries ?industry=slug so each industry result is shareable. Country switcher dropdown also fixed — it no longer overflows the right edge of the screen on iPhone.

  • new9 industry-tuned ROI profiles, each with its own inputs, savings lines, defaults and record terminology (BMR / DHR / BPR / batch record).
  • new?industry=<slug> URL parameter — every industry result is a shareable link.
  • improvedCountry switcher dropdown now anchors to the right edge so it stays on-screen on mobile.

Platform · Leads — auto-enrich on capture

Every captured lead (Ask V5 chat or 'email me this thread') is now auto-enriched in the background. We extract the company domain from the email (free hosts like gmail/outlook are skipped), then call Hunter for decision-maker contacts and Google Places for HQ address, phone and website. Results land on the lead row and flow straight into the Slack hot-lead alert, so sales sees the company HQ + 3 likely decision-makers in the same Slack ping.

  • newLead rows now carry company_domain, hq_address, hq_phone, hq_website, and contacts (top 5 decision-makers).
  • newSlack hot-lead alert includes HQ details + top 3 decision-makers with mailto links.
  • improvedEnrichment is fire-and-forget, deduped 30 days, and won't slow down the chat response.

Platform · Visitors — Slack hot-lead alerts

Sales no longer has to refresh /platform/visits. A bot now pings your Slack channel every 15 minutes whenever (a) a marketing lead crosses the 'ready' intent threshold or (b) an identified company visits /pricing, /book-a-demo, or 3+ pages in one session. Each alert links straight back to the lead or session in V5. Alerts are deduped per lead/session so the channel never gets spammed. Channel defaults to #sales-alerts and is overridable via the SLACK_ALERTS_CHANNEL secret.

  • newSlack alerts via the V5 Visitor Bot when a hot lead or hot identified session lands.
  • newDedup table marketing_alerts_sent — every lead/session pings sales exactly once per rule.
  • newCron job 'visitor-alerts-15m' (every 15 min) calling /api/public/hooks/visitor-alerts.

Platform · Visitors — DIY visitor intel (IPinfo + Hunter + Places)

Anonymous website sessions are now auto-enriched with the visitor's company name and logo (reverse-IP via IPinfo, cached 30 days). Click 'Find contacts' on any identified session and we pull decision-makers + roles from Hunter and HQ address/phone/rating from Google Places — all without leaving /platform/visits. RB2B and Albacross trackers are wired in too; drop a VITE_RB2B_SITE_ID or VITE_ALBACROSS_SITE_ID env var to enable either one on the marketing site.

  • newReverse-IP company resolution on every marketing pageview (IPinfo, cached per network).
  • new'Find contacts' dialog on identified sessions — Hunter decision-makers + Google Places HQ details.
  • newNew 'Identified company' filter and headline stat on /platform/visits.
  • newRB2B + Albacross script slots gated on env vars — set VITE_RB2B_SITE_ID / VITE_ALBACROSS_SITE_ID to turn on.

Platform · People — company intel from email

The platform People list now infers a company for every subscriber from their email domain. We strip the obvious free-webmail domains (gmail, hotmail, yahoo, icloud, proton, etc.) and the kiosk-local fake domains, and for everyone else we show a small favicon, the company name, and a clickable link to their website — so you can size up who a lead actually works for without leaving the row. Free-email users are flagged as 'Personal / free email — no company inferred'. Search now also matches on the inferred company name and domain.

  • newInferred company name + favicon + website link under every email on /platform/people (desktop and mobile).
  • newFree-webmail and kiosk-local addresses are explicitly called out so they don't masquerade as company contacts.
  • improvedPeople search now matches the inferred company name and email domain as well as email / display name / workspace.

Reports — single V5 logo, top-right only

Cleaned up the report branding so every regulated PDF (BMR, eDHR, CoA, MMR, SOP, Operational, Quality Record, COGS, APR, Validation Pack, Checklist paper fallback) carries the V5 wordmark once — top-right of the page header — and nothing in the bottom-left footer. Footers now show only the tenant / WO / page-number line so customer-branded reports read as the customer's, not as a V5 mock-up.

  • improvedRemoved the small V5 chip from the bottom-left of every report footer; the V5 logo lives only in the page header top-right.

Printable checklist PDF — branching, skip-to & section headers

The Print PDF for a checklist template now mirrors the full digital flow. Section headers render as full-width navy bands. Each question shows its branching logic inline — 'Shows when #3 = Yes', 'Required when #5 is FAIL', 'On FAIL → skip to #12' — plus the On-fail action (open deviation / place on hold / block release). Auditors comparing the paper copy against the digital execution now see the same conditional behaviour on both sides.

  • improvedChecklist 'Print PDF' now renders section headers, AND/OR visibility, required-if rules, skip-to targets and On-fail actions inline next to each question.
  • fixedPaper fallback PDF no longer hides branching — printed copies match what the operator sees in the runner / wizard.

Checklist wizard — swipe, keyboard nav & slide animation

Polished the new step-by-step Wizard. Steps now slide in (right for Next, left for Back) with a reduced-motion fallback. On phones / tablets you can swipe left/right between steps; on desktop you can press ← / → to step through (ignored while typing). Footer shows a subtle hint so operators discover the shortcuts.

  • improvedSlide-in animation between wizard steps (direction-aware, respects prefers-reduced-motion).
  • newSwipe left/right on mobile to advance or go back in the checklist wizard.
  • newArrow-key navigation (← / →) between wizard steps on desktop — ignored while typing in inputs.

Checklist runner — wizard mode (one step at a time)

The runner now has a true step-by-step Wizard alongside the classic All-at-once list. Wizard mode shows one question with a progress bar and Back / Next controls — auto-defaults on phones and at the kiosk; switch any time from the toggle in the header. Section headers render as full-width dividers between groups of questions. Combined with the AND/OR branching engine, this gives you Conditional Logic, Decision Tree, Progressive Disclosure and Wizard / Step-by-Step in one runner.

  • newWizard mode in ChecklistRunner — one item at a time, progress bar, Back / Next, auto-jumps to the next pending answer.
  • newList / One-at-a-time toggle in the runner header — default is Wizard on mobile + kiosk, List on desktop.
  • improvedSection headers now render as a labelled divider step (clear visual break between groups of questions).
  • improvedSign & complete moves into the wizard footer on the last step — no more scrolling past every item to close out.

Checklist builder — branching engine + mobile polish

Each item now folds its expected/limits/on-fail/branching/skip-to/image controls behind two tap-to-expand disclosures (Logic & rules · Reference image), so the builder is usable one-handed on a phone. The branching engine now supports multiple AND/OR conditions (e.g. show Q7 only when Q3=Yes AND Q5 failed), skip-to (jump to question N or End when an item passes/fails/is answered — skipped items auto-N/A in the runner), and section headers as visual dividers. The runner evaluates everything live and stays back-compatible with existing single-condition show_if rules.

  • improvedMobile-first checklist item cards — prompt + kind + severity stay visible; everything else lives behind tap-to-expand Logic & rules and Reference image disclosures.
  • improvedBranching engine: multiple AND/OR conditions per item (Conditional Logic · Decision Tree · Adaptive Questionnaire).
  • improvedSkip-to / jump-to: when an item passes, fails, or is answered, jump to a later question or End — skipped items auto-marked N/A in the runner.
  • improvedSection headers as visual dividers between groups of questions.
  • improvedRunner honours the new visibility + skip rules and stays back-compatible with existing show_if items.

Sidebar — distinct icon per menu item

Swept the nav registry for duplicate icons. The flyout panels and module landing tiles now show a unique glyph per destination so operators can scan by shape, not just by label. Worst-case duplication dropped from 11 uses of the same icon down to 4, all of which are intentional (module-canonical entries).

  • improvedManufacturing: Production setup now uses a hard-hat, Work Orders a scroll, Mixing vessels a cooking pot — no more three-Factory clash inside one panel.
  • improvedWarehouse: Warehouse setup → grid, Receiving → archive-in, Pick waves → ordered-list, Load planner → route.
  • improvedOrders: Vendors → store-front, Customers → user-check, Contacts → people-round, Sales Orders → tag, Ad-hoc transfers → shuffle, Reorder Suggestions → lightbulb.
  • improvedQuality: QA Release / Batch release / CAPA / Postmarket / Complaints / Inspections / Supplier compliance / ASL each got their own icon — no more shield-on-shield walls.
  • improvedFood Safety: hub → salad, HACCP → soup, Shelf-life → hourglass, Sourdough → chef-hat, Par-baked → git-fork, Rest windows → timer, Waste-to-feed → recycle, Retailer specs → spreadsheet.
  • improvedLaboratory: Lab dashboard → gauge, Reviewer queue → file-check, AWC dossiers → pie-chart file.
  • improvedAssets: Register → hammer, PM → cog, Part requisitions → package — three distinct shapes instead of three wrenches.
  • improvedCompliance: SOP wizard → notebook-pen, Training matrix → bar-chart file, Change requests → pull-request, Supplier read-receipts → book-check, Self-assessment → shield-half.
  • improvedFinance: Labor entries → clock, ERP journal → banknote.
  • improvedAdmin: Print queue → ordered-list, Printers → cable, GS1-128 → scan-barcode, EDI 856 → share, Devices → CPU, Billing → credit-card, What's new → megaphone, Feature requests → lightbulb.

Sidebar — full menu rationalisation across every module

Carried the Quality clean-up across the rest of the app. Warehouse, Orders, Laboratory, Finance, Compliance and Admin / Settings each got their lone-item sections folded together and duplicate hub / parent rows hidden from the sidebar — every page is still reachable via Cmd-K and direct link, the sidebar just stops listing the same thing twice.

  • improvedWarehouse → Setup: 'Warehouses' (sites) merged into 'Warehouse setup', which now reads 'Sites, zones, aisles, bins'. Kiosk 'Receive' shortcut hidden from the sidebar (kiosk has its own Receive tile).
  • improvedOrders: Purchasing hub and Sales hub landing rows hidden — the children (POs, Vendors, Reorders, Invoices / SOs, Customers) are the real entry points.
  • improvedQuality → Audits: the three hash-anchor sub-rows (league table, risk-based scheduling, external auditor invites) hidden from the sidebar — they're in-page tabs on the Audits screen.
  • improvedLaboratory: lone 'Analytics' section removed — SPC charts now sit under Operate alongside the reviewer queue and control tower.
  • improvedFinance: lone 'Understand' section removed — Cost model explainer now sits under Overview alongside the Finance hub.
  • improvedAdmin / Settings → Integrations: parent 'Integrations' row hidden — Devices, ERP bridge, QuickBooks Online, SMS provider and Calendar sync are the real destinations.

Sidebar — rationalised flyout menus + industry-aware filtering on mobile

Reorganised every flyout menu so related pages sit together. Quality now reads Release → Investigations → Audits → Risk & Change → Suppliers → Checklists & Logs → Training → Reviews → Food Safety. Admin reads Workspace → Labels & Print → Shipping & EDI → Integrations → Billing → Feedback. Manufacturing leads with Setup → Engineering → Execution → Daily. Industry gating now also applies on phone and tablet — a supplements workspace no longer sees bakery sourdough or radiopharma vaults in the More sheet. Several duplicate or superseded entries (placeholder SPC under Quality, AI-draft audit checklist, intake activity, count schedules, checklist bindings) are hidden from the sidebar but still searchable via Cmd-K.

  • improvedQuality flyout regrouped into eight clear sections — Release, Investigations, Audits, Risk & Change, Suppliers, Checklists & Logs, Training & Calibration, Reviews — so related actions sit together instead of being scattered.
  • improvedManufacturing flyout reordered to Setup → Engineering → Execution → Daily, matching how operators actually build a line and run a shift.
  • improvedAdmin / Settings flyout collapsed from eight sub-sections to six: Workspace, Labels & Print, Shipping & EDI, Integrations, Billing, Feedback.
  • improvedMobile More sheet now hides menu items that don't apply to your industry — same filter the desktop rail already used.
  • improvedHidden from the sidebar (still in Cmd-K): placeholder Quality SPC chart (lab SPC is the real one), AI-draft audit checklist, Intake activity report, Count schedules, Checklist bindings, Warehouse wizard.

Sidebar — red notification badges show where to look

Operators no longer need to hunt through menus to find what needs action. The desktop rail icons, flyout menu rows, and mobile bottom tabs now show a small red count badge whenever there are open items waiting in that section.

  • newModule rail icons show a red count badge when any of their pages has open items waiting (e.g. Quality lights up when there are lots awaiting release or open deviations).
  • newFlyout menu rows show a per-page red badge so operators can see exactly which screen to open — Lots awaiting disposition, Open deviations, Released work orders, Failed print jobs.
  • newMobile bottom-tab icons show the same red count so floor staff on tablets get the same at-a-glance signal.
  • improvedCounts refresh every 60 seconds and respect tenant isolation — each badge reflects only your workspace's data.

Printers — one print agent per site, not per printer

The print agent has always been able to drive every printer on its LAN — each job already carries its own host/port. The UI was the only thing making it look like you needed one agent per printer. Settings → Label Printers now has a dedicated 'Print agents' section at the top with one row per Agent ID and a single Download installer button. Printers point at an agent by sharing its Agent ID — re-use an existing one to add a printer to an installed agent, pick a new one only for a different site or network.

  • improvedNew 'Print agents' card on Settings → Label Printers lists each Agent ID, how many printers it drives, and a single Download installer button — so you install once per site instead of once per printer.
  • improvedRemoved the per-printer 'Agent' download button. The Agent ID field in the Add/Edit printer dialog now suggests existing IDs, so adding a second printer to an already-installed agent is a one-click pick.
  • improvedHelp text rewritten to match: one always-on Windows PC per site runs one agent and forwards every queued label to whichever printer the job names.

Printers — tidier print-agent ZIP layout

The downloaded print-agent bundle now keeps just the two things you actually touch — 'Install V5 Print Agent.bat' and README.txt — at the top level. Everything else (the bundled Node.js runtime, wizard, scheduled-task scripts) sits inside a 'files' subfolder so the install folder stays clean.

  • improvedPrint-agent ZIP now puts 'Install V5 Print Agent.bat' and README.txt at the root, and tucks the runtime + helper scripts into a 'files' subfolder. The wizard and advanced fallbacks all still work — just one level deeper.

Printers — Print Agent now installs with a click-through wizard

The downloaded print-agent bundle now ships with a friendly wizard. Extract the ZIP, double-click 'Install V5 Print Agent.bat' and a window appears: Welcome → Install → Finish. The wizard extracts the bundled Node.js, registers the background task and starts the agent automatically — no command line, no .bat editing, no admin steps to remember.

  • newNew 'Install V5 Print Agent.bat' inside the downloaded bundle launches a guided Windows wizard with Next / Install / Finish — designed for users who don't touch the command line.
  • improvedWizard self-elevates to Administrator once, so the Windows Scheduled Task that runs the agent on boot is registered without the user having to right-click anything.
  • improvedOld setup.bat / install-service.bat are still in the bundle as an advanced fallback for locked-down PCs where PowerShell is blocked.

Printers — one-click 'Download print agent' for Windows

Setting up the LAN print agent used to mean copying a token, editing a .bat file and installing Node.js by hand. Now you click Agent on any LAN-agent printer and V5 gives you a personalised, self-contained Windows ZIP — token, agent ID and base URL already baked in, portable Node.js included. Extract, run setup.bat once, done.

  • newNew Download print agent button on every LAN-agent printer row. Generates a fresh bearer token and downloads a ready-to-run Windows bundle (~30 MB) with your credentials baked in.
  • newBundle ships portable Node.js, so the print PC doesn't need anything pre-installed — no admin install, no PATH editing, no command line.
  • newOptional install-service.bat registers the agent as a Windows Scheduled Task: starts on boot, runs hidden in the background, survives reboots. uninstall-service.bat removes it.
  • improvedSettings → Label Printers help text now points at the one-click download instead of the old README path.

Billing — you can now resubscribe to the tier you're already on

If a trial expired or a subscription was canceled, the tier card for your current plan used to show a disabled 'Active' button — leaving owners with no self-serve way back in. The current-tier card now shows 'Resubscribe to {plan}' whenever there's no live subscription, and only locks to 'Active' when a real paid sub is in force.

  • fixedOwners whose trial expired (or whose subscription lapsed / was canceled) can now re-checkout on the same tier from the billing page — no need to contact support or pick a different plan first.
  • improvedThe 'Active' lock on a plan card now requires an actual active / trialing / past-due subscription, not just a stored plan_key on the workspace.

Food Safety menu trimmed — CCP, allergens, glass, pest, sanitation, recalls now live under Checklists

Now that the checklist engine handles decision logic, numeric limits, asset-walks and on-fail outcomes, the duplicate Food Safety menu items have been removed from the sidebar. Direct URLs still work; the Food Safety hub now points operators at Checklists and Asset registers for those activities.

  • improvedSidebar Food Safety section now shows only the things that aren't checklist-driven — HACCP plans, sourdough, bake profiles, silos, yield, par-baked handoffs, country labels, shelf-life rules, retailer specs, rest & proof windows, and waste-to-feed.
  • improvedFood Safety hub gains 'Checklists' and 'Asset registers' tiles at the top so the path from food-safety thinking to the right master / template is one click.
  • improvedRemoved sidebar entries (CCP Monitoring, Allergen Runs, Glass & Brittle Plastic, Pest Control, Sanitation Schedule, Mock Recall Drills, Handoff Exceptions) remain reachable by direct URL so existing bookmarks and audit links don't break.
Showing the last 30 entries. Customers see the full history in-app under "What's new."
Want to try the latest?

Free trial, no credit card. Onboard in days, not months.