ci / node (pull_request) Skipped
ci / version (pull_request) Skipped
github/ci (branch) GitHub Actions
ci / github (pull_request) Successful in 3m4s
ci / stalwart (stalwartlabs/stalwart@sha256:baafeacd6cbde77acdd94af49972d41c6709e54a376df48e18a9fe3f445eb3d5, 1.0.0) (pull_request) Skipped
ci / stalwart (stalwartlabs/stalwart@sha256:c429b311c93db5606598abc1c68225a85a6953183848ae01bee9c6a98885836c, 0.16.27) (pull_request) Skipped
ci / docker-build (pull_request) Skipped
ci / publish (pull_request) Skipped
Two changes in Stalwart 1.0 broke ihasmail for its readers (#66). A CalendarEvent/get that names recurrenceOverrides together with utcStart or utcEnd now fails whole, even with no ids, so no calendar would load. The everyday property list no longer asks for the overrides; an occurrence's are null anyway. The export, which needs them, asks with SERIES_PROPS, without the times. FileNode renamed nodeType to @type ("Directory", "File") and type to mediaType, and each version refuses the other's names on create and update. ihasmail could make no folder on 1.0, including its own, so the settings file was never written and settings reset at every sign-in. The client now asks once per session which shape the server wants (a query sorted by type, which 1.0 refuses as unsupportedSort), asking the reader's own account, and translates FileNode calls in one place, jmap/fileNodeShape.ts, so the rest of the app keeps the shape it was written for. A filter by nodeType, which 1.0 answers with nothing, is dropped there; the Files tree already sorts folders from files itself. The compatibility test missed both because it never made these calls. It now reads events with both property lists, expands a weekly series, and writes, finds, updates and reads back the settings file through the client's own translation. Run against real 0.16.27 and 1.0.0 servers, and the app was checked by hand on 1.0: calendars load, and a setting survives signing out and back in. Fixes #66