Repository navigation
Added
-
docs-site — English edition of the full documentation site, published at
/en/with Simplified Chinese retained at/.- All 29 docs are mirrored under
docs-site/i18n/en/, with a locale selector in both the landing-page navbar and the custom docs topbar, localized navbar/footer/sidebar catalogs, and English SVG schematics undercurrent/images/. - Heading anchors use explicit IDs shared across locales, and
npm run check:i18ngates path, image, and anchor parity as part ofnpm run build.
- All 29 docs are mirrored under
-
iot-client —
iot_client_config_t.skip_version_reportskips SDK-meta and firmware-version reports duringiot_client_init()(#37).- Default
falsereports both; settruewhen the cloud already has the current version.
- Default
-
tuya-ble — asynchronous nearby-WiFi lists over big-data, fixed CFG-status query replies, and an ESP-IDF scan provider (#35).
- Configure
wifi_scan_request; complete scans with their original token viatuya_ble_bigdata_wifi_list_complete()on the BLE owner context. - A scan provider enables WiFi-list/status capability discovery, not a complete PSK3.0 activation exchange.
- Configure
-
docs-site — new bilingual guide "DP (Data Point): Definition, Creation, and Usage" under User Guides → Cloud Configuration (#41).
- Covers the official three-level DP definition, the four elements (DPID/DPCode/type/constraints), the six data types, rw/ro/wr transfer modes,
dpsand cloud command-set message formats, cloud rate limits, platform-side DP creation, and DP usage in agentic-kit (schema intake, type mapping, coreiot_dp_*APIs, a typical code flow), with official and on-site references.
- Covers the official three-level DP definition, the four elements (DPID/DPCode/type/constraints), the six data types, rw/ro/wr transfer modes,
Changed
-
SDK-wide — every build-time knob is renamed with an
AGENTIC_KIT_prefix and its default moves to its owning subsystem's config file; override per product with oneagentic_kit_config.hon the include path,-D<NAME>=<value>, orAGENTIC_KIT_USER_CONFIG(#38).- BREAKING
TAI_FRAG_BUF_SIZE→AGENTIC_KIT_TAI_FRAG_BUF_SIZE,RESPONSE_BUFFER_SIZE→AGENTIC_KIT_RESPONSE_BUFFER_SIZE, and likewise the rest — old→new table indocs-site/docs/guides/compile-time-knobs.md. - Knob defaults live at: the override pickup in
common/log.h; PAL task sizing inpal/pal_config_defaults.h; per-module knobs in each module's include/ (iot_client_config_defaults.h,tai_config_defaults.h,tuya_ble_config_defaults.h). Non-knob module data (version strings, endpoints, log binding) lives in each module's src-side internal header (src/iot_internal.hrestores and renames the formeriot_config_defaults.h). - Removed the dead
IOT_DO_NOT_USE_CUSTOM_CONFIGflag from the ESP-IDF component.
- BREAKING
-
SDK-wide — one compile-time log ceiling
AGENTIC_KIT_LOG_LEVEL(0–4, default 4) gates every SDK log macro via the newlog_tag_*facade incommon/log.h; module code no longer callslog_emit()directly (#40).- BREAKING
-DTAI_LOG_LEVEL=N(rtc-tcp-client only) and the dead-DLOG_LEVELboth move to-DAGENTIC_KIT_LOG_LEVEL=N, which now silences the whole SDK at compile time. Lowering only rtc-tcp-client afterwards is the new-DAGENTIC_KIT_TAI_LOG_LEVEL=N(see below). - Optional per-module log ceilings were added back on top:
AGENTIC_KIT_IOT_LOG_LEVEL,AGENTIC_KIT_TAI_LOG_LEVELandAGENTIC_KIT_TUYA_BLE_LOG_LEVELall default to the SDK-wide ceiling and can only lower their one module below it (effective ceiling = the smaller of the two; values above the global ceiling are clamped to it once in each module's config file, so block-level gates see the effective ceiling too). They gate each module's vocabulary where it is defined, ride the same override pickup, and keep the compile-time-only property — below 3, the rtc-tcp-client packet-log formatter vanishes with its calls. tuya-ble gains its first knob and itstuya_ble_config_defaults.hthis way. - BREAKING the runtime log layer is removed:
log_set_level(),log_get_level()and thetai_set_log_level()/tai_get_log_level()wrappers are gone, andlog_emit()no longer filters — the ceiling is the only level gate, so what compiles in is what emits. Migrate runtimelog_set_level(N)calls to a lower ceiling at build time, or to level filtering inside yourAGENTIC_KIT_LOGtarget. - BREAKING the runtime handler is removed too:
log_set_handler(),log_fn_tand the publiclog_default_handler()are gone — the destination is a compile-time fact, with no mutable log state left in the SDK. Make the old handler function theAGENTIC_KIT_LOGtarget (it now receives the level and the bare tag directly), and use the newlog_emit_valist()— the facade'sva_listentry, theesp_log_writevrole — to reuse the default stderr output from a function sink. The SDK's own tests migrated the same way: each test build remaps the dispatch into one sink whose capture/quiet/count are modes, not handler swaps. - The dispatch itself is customer-remappable at compile time: defining
AGENTIC_KIT_LOG(level, tag, fmt, ...)routes every SDK log line into your own macro — straight intoESP_LOGx-style systems with nova_listround trip (the tag arrives as its own token). TheAGENTIC_KIT_LOG_LEVELceiling still applies, and since there is no runtime handler anymore, the remap is the one and only destination switch. The ESP-IDF pair-by-ble example now uses exactly this:kit_opts/agentic_kit_config.hmaps the facade ontoESP_LOG_LEVEL_LOCAL, replacing its old runtime callback (each line also keeps its real module tag instead of one shared"tuya_ble"tag). - rtc-tcp-client packet logging selects its INFO/DEBUG sink at compile time — sampling builds have exactly one level; flood mode needs
AGENTIC_KIT_TAI_LOG_MEDIA_SAMPLE_N=0plus a DEBUG ceiling and vanishes otherwise — and its JSON formatter compiles out below INFO. A compile-matrix test builds 19 level × sampling combinations across both the SDK-wide and the rtc-tcp-client-only ceiling, including module-above-global clamp probes.
- BREAKING
-
tuya-ble — the SDK-internal log-facade binding, scan-token rotation and pending-credential
delivery are each defined once intuya_ble_internal.hinstead of being repeated per module. -
tuya-ble — bounded per-state Trsmitr reassembly, queued TX with backpressure, and configurable radio capability (#35).
- Ports drive
tuya_ble_prov_set_gatt_payload(),tuya_ble_prov_tx_ready()andtuya_ble_prov_tick(); calltuya_ble_prov_close()on disconnect/reset. - Recompile consumers for the public state/config layout changes;
comm_ability = 0selects 2.4 GHz.
- Ports drive
-
rtc-client — upgrade libstm(#33).
-
rtc-client — frames under
TAI_FRAME_COALESCE_LIMIT(default 512 B) now coalesce into a
single transport write: Ping, control packets and small audio chunks drop from 2–3 TLS
records to 1(#32).
Fixed
- tuya-ble — accept incoming Trsmitr versions >= 2 for app Pairing compatibility while keeping TX at version 4 (#39).
- Docs — the pair-by-ble callback sample no longer claims credentials are never logged; the
demo's DEBUG protocol log prints the credential JSON on purpose, for device bring-up. - Docs — the pair-by-ble stop section now also states the port's
nimble_port_deinit()abort,
instead of implying everytuya_ble_nimble_stop()failure is retryable (#35). - tuya-ble — preserve pending credentials under TX backpressure and route Trsmitr diagnostics through the log facade (#35).
- Examples — isolate BLE WiFi scan completions across cancellation, join workers before teardown, and restart STA before connecting (#35).
- tuya-ble — enforce Pairing/KEY_12 credential authorization, reject replayed Frames, and accept the app's extra CBC padding block (#35).
- tuya-ble — reset Pairing state on device-info re-query and defer credential delivery until queued acknowledgements are accepted by the port (#35).
- iot-client — US-East (
UEAZ) fell back to an ATOP host that does not resolve(#31).
IOT_UEAZ_HOSTis nowa1-ueaz.tuyaus.com.