Release v0.110.0
Sep 05, 2026
End users get a restart prompt they can postpone, contracts can bill by device role or device group with the exact devices recorded on every invoice, QuickBooks payments flow back onto Breeze invoices, and the customer portal shows customers their security, backups, devices, tickets, and reports — each behind a switch you control. A pre-release sweep of 52 screens and a real-endpoint check of the restart prompt on Windows, macOS, and Linux went in before the tag.
Patching & Restarts
- When a patch needs a reboot, the person at the machine now sees a native restart dialog on Windows, macOS, and Linux and can postpone it — a set number of times, within a deadline you choose in the patch policy. The deadline always wins; the postponement count is the courtesy. Off by default, one toggle per policy.
- The device page shows the scheduled restart, its deadline, and how many postponements have been used, so a technician can see why a machine has not rebooted yet.
- Unrated patches are no longer quietly treated as Low severity. They get an Unrated badge, sort last, stay out of auto-approval unless a ring opts in, and the dashboard calls out how many are waiting.
- Patches that were left stranded as 'pending' after an agent upgrade are now cleared by version comparison, and three cases where a patch dispatch could fail without telling anyone now report the failure.
Billing & Contracts
- Bill a contract line by device role — workstations, servers, switches, firewalls — or by a device group. Breeze counts the matching devices each period; a dynamic group is evaluated live at estimate and invoice time.
- Included quantities and overage: 'up to 25 workstations included', then bill the extras at a second rate or flag them for review. A billed overage becomes its own invoice line under the one it belongs to; a flagged one shows on the estimate and in the billing log, never silently invoiced.
- Every generated invoice records exactly which devices it billed, at the moment it was generated. Expand any counted line to see them, and optionally print a 'Billed devices' appendix on the PDF. Invoices from before this release say they have no device detail rather than guessing.
- Contract lines are editable in place on draft and active contracts, so fixing a price no longer wedges the draft invoice that already references the line. Quotes can price by device set too, with the count refreshed on demand and drift flagged when you send.
- The device Overview gets a Billing card showing which active contract lines cover that device, and coverage warnings on a contract link straight to the uncovered devices.
- QuickBooks Online: push issued invoices to QuickBooks, and payments recorded in QuickBooks are pulled back onto the Breeze invoice automatically — instantly via webhook where configured, and by a sweep every 15 minutes regardless.
- Draft quotes and invoices can change currency from a dialog; the line grid no longer scrolls sideways at laptop widths; and Billing has its own entry in the Settings sidebar.
Customer Portal
- The portal now shows customers what they are paying for: a Dashboard with security score and action items, a Security page with per-device antivirus, firewall, and encryption status, a Backups page with restore points and readiness, a Devices page with patch, protection, and warranty columns plus CSV export, Tickets with SLA badges and a support-usage panel, and a Reports tab that generates and downloads PDF or CSV.
- Each page is a per-organization visibility toggle under the organization's Customer Portal tab, and it fails closed: a page you turn off disappears for that customer server-side, not just in the browser.
- Portal users can be owned by a contact, inbound email requesters become contacts, and a contact can be linked when a customer signs in through Microsoft Entra or the Outlook add-in.
Scripts & Automation
- Every execution and automation-run status now has a badge — nothing renders as a blank — and the groundwork for cancelling a running script is in place for a coming release.
- 'Run again' on a past execution re-opens the run with the same devices and parameters and takes you to the new execution when it starts.
- Choose the run context — System or the logged-in user — everywhere a script can be run, and see which context a past run used.
- A script can write device custom fields from its output: mark a value in the script, and Breeze records it on the device. Clone a script with one action, and hover the custom-field helper in the Script Builder for the syntax.
AI Agents
- Budget alerts: set spend thresholds per partner, pick who gets emailed at each rung, and see the remaining AI credit balance on the usage page.
- Graduation: before an agent is allowed to act unattended, Breeze keeps an evidence ledger of its supervised runs, enforces a partner-set ceiling, and requires a second approver to promote it. An 'Approve and always allow' shortcut records the decision with its evidence.
- An AI Impact page shows daily counters and estimated time saved, with editable weights and a PDF export you can hand to a customer.
- A platform-admin kill switch stops every AI action across the platform with a required reason, and restores it the same way.
- Ticket triage tells you why it skipped a ticket instead of dropping it from the batch, and cards that drift out of scope deselect themselves.
- Everything here stays off until you enable it; the AI agents feature flag and per-agent autonomy settings still gate it all.
Sign-in, Mobile & Access
- If your organization enforces SSO, the login page says so and sends you to it instead of accepting a password that will be rejected.
- A wrong MFA code or password now tells you it was wrong (and rate-limits repeated guesses) instead of signing you out; rotating your recovery codes keeps your current session.
- Mobile: native push on Android, a New Ticket screen, a Reply/Internal toggle on the ticket composer that defaults to internal, and token refresh on every request so a stale session no longer strands the app.
- Partner API: create enrollment keys programmatically.
Remote Access & Agent
- Connect Desktop no longer ends every other live remote session on the device when it starts.
- The Remote Tools tab you were on survives a browser refresh, the terminal fills the window, and a cold Terminal open recovers if its stylesheet fails to load.
- Caps Lock state is synchronised to the remote machine instead of being sent as a keystroke.
- Windows 10 and Server 2016 are now the stated minimum for the agent, and the install one-liner forces TLS 1.2.
- macOS agents stop re-signing themselves on every update, file uploads only advance after delivery is confirmed, and Homebrew upgrade batches clean up after themselves.
Reliability & Housekeeping
- Audit-log retention now actually runs. It was pruning per retention policy, and nothing ever created one. New organizations get a default policy; existing organizations need one saved once under Organization settings → Audit retention before anything is pruned.
- The device Activities tab loads quickly again on busy devices thanks to targeted indexes, and its total is capped at 10,000 rather than counting all history.
- Commands you dispatch show as 'Dispatched' in the activity log until the agent reports back, instead of a premature 'Success'.
- Nightly audit-chain verification is bounded — incremental from the last verified point plus a rolling re-scan — instead of walking the whole table every night.
- Moving a device between organizations now carries or detaches every ticket, intent, and AI-run link it should, and organization erasure no longer trips over restore commands or device-group memberships.
- Backup jobs for one device are serialised so two workloads never run at once, and a retried dispatch no longer creates duplicate child jobs.
- A run of hardening: partner-wide database escalations removed, write access re-revoked on append-only tables, database credentials kept off command lines, and helper session ids no longer embed the host name.
Self-Hosting
- Standard upgrade: bump `BREEZE_VERSION`, `docker compose pull api web portal && docker compose up -d binaries-init api web portal`. Remember `portal` — it is a separate container.
- 54 database migrations apply automatically on first boot. Take a snapshot first. Every index on a table that can be large is built concurrently, so writes are not blocked; backfills log their row counts as Postgres warnings worth reading once.
- No new required environment variables and no breaking changes. Optional new ones: a QuickBooks webhook verifier token, a Firebase service account for Android push, retention knobs for the outbox tables, and an audit-chain verification mode.
- Behaviour to know about: deleting a site that a contract line is scoped to now fails invoice generation loudly instead of billing the whole organization; new partners get inbound email-to-ticket off; audit retention prunes only once an organization has a policy.
- The hosted-only partner trust probation feature is inert on self-hosted installs — no database, cache, or network calls unless the hosted flag is set.
Breeze v0.110.0 is about making the parts of the job that touch other people less awkward. The first is the reboot conversation. Until now, a patch that needed a restart either rebooted on your schedule or waited for a technician to chase the user. Now the person at the machine gets a native prompt and a bounded say in the matter: postpone a few times, within a deadline the policy sets. We tested it on a physical Windows 11 workstation, an Ubuntu desktop, and a MacBook Air before tagging, including letting each of them actually restart at the deadline.
The second is the invoice conversation. Contracts can bill by device role or device group, with included counts and overage, and every generated invoice keeps a record of exactly which devices it counted, so “why is this 27 and not 25” has an answer you can print. QuickBooks users get invoices pushed out and payments pulled back without touching either system twice. And the customer portal now shows your customers their own security, backups, devices, tickets, and reports, each page behind a toggle you control per organization.
For self-hosters this is a standard upgrade: 54 idempotent migrations, all large-table indexes built concurrently, no new required environment variables, and no breaking changes. Two behaviour changes worth a glance before you pull: audit-log retention now genuinely runs once an organization has a policy saved, and deleting a site under a site-scoped contract line fails invoice generation loudly instead of quietly billing the whole organization. Full operator detail is in the GitHub Release notes.