When no WiFi credentials are configured or connection fails, the device
automatically starts a soft AP (MimiClaw-XXXX) with a captive portal.
Users can configure WiFi, LLM, Telegram, Feishu, Proxy and Search
settings via a mobile-friendly web page, then the device restarts and
connects with the new credentials.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use MIMI_SPIFFS_BASE to centralize file path definitions, making the
base path configurable instead of hardcoded.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
The code calls free() without including <stdlib.h>, which triggers
implicit declaration warnings during the build.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
On ESP IDF 5.5 the get_current_time tool returns ESP_ERR_NOT_FOUND because
there is no "Date" header. This is because esp_http_client_get_header
only reads request headers. Response headers are only available via the
HTTP_EVENT_ON_HEADER event callback. They're dispatched and freed as they're
parsed.
Register an event handler that captures the "Date" header during HTTP response
parsing. The date string from this header is available as part of user context
after the HTTP request is finished.
- Remove unused context_build_messages() (superseded by direct cJSON in agent_loop)
- Remove unused llm_chat() and its helper extract_text_* functions (superseded by llm_chat_tools)
- Remove ota_manager.c from build (never called)
- Remove config_screen.c stub from build (no-op module)
- Remove unused PWR_KEY_State, Button_GPIO_Get_Level; drop config_screen dependency from button_driver
- Fix incorrect type cast in tool_get_time.c (char[64] cast to char**)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Switch primary console from USB Serial/JTAG to UART so log output
doesn't block when the device is powered by a wall charger. USB
Serial/JTAG remains available as secondary console for debugging.
Closes#60
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The proxy path (llm_http_via_proxy) stripped HTTP headers but did not
decode chunked transfer-encoding, leaving hex size prefixes in the body
and causing cJSON_Parse to fail with 0 bytes text.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove the ui/ directory containing config_screen stubs that were
left over from the display removal. This code was not compiled
(not listed in CMakeLists.txt) and had no callers.
Signed-off-by: Asklv <boironic@gmail.com>
Remove button and IMU source files from the build. Drop the 'driver'
component dependency which was only needed for GPIO/I2C used by the
removed peripherals.
Signed-off-by: Asklv <boironic@gmail.com>
Remove button_Init(), imu_manager_init(), and
imu_manager_set_shake_callback() calls from mimi.c along with
their corresponding include directives.
Signed-off-by: Asklv <boironic@gmail.com>