Breeze RMM v0.83.0 — 73 commits since v0.82.1 (18 features, 34 fixes, dependency & CVE sweep).
Highlights
- Partner-wide management across all orgs — partner-owned configuration policies (#1724), partner-wide SentinelOne integration (#1735), and org-independent (partner-scoped) patch update rings & approvals (#1764).
- PAM — reusable signer-group (trusted-publisher) catalog (#1771), rule-matching cluster with command-line/negation/default-unmatched verdicts (#1761), and
uac_interceptelevations bridged to the mobile approval surface (#1254). - Remote sessions — end-user consent & notification before a session starts (#1694).
- Device reliability — device-type-aware uptime weighting (#1721), a sortable Device Reliability column, and an Ask-AI / mark-outcome workflow on the reliability card.
- Quotes → Contracts — accepted quote recurring lines auto-create draft contracts (#1759); contracts auto-renew with renewal notices (#1765).
- Virtual/VDI detection — hypervisor identified as an orthogonal device attribute (#1387).
- Mobile & UX — responsive data tables app-wide (ResponsiveTable primitive, #1760) and a unified chip-centric filter bar with saved views (#1762).
Features
- Scripts: scope changer on the edit screen (#1734)
- Integrations: surface Huntress inbound webhook URL + secret in the GUI (#1737)
- Devices: sortable Device Reliability column (#1720)
- Observability: tag Postgres RLS-deny (42501) errors in Sentry (#1379)
Fixes
Stability / performance
- #1105 connection-hold mitigations: monitor checks now enqueue outside the DB transaction (#1840), and the txn-around-slow-work tripwire is wired into the slow primitives (#1806).
- ML: seasonal anomaly baselines must be ready before scoring (#1675).
- Huntress: retry transient sync failures + surface real sync status (#1736).
- Patches: reconcile orphaned scheduled patch_jobs never enqueued to the executor (#1733).
- API: stop masking S3 transport faults as 404s in viewer/software download paths (#1808, #1802).
Agent
- UAC discovery on Windows 11 (correct LUA event ids + target extraction) (#1816)
- Watchdog component now auto-updates (#1800)
- Pressure-aware RAM usage reporting on macOS (#1717)
Web / UX
- Preserve Monaco editor theme across View-Transition navigation (#1589)
- Keep AI chat panel pinned to bottom on submit + streaming (#1713)
- Preserve sidebar nav scroll position across navigation (#1714)
- Process drilldown empty states + drillable area charts (#1722)
- Device Activity pane as an index-backed last-N feed (#1726)
Discovery / inventory
- Project SNMP data into the asset list so the detail modal renders it (#1731)
- Guard the Network Discovery page in All-Orgs mode (#1727)
- Per-site device count in GET /orgs/sites (#1790)
- Warranty: re-sync when hardware inventory first identifies a device (#1732) and surface refresh feedback (#1723)
Security
- Hardened OAuth bearer-token authorization — org-level client blocks are now honored for partner-scoped bearers (#1656).
- Backslash-safe ILIKE escaping for ticket/mobile search (#99).
Dependencies
- 15 dependency updates (hono, bullmq, twilio, @anthropic-ai/sdk, @sentry/astro, lucide-react, node, and others).
- CVE remediations: dompurify/babel/otel via overrides (#1767), tar (GHSA-3pv8-6f4r-ffg2), and quinn-proto 0.11.15 (RUSTSEC-2026-0185) in the helper.
Self-Hosting / Upgrade Notes
Upgrading from v0.82.1 → v0.83.0. Standard path: bump BREEZE_VERSION in /opt/breeze/.env, then docker compose pull api web && docker compose up -d. If you build from source, run pnpm install (dependencies changed). This is a feature-heavy release but an easy upgrade — no new required environment variables and no compose/container changes (unlike v0.82.0, which added the portal container — that requirement is unchanged here).
- Database — nothing required. 13 new migrations apply automatically on boot (
autoMigrate, unlessAUTO_MIGRATE=false); each is idempotent and wrapped in its own transaction. They are all new tables/columns/indexes — no large-table rewrites or backfills: partner-scoped config policies, update rings, and patch approvals; partner-wide SentinelOne mapping; the PAM signer-group catalog, matching cluster, and approval↔elevation link; contracts auto-renew; ticket-comment editing; the device virtualization/VDI attribute; Huntress sync-result columns; remote-session-consent settings; and audit-log device-feed indexes. - Watchdog now auto-updates (#1800). The watchdog component is registered and promoted alongside the main agent, so it no longer stays pinned at an old version. No operator action — but expect watchdog binaries to start tracking releases. (This works with the new
AGENT_AUTO_PROMOTEflag shipped in v0.83.1.) - Connection-hold mitigations (#1105). Monitor checks now enqueue outside the DB transaction (#1840) and a txn-around-slow-work tripwire is wired into the slow primitives (#1806). Relevant if you've seen connection-pool exhaustion / "too many clients" under load.
- Partner-scoped patch rings & approvals change how partner admins scope update approvals (now org-independent). No migration action; review your ring configuration if you manage patching at the partner level.
- Pre-release: v0.83.0 was tagged as a pre-release pending production verification; the stable line continues at v0.83.1+.
Full commit log: v0.82.1...v0.83.0
What's Changed
- feat(devices): unified chip-centric filter bar with saved views by @ToddHebebrand in #1762
- feat(web): responsive data tables on mobile (ResponsiveTable primitive + app-wide sweep) by @ToddHebebrand in #1760
- feat(contracts): auto-renew + renewal notices (v2) by @ToddHebebrand in #1765
- fix: clear CVE-2026-12151 (undici HIGH) in app deps + base-image npm by @bdunncompany in #1753
- feat(pam): rule matching cluster — command-line, negation, default-unmatched verdict by @bdunncompany in #1761
- fix(agent): report pressure-aware RAM usage on macOS by @ramphex in #1717
- fix(web): resolve org name for quote detail Customer label (#1712) by @ToddHebebrand in #1743
- fix(devices): make device Activity pane an index-backed last-N feed (#1726) by @ToddHebebrand in #1744
- fix(devices): distinct empty states + drillable area charts for process drilldown (#1722) by @ToddHebebrand in #1745
- fix(reliability): exclude pre-enrollment time from uptime window (#1738) by @ToddHebebrand in #1746
- fix(discovery): guard Network Discovery page in All-Orgs mode (#1727) by @ToddHebebrand in #1748
- feat(scripts): add a scope changer on the edit screen (#1734) by @ToddHebebrand in #1749
- feat(integrations): surface Huntress inbound webhook URL + secret in the GUI (#1737) by @ToddHebebrand in #1754
- feat(devices): add a sortable Device Reliability column (#1720) by @ToddHebebrand in #1755
- fix(patches): reconcile orphaned scheduled patch_jobs never enqueued to executor (#1733) by @ToddHebebrand in #1756
- feat(agent/devices): detect virtual/VDI hypervisor as an orthogonal device attribute (#1387) by @ToddHebebrand in #1757
- feat(quotes): Phase 4 — accepted quote recurring lines auto-create draft contracts by @ToddHebebrand in #1759
- feat(patches): org-independent (partner-scoped) update rings & approvals by @ToddHebebrand in #1764
- Ticketing Phase 6a — editing affordances (comment edit/delete, field edit UI, org reassign) by @ToddHebebrand in #1766
- feat(remote): remote session consent & end-user notification by @ToddHebebrand in #1694
- refactor(billing): invoice enum single-source-of-truth (Billing v1.1 · F1) by @ToddHebebrand in #1758
- test(web): fix main-red Test Web — responsive double-render + leaked-mock isolation by @bdunncompany in #1774
- fix(web): clarify discovered-asset "Link to Device" action (#1730) by @ToddHebebrand in #1742
- fix(web): preserve sidebar nav scroll position across page navigation (#1714) by @ToddHebebrand in #1740
- fix(web): allow blob: in CSP frame-src for quote PDF preview (#1750) by @ToddHebebrand in #1763
- feat(pam): bridge uac_intercept elevations to the mobile approval surface (#1254) by @bdunncompany in #1752
- fix(deps): clear dompurify/babel/otel CVEs via pnpm overrides by @ToddHebebrand in #1767
- fix(api): backslash-safe ILIKE escaping for ticket/mobile search (#99) by @ToddHebebrand in #1768
- fix(deps): bump tar 0.4.45→0.4.46 in viewer (GHSA-3pv8-6f4r-ffg2, #96) by @ToddHebebrand in #1770
- fix(warranty): re-trigger sync when hardware inventory first identifies a device (#1732) by @ToddHebebrand in #1747
- fix(web): keep AI chat panel pinned to bottom on submit + streaming (#1713) by @ToddHebebrand in #1741
- fix(devices): show display names in the Device column by @ramphex in #1718
- feat(pam): reusable signer-group (trusted-publisher) catalog by @bdunncompany in #1771
- chore(deps): bump the hono group with 2 updates by @dependabot[bot] in #1777
- chore(deps): bump @tauri-apps/cli from 2.10.0 to 2.11.3 by @dependabot[bot] in #1782
- chore(deps): bump @types/nodemailer from 7.0.11 to 8.0.1 by @dependabot[bot] in #1786
- chore(deps): bump nanoid from 5.1.11 to 5.1.15 by @dependabot[bot] in #1788
- chore(deps): bump lucide-react from 1.17.0 to 1.21.0 by @dependabot[bot] in #1789
- chore(deps): bump pg from 8.21.0 to 8.22.0 in /e2e-tests by @dependabot[bot] in #1784
- chore(deps): bump @anthropic-ai/sdk from 0.96.0 to 0.105.0 by @dependabot[bot] in #1780
- fix(deps): de-duplicate corrupted hono@4.12.26 lockfile entries (fixes #1792) by @ToddHebebrand in #1795
- chore(deps): bump twilio from 5.12.1 to 6.0.2 by @dependabot[bot] in #1779
- chore(deps): bump bullmq from 5.78.0 to 5.79.1 by @dependabot[bot] in #1781
- chore(deps): bump @sentry/astro from 10.56.0 to 10.59.0 by @dependabot[bot] in #1787
- chore(deps): bump @types/node from 25.9.3 to 26.0.0 in /e2e-tests by @dependabot[bot] in #1783
- chore(deps): bump @anthropic-ai/sdk from 0.104.1 to 0.105.0 in /e2e-tests by @dependabot[bot] in #1785
- fix(scripts): preserve Monaco theme globally across View-Transition swaps (#1589) by @ToddHebebrand in #1794
- fix(discovery): project snmpData into asset list so detail modal renders it (#1731) by @ToddHebebrand in #1799
- chore(deps): bump node from
fb71d01to156b55fin /apps/api by @dependabot[bot] in #1796 - chore(deps): bump node from
fb71d01to156b55fin /docker by @dependabot[bot] in #1798 - chore(deps): bump node from
fb71d01to156b55fin /apps/web by @dependabot[bot] in #1797 - fix(agent,api): make the watchdog component auto-update by @ToddHebebrand in #1800
- fix(discovery): explain Alerting prerequisite in empty Network Changes tab (#1729) by @ToddHebebrand in #1801
- fix(web): surface warranty refresh feedback and auto-update card (#1723) by @ToddHebebrand in #1803
- feat(observability): tag Postgres RLS-deny (42501) errors in Sentry (#1379) by @ToddHebebrand in #1805
- feat(reliability): device-type-aware uptime weighting (#1721) by @ToddHebebrand in #1804
- fix(db): #1105 Phase 1 — wire the txn-around-slow-work tripwire into the slow primitives by @ToddHebebrand in #1806
- fix(download): surface S3 transport errors as 500 instead of masking as 404 (#1802) by @ToddHebebrand in #1807
- docs(issue-fixer): warn about the spawn-inside-an-existing-worktree trap by @ToddHebebrand in #1809
- docs(issue command): remind dispatched agents to make their own worktree by @ToddHebebrand in #1811
- feat(web): reliability card Ask-AI CTA + Mark-outcome menu (#1721 parts 1-2) by @ToddHebebrand in #1810
- feat(s1): partner-wide SentinelOne integration (#1735) by @ToddHebebrand in #1791
- fix(web): bump no-silent-mutations count to 46 (red main) by @ToddHebebrand in #1813
- fix(huntress): retry transient sync failures + surface real sync status (#1736) by @ToddHebebrand in #1769
- fix(orgs): populate per-site device count in GET /orgs/sites (#1790) by @ToddHebebrand in #1793
- feat(config-policies): partner-owned (partner-wide / all-orgs) policies (#1724) by @ToddHebebrand in #1751
- fix(helper): bump quinn-proto to 0.11.15 (RUSTSEC-2026-0185) by @bdunncompany in #1818
- fix(agent): make UAC discovery work on Windows 11 (correct LUA event ids + target extraction) by @bdunncompany in #1816
- fix(api): stop masking S3 transport faults in viewer/software download paths (#1808) by @bdunncompany in #1839
- fix(oauth): honor org client blocks for partner bearers by @ToddHebebrand in #1656
- fix(ml): require ready seasonal anomaly baselines by @ToddHebebrand in #1675
- fix(monitors): enqueue monitor checks outside the DB transaction (#1105) by @ToddHebebrand in #1840
- docs(mcp): document OAuth 2.1 GA and add missing MCP/OAuth env vars by @ToddHebebrand in #1841
Full Changelog: v0.82.1...v0.83.0