Release v0.106.0
Aug 17, 2026
Quotes become real proposals — themed, branded documents with tables and callouts you edit in place, re-send, and track. Software gets a package-manager library so winget and Homebrew do the installing and updating for you. Tenant variables end the habit of pasting the same customer token into a dozen scripts. Plus Turkish localization, a rebuilt Analytics page, and a round of cross-tenant security fixes.
Quotes & Proposals
- Quotes grow into proper proposals: pick a document theme for your partner account and every quote and contract renders in it — your fonts, your branding, consistent across every customer document you send.
- Build a proposal out of real content blocks — rich text, tables, and callouts — and edit them in place on the quote itself instead of guessing what the PDF will look like.
- Re-send a quote without rebuilding it, copy its share link straight to your clipboard, and see exactly who it was sent to and when.
- New quotes now default to your partner's currency instead of always starting in USD.
- Large quotes no longer overflow when pulled through the AI assistant, and the client name and full-bleed cover art render correctly on draft PDFs.
Software Deployment
- A package-manager software library: install and keep software updated through winget on Windows and Homebrew on macOS instead of hand-managing installer files and download URLs. Search the catalog or enter a package ID directly.
- Software packages can be shared partner-wide, so one package definition serves every customer you manage.
- Windows scanning now sees per-user application updates, not just machine-wide ones — the updates that used to hide from inventory.
- Packages created from a URL record what kind of installer they are, so deployments stop guessing.
Scripting & Automation
- Tenant variables: define a value once — a vendor portal token, an internal repo URL, a customer-specific path — and reference it as {{var.name}} from any script. Breeze fills in the right value per customer at run time, so one script serves your whole client base.
- Mark a variable as a secret and it is never shown again after saving. Secrets can be stored now, but they are not yet delivered to scripts — a script that references a secret variable is rejected when you save it. Secret delivery to scripts is coming in a later release.
- Script parameters can pull their values from these variables, and an approved script run is pinned to the exact values it was approved with — nobody can re-point it after approval.
- AI-generated PowerShell no longer fails to run because of status symbols and smart quotes in the generated code.
- A script result that arrives just after the wait timeout no longer throws away the output the device actually returned.
Visibility & Monitoring
- The Analytics page has been rebuilt — and when data fails to load it says so plainly instead of drawing a chart full of zeros.
- Dashboards stop claiming everything is fine when nothing is enrolled: 'all clear' and 'fleet is healthy' now require devices to actually exist.
- Security tiles show a dash instead of inventing zeros when a stat can't be loaded.
- Paging through long lists no longer shuffles rows between pages.
- Patch details are more honest: installed patches with no recorded date say so, and third-party patch IDs match the catalog correctly.
Devices & Agent
- Fixed an agent uninstall that reported success without actually removing anything.
- EXE-based software deployments no longer hang until the 30-minute timeout — they finish when the installer finishes.
- Windows Defender no longer reports that it is protecting a machine when a third-party antivirus is the one actually running.
- Windows installations always write a log now, so a failed install can be diagnosed instead of guessed at.
- VPN on/off state is reported correctly, including machines with several VPNs configured on macOS.
- Rebooting or shutting down a single device from the device list now asks you to confirm first — it previously fired on one click, while the device page had always asked.
- Device Groups are fixed: edits save, static group membership can be changed again, and phantom fields are gone from the form.
Platform & Self-Hosting
- Turkish (tr-TR) joins English, Spanish, French, German, and Portuguese.
- A setup-wizard step for language, currency, and time zone, so a new tenant starts out in the right locale.
- Breeze Assist can be configured to show or hide its system-tray icon.
- AI Workspace now ships inside Breeze as a built-in extension, turned off by default — self-hosters opt in when they want it.
- Self-hosted email-to-ticket setup is documented, with the inbound mail domain and signing key called out explicitly.
- Backup vault failures are surfaced with their real status instead of being swallowed silently.
Security
- Closed several cross-customer data-exposure paths: CIS benchmark scans could fan out beyond their tenant, alert templates could leak between customers, and ticket email could cross organizations.
- Managed devices can no longer poison the shared patch catalog through the data they report, and backup connection probes are guarded against being pointed at internal network addresses.
- Credential issuance now enforces partner-wide permission and delegation limits.
- AI actions that arm enforcement — software policies and remediation — now require explicit high-tier approval and are written to the audit trail.
- Updated the Go toolchain and pinned a dependency to clear seven published vulnerabilities.
Quoting is the headline here. A quote in Breeze is now a real proposal document: you pick a theme once for your partner account, and every quote and contract you send comes out in your fonts and your branding. Inside a proposal you can build content out of rich text, tables, and callout blocks — and edit them directly on the quote instead of sending yourself test PDFs to see what landed. Once it’s out, you can re-send it without rebuilding it, copy the share link, and see who received it.
The second big piece is software. Instead of hosting installers and babysitting download URLs, you can now build your library on top of the package managers already on the machines — winget on Windows, Homebrew on macOS — and let them handle installing and updating. Packages can be shared partner-wide, so one definition covers every customer. Windows scans also pick up per-user application updates now, which is where a lot of out-of-date software has been hiding.
Third: tenant variables. If you have ever pasted the same vendor token into a dozen customer-specific copies of the same script, this is for you. Define the value once, reference it as {{var.name}}, and Breeze substitutes the right value per customer when the script runs. Secrets are write-once — they’re never displayed again after saving. Storing them works today, but they are not yet delivered to scripts: a script that references a secret variable is rejected at save time. Secret delivery lands in a later release.
There’s also a round of security work worth calling out, mostly closing cross-customer exposure paths in benchmark scans, alert templates, and ticket email, plus guards so a managed device can’t poison the shared patch catalog through what it reports. Self-hosters should read the GitHub release notes before upgrading: there are no new required settings, but three existing environment variables are now validated strictly and a malformed value will stop the API from starting rather than being silently ignored.