@@ -11,6 +11,42 @@ exact tag (`ghcr.io/calnode/calnode:0.1.0`) if you need stability between upgrad
1111
1212## [ Unreleased]
1313
14+ ## [ 0.2.2] - 2026-08-12
15+
16+ ### Security
17+ - ** Fixed a LiveKit host-control leak.** For a booking held on a host's connected Google or
18+ Microsoft calendar, the calendar event added the attendee as a guest — and the provider then
19+ sent its own native invite email using that event's Location, which was the host's
20+ * privileged* join link. An attendee opening that invite (not Calnode's own confirmation email,
21+ which was never affected) got instant host controls in the room. CalDAV bookings were not
22+ exposed (its ICS never listed the attendee as a scheduling participant, so no native invite
23+ was ever sent). If you've run LiveKit bookings with a Google- or Microsoft-connected host
24+ before this release, treat any prior host links as having been shared more widely than
25+ intended.
26+
27+ ### Fixed
28+ - The SMTP mailer had no timeout past the initial connection — a stalled or misconfigured
29+ server (e.g. a port/TLS-mode mismatch) could hang a send indefinitely, surfacing in the admin
30+ UI as "Send test email" stuck on ** Sending…** forever with no error. Now bounded to 30s (or
31+ the caller's own deadline, if shorter).
32+ - ` Settings → Google OAuth ` now warns when the page is being viewed at a different domain than
33+ the server's configured ` BASE_URL ` — the usual cause of ` redirect_uri_mismatch ` after moving
34+ to a custom domain without updating ` BASE_URL ` to match.
35+
36+ ### Added
37+ - ** Storage setup instructions.** ` Settings → Storage ` had a status badge but no real
38+ instructions for configuring the recording/backups bucket; now shows a full numbered guide
39+ (provider suggestions, exact env vars, including ` LITESTREAM_ENDPOINT ` /` REGION ` which weren't
40+ documented anywhere before). ` .env.example ` documents the full ` LITESTREAM_* ` set for the
41+ first time, and the previously-undocumented ` MICROSOFT_CLIENT_ID ` /` SECRET ` /` TENANT ` set.
42+ - ` Settings → Video ` now explains when meeting recordings need the storage bucket set up, with
43+ a link straight to ` Settings → Storage ` .
44+ - The Recordings page's "no notes yet" message now says precisely which of the notetaker's three
45+ requirements (recording on, a Deepgram key, an LLM configured) is missing, instead of a
46+ generic message that only ever mentioned the first.
47+
48+ [ 0.2.2 ] : https://github.com/Calnode/calnode/releases/tag/v0.2.2
49+
1450## [ 0.2.1] - 2026-08-12
1551
1652Compliance and admin-UX polish.
@@ -52,7 +88,7 @@ Adds per-account calendar selection and a set of admin-UX refinements from early
5288### Fixed
5389- Corrected the Google OAuth redirect path in ` .env.example ` .
5490
55- [ Unreleased ] : https://github.com/Calnode/calnode/compare/v0.2.1 ...HEAD
91+ [ Unreleased ] : https://github.com/Calnode/calnode/compare/v0.2.2 ...HEAD
5692[ 0.2.0 ] : https://github.com/Calnode/calnode/releases/tag/v0.2.0
5793
5894## [ 0.1.0] - 2026-07-23
0 commit comments