Say 0.16.22 in the README, and what it changed for a client

The live instance moved to Stalwart 0.16.22 on 2026-09-13. The badge and the
requirements section now say so. The hand validation stays credited to 0.16.21,
because 0.16.22 was read against its diff rather than re-run, and the four
calendar and contacts JMAP changes it makes are listed, along with the fact
that the mock does not follow them yet.
This commit is contained in:
2026-09-13 17:49:08 -07:00
parent 5f808f3033
commit 28acad6865
+14 -4
View File
@@ -9,7 +9,7 @@
<p align="center"> <p align="center">
<a href="LICENSE"><img alt="Licence: AGPL-3.0-or-later" src="https://img.shields.io/badge/licence-AGPL--3.0--or--later-2dd4bf?style=flat-square"></a> <a href="LICENSE"><img alt="Licence: AGPL-3.0-or-later" src="https://img.shields.io/badge/licence-AGPL--3.0--or--later-2dd4bf?style=flat-square"></a>
<a href="https://stalw.art" target="_blank" rel="noreferrer"><img alt="Requires Stalwart 0.16 or newer; tested against 0.16.21" src="https://img.shields.io/badge/Stalwart-0.16.21-6366f1?style=flat-square"></a> <a href="https://stalw.art" target="_blank" rel="noreferrer"><img alt="Requires Stalwart 0.16 or newer; runs on 0.16.22" src="https://img.shields.io/badge/Stalwart-0.16.22-6366f1?style=flat-square"></a>
<a href="https://docs.ihasmail.org" target="_blank" rel="noreferrer"><img alt="Documentation: docs.ihasmail.org" src="https://img.shields.io/badge/docs-docs.ihasmail.org-0ea5e9?style=flat-square"></a> <a href="https://docs.ihasmail.org" target="_blank" rel="noreferrer"><img alt="Documentation: docs.ihasmail.org" src="https://img.shields.io/badge/docs-docs.ihasmail.org-0ea5e9?style=flat-square"></a>
<a href="https://coffeylabs.org" target="_blank" rel="noreferrer"><img alt="by Coffey Labs" src="https://img.shields.io/badge/by-Coffey%20Labs-0f766e?style=flat-square"></a> <a href="https://coffeylabs.org" target="_blank" rel="noreferrer"><img alt="by Coffey Labs" src="https://img.shields.io/badge/by-Coffey%20Labs-0f766e?style=flat-square"></a>
</p> </p>
@@ -88,8 +88,18 @@ wrong guess had somewhere to fall back to, so it failed *quietly* — and that
reached production. With one supported generation a wrong guess is a loud error reached production. With one supported generation a wrong guess is a loud error
on the first call. on the first call.
**Validated against 0.16.21**, released 6 September 2026: the app was run **The live instance runs 0.16.22**, released 13 September 2026 and upgraded to
against a real instance of it and the mail, calendar and contacts paths were the same day. It was read against its diff rather than re-run, and four of its
JMAP changes are visible to a client, all in calendars and contacts:
`CalendarEvent/get` returns `baseEventId` only on a synthetic occurrence, so a
one-off event now carries `null` there; it returns `null` for `recurrenceRule`
and `recurrenceOverrides` asked for on an occurrence; `useDefaultAlerts` is
stored per user and reads `false` when never set; and `CalendarEvent/get` and
`ContactCard/get` return only `id` for an empty `properties` list, rather than
everything. The mock does not follow these yet.
**Validated by hand against 0.16.21**, released 6 September 2026: the app was
run against a real instance of it and the mail, calendar and contacts paths were
exercised by hand. Four of that release's JMAP changes are visible to a client exercised by hand. Four of that release's JMAP changes are visible to a client
— an occurrence of a recurring event is now identified by its recurrence id — an occurrence of a recurring event is now identified by its recurrence id
rather than by its position in the series, so an id held across a write no rather than by its position in the series, so an id held across a write no
@@ -97,7 +107,7 @@ longer silently names a different date; `Calendar/get` and `AddressBook/get`
return every property when none are named; EventSource advertises its ping return every property when none are named; EventSource advertises its ping
interval in seconds rather than milliseconds; and a calendar write that asks interval in seconds rather than milliseconds; and a calendar write that asks
for scheduling messages is refused when the account may not send them. The mock for scheduling messages is refused when the account may not send them. The mock
reproduces all four. reproduces those four.
- Still on 0.15? The last release that runs on it is tagged [`stalwart-0.15-support`](https://github.com/Coffey-Labs/ihasmail/releases/tag/stalwart-0.15-support). - Still on 0.15? The last release that runs on it is tagged [`stalwart-0.15-support`](https://github.com/Coffey-Labs/ihasmail/releases/tag/stalwart-0.15-support).
- Upgrading? [stalwart-migrator](https://github.com/Coffey-Labs/stalwart-migrator) does it in place, checkpointing every phase and validating afterwards. The live instance moved 0.15.5 → 0.16.19 with eight seconds of downtime and nothing lost. - Upgrading? [stalwart-migrator](https://github.com/Coffey-Labs/stalwart-migrator) does it in place, checkpointing every phase and validating afterwards. The live instance moved 0.15.5 → 0.16.19 with eight seconds of downtime and nothing lost.