Changelog

# Changelog

## 0.1.2 — 2026-11-12

- A certificate pin is never silently dropped. `setCACert()` now works on ESP8266
  (HTTP and WebSocket) and `setFingerprint()` on the ESP8266 WebSocket. A pin that
  can't be applied — a fingerprint on ESP32, or a malformed one — makes the
  connection fail instead of falling back to an unvalidated one.
- With `setDebug(true)`, `begin()` / `beginHTTP()` warn when certificates aren't
  being validated, or when `setFingerprint()` is used on ESP32.

## 0.1.1 — 2026-09-16

- Debug output now tells connection failures apart: failed HTTP requests log the
  status code with a reason (token rejected, no access, wrong host, rate limited,
  server error, no connection), a refused WebSocket handshake is reported separately
  from a dropped link, and socket errors are no longer swallowed. All behind
  `setDebug(true)`.
- Install from the Arduino Library Manager, PlatformIO Registry, or ESP Component
  Registry; added ESP-IDF instructions.

## 0.1.0 — 2026-07-05

First release.

- `NODRIX_WRITE("var") { ... }` handlers for cloud control writes, with automatic
  acks and typed value coercion — `asBool()`, `asInt()`, `asLong()`, `asFloat()`,
  `asDouble()`, `asString()`, `isNull()`.
- `Nodrix.send()` telemetry with batching; overloads for `bool`, `int`, `long`,
  `float`, `double`, `const char*`, and `String`.
- Two transports: always-on WebSocket (`begin()` / `run()`) and HTTP polling for
  deep-sleep devices (`beginHTTP()` / `poll()`).
- Multiple WiFi networks with failover via `addAP()`.
- Automatic reconnect, heartbeat, and control-variable seeding.
- Optional TLS pinning — `setCACert()` (ESP32) and `setFingerprint()` (ESP8266
  HTTP); unvalidated `setInsecure()` by default.
- Server-side events via `event()`.
- Runtime debug logging via `setDebug()`.
- Examples: LedControl, HomeLights, MultiWiFi, SensorTelemetry, DeepSleepSensor.
- Supports ESP32 (including S2, S3, C3, C6, H2) and ESP8266.