2.1.2 (2026-09-15)
(ticaki) fixed: when Apple requires the account holder to accept updated iCloud terms and conditions (termsUpdateNeeded; Find My answers HTTP 450 although the session is valid), the adapter stops with a clear error message — accept the terms at icloud.com or on an Apple device and start the instance again — instead of re-authenticating in an endless loop
(ticaki) fixed: a session recovery now performs a real re-login — session token and cookies are dropped, the trust token is kept so no new MFA is required — and backs off (10 s, 1 min, 5 min, 15 min, 30 min) when it keeps failing, instead of re-validating the same session token every 10 s
(ticaki) new: option "Accept updated iCloud terms automatically" (off by default) — when Apple flags the account with termsUpdateNeeded, the adapter fetches the current terms version via /getTerms, confirms it via /repairDone and re-runs accountLogin, the way pyicloud's accept_terms does; enabling it means agreeing to Apple's terms without reading them
(ticaki) fixed: a failed refresh during startup no longer reports "iCloud connection established"
2.1.1 (2026-09-15)
(ticaki) fixed: the adapter crashed with UNCAUGHT_EXCEPTION (unhandled promise rejection HTTP 450) when Find My rejected the session — the Find My service started a second, unmonitored refresh() in its constructor in parallel to the adapter's own call; the adapter's error handling and session recovery now apply
(ticaki) fixed: reminders text containing U+2028/U+2029 line separators or control characters is normalised before being stored