Releases: 1e1/Arduino-GoogleSchedular
Releases · 1e1/Arduino-GoogleSchedular
Release list
4.1.0
Robustness, tooling and documentation release. Additive only — no breaking changes to the public API.
Added
- Native (host) unit tests under
test/, and a GitHub Actions CI: native tests on g++/clang++, example compilation on ESP8266 and ESP32, and arduino-lint. - Session persistence support (mechanism, not policy):
isAuthInvalid()andlastAuthHttpCode()distinguish a rejected credential (HTTP 400 invalid_grant) from a transient failure;maintain()now self-recovers from a transient error and keeps therefresh_tokenfor the sketch to own. - Persistent-install examples:
wifi_persistent(ESP8266 / LittleFS) andwifi_persistent_esp32(ESP32 / Preferences-NVS) — silent reconnect on boot, transient retry, re-pair on rejection, safe output state. GoogleSchedular::isValidTimestamp()to validate an RFC3339 instant while debugging.
Changed
syncAt()takes the timestamp asconst char*(zero-copy viaTimestampNtp::c_str()), builds the query window on the stack (constant per-sync heap footprint — longevity on always-on devices), returnsbool, and guards its preconditions. AStringoverload is kept for backward compatibility.
Fixed
- Now compiles for ESP32 (ambiguous
FPSTR(..) + Stringin the Authorization header). - Link-safe OAuth scope via
scope()for pre-C++17 toolchains (AVR / gnu++11). setCalendar()reports a network/parse failure as ERROR instead of silently staying AUTHENTICATED.- A malformed JSON body on an HTTP 200 is treated as a request failure.
- Initializer-list order; uninitialized LED flag in the example.
Dependencies
- FastTimer >= 3.1.0 (bundles
TimestampNtp.hpp) - ArduinoJson >= 7.0.0