Follow Stalwart 0.16.22 in the mock #342

Closed
opened 2026-09-14 00:55:34 +00:00 by jcoffey-dev · 0 comments
Owner

The mock now reproduces the four client-visible JMAP changes in Stalwart 0.16.22, read from its source (crates/jmap/src/calendar_event/get.rs, contact/get.rs) and the tests added with them.

0.16.21 0.16.22 (and the mock now)
baseEventId on an event read by its stored id its own id null
baseEventId on a synthetic id (occurrence, or a one-off from an expanded query) master's id master's id, unchanged
recurrenceRule / recurrenceOverrides named on a synthetic id absent null
useDefaultAlerts never set true false
properties: [] on CalendarEvent/get / ContactCard/get everything id only
  • eventGetView in server/src/mock/recurrence.ts builds the named-properties response; CalendarEvent/get uses it for stored ids, synthetic ids and the no-ids path. With properties omitted the stored object comes back as before.
  • pick already returned only id for an empty list, so ContactCard/get only gains a comment.
  • The client already copes: it reads recurrenceRule and recurrenceOverrides with ??, and treats a null baseEventId as a base event.
  • README: fixes the sentence from #341 that said a one-off now carries a null base (only true when read by its stored id), and says the mock follows 0.16.22.

Checked: 7 new tests in recurrence.test.ts; server suite 200/200; typecheck clean. The mock was run and called over JMAP. An expanded occurrence returned baseEventId: "ev1" with null rule and overrides, an expanded one-off returned baseEventId: "ev2", ev1 by stored id returned baseEventId: null and useDefaultAlerts: false, and both methods returned id only for properties: [].

No new UI strings.

Merged 2026-09-13 as coffey-labs/ihasmail@3dd8c7c2dd

Rebuilt from: git history, session transcript.

The mock now reproduces the four client-visible JMAP changes in Stalwart 0.16.22, read from its source (`crates/jmap/src/calendar_event/get.rs`, `contact/get.rs`) and the tests added with them. | | 0.16.21 | 0.16.22 (and the mock now) | |---|---|---| | `baseEventId` on an event read by its stored id | its own id | `null` | | `baseEventId` on a synthetic id (occurrence, or a one-off from an expanded query) | master's id | master's id, unchanged | | `recurrenceRule` / `recurrenceOverrides` named on a synthetic id | absent | `null` | | `useDefaultAlerts` never set | `true` | `false` | | `properties: []` on `CalendarEvent/get` / `ContactCard/get` | everything | `id` only | - `eventGetView` in `server/src/mock/recurrence.ts` builds the named-properties response; `CalendarEvent/get` uses it for stored ids, synthetic ids and the no-ids path. With `properties` omitted the stored object comes back as before. - `pick` already returned only `id` for an empty list, so `ContactCard/get` only gains a comment. - The client already copes: it reads `recurrenceRule` and `recurrenceOverrides` with `??`, and treats a null `baseEventId` as a base event. - README: fixes the sentence from #341 that said a one-off now carries a null base (only true when read by its stored id), and says the mock follows 0.16.22. **Checked:** 7 new tests in `recurrence.test.ts`; server suite 200/200; typecheck clean. The mock was run and called over JMAP. An expanded occurrence returned `baseEventId: "ev1"` with null rule and overrides, an expanded one-off returned `baseEventId: "ev2"`, `ev1` by stored id returned `baseEventId: null` and `useDefaultAlerts: false`, and both methods returned `id` only for `properties: []`. No new UI strings. **Merged** 2026-09-13 as coffey-labs/ihasmail@3dd8c7c2ddcc <sub>Rebuilt from: git history, session transcript.</sub>
This repo is archived. You cannot comment on issues.