What's Changed
- Replace CairoSVG with resvg-py and migrate PDF generation to reportlab by @moshemorad in #2136
- ROB-906 Document the cluster query param across Send Events docs by @Sheeproid in #2138
- ROB-902 - Claude/runner clusterrole privilege 839vtf by @Avi-Robusta in #2141
- Upgrade Flask dependency to ^3.1.3 by @moshemorad in #2143
- ROB-944 harden pull configs by @Avi-Robusta in #2144
- Prevent signing key leakage in email communications by @moshemorad in #2148
- Fix shell variable expansion in release workflow by @moshemorad in #2149
- ROB-1207: Bump cryptography to ^50.0.0 to fix CVE-2026-69247 by @naomi-robusta in #2155
- ROB-997 Upgrade kubewatch image to v2.16.0 by @naomi-robusta in #2156
- Upgrade kubewatch image to v2.16.1 by @naomi-robusta in #2157
- Security: backport libssh2/attr/acl CVE fixes from Debian forky by @naomi-robusta in #2158
- ROB-889 Stop logging an ERROR for pods whose status is not populated yet by @Avi-Robusta in #2139
- Harden Supabase login with retries and timeout configuration by @naomi-robusta in #2159
- Bump Holmes + KRR versions by @moshemorad in #2160
Full Changelog: 0.47.0...0.48.0-alpha