From 84c04063b349570258bfbd1b340b5cb592eb79c8 Mon Sep 17 00:00:00 2001 From: Asklv Date: Wed, 18 Feb 2026 20:10:00 +0000 Subject: [PATCH 01/13] fix: allow build without mimi_secrets.h Signed-off-by: Asklv --- main/ui/config_screen.c | 1 - 1 file changed, 1 deletion(-) diff --git a/main/ui/config_screen.c b/main/ui/config_screen.c index 8facf7f..bcac5fc 100644 --- a/main/ui/config_screen.c +++ b/main/ui/config_screen.c @@ -7,7 +7,6 @@ #include "display/font5x7.h" #include "wifi/wifi_manager.h" #include "mimi_config.h" -#include "mimi_secrets.h" #include "nvs.h" #include "esp_log.h" From 9c0812c5d93d73a3d82c3f55f8c6e2217506de50 Mon Sep 17 00:00:00 2001 From: Asklv Date: Wed, 18 Feb 2026 21:30:00 +0000 Subject: [PATCH 02/13] build: align component manager IDF range to 5.5.x Signed-off-by: Asklv --- main/idf_component.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/idf_component.yml b/main/idf_component.yml index afbca8e..ee698f3 100644 --- a/main/idf_component.yml +++ b/main/idf_component.yml @@ -2,7 +2,7 @@ dependencies: ## Required IDF version idf: - version: '>=4.1.0' + version: '>=5.5.0,<5.6.0' # # Put list of dependencies here # # For components maintained by Espressif: # component: "~1.0.0" From 433c0a66ea306a3130c4efb0f47975bb2db0cfb0 Mon Sep 17 00:00:00 2001 From: Asklv Date: Thu, 19 Feb 2026 09:00:00 +0000 Subject: [PATCH 03/13] feat: add ESP-IDF setup and build helper scripts Signed-off-by: Asklv --- scripts/build_ubuntu.sh | 21 +++++++++++++++++++ scripts/setup_idf_ubuntu.sh | 42 +++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100755 scripts/build_ubuntu.sh create mode 100755 scripts/setup_idf_ubuntu.sh diff --git a/scripts/build_ubuntu.sh b/scripts/build_ubuntu.sh new file mode 100755 index 0000000..6e38ce0 --- /dev/null +++ b/scripts/build_ubuntu.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +set -euo pipefail + +PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +IDF_VERSION="${IDF_VERSION:-v5.5.2}" +ESP_ROOT="${ESP_ROOT:-$HOME/.espressif}" +DEFAULT_IDF_DIR="$ESP_ROOT/esp-idf-$IDF_VERSION" +IDF_DIR="${IDF_DIR:-${IDF_PATH:-$DEFAULT_IDF_DIR}}" + +if [[ ! -f "$IDF_DIR/export.sh" ]]; then + echo "ESP-IDF not found at: $IDF_DIR" >&2 + echo "Run scripts/setup_idf_ubuntu.sh first, or set IDF_DIR/IDF_PATH." >&2 + exit 1 +fi + +# shellcheck source=/dev/null +. "$IDF_DIR/export.sh" + +cd "$PROJECT_ROOT" +idf.py set-target esp32s3 +idf.py build diff --git a/scripts/setup_idf_ubuntu.sh b/scripts/setup_idf_ubuntu.sh new file mode 100755 index 0000000..8a4142a --- /dev/null +++ b/scripts/setup_idf_ubuntu.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [[ "${OSTYPE:-}" != "linux-gnu"* ]]; then + echo "This setup script currently supports Ubuntu/Debian only." >&2 + exit 1 +fi + +IDF_VERSION="${IDF_VERSION:-v5.5.2}" +ESP_ROOT="${ESP_ROOT:-$HOME/.espressif}" +IDF_DIR="${IDF_DIR:-$ESP_ROOT/esp-idf-$IDF_VERSION}" + +if [[ -f /etc/os-release ]]; then + . /etc/os-release + if [[ "${ID:-}" != "ubuntu" && "${ID_LIKE:-}" != *"debian"* ]]; then + echo "Detected ${PRETTY_NAME:-unknown}. Continuing, but package installation assumes apt." >&2 + fi +fi + +sudo apt-get update +sudo apt-get install -y \ + git wget flex bison gperf python3 python3-pip python3-venv \ + cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 + +mkdir -p "$ESP_ROOT" +if [[ ! -d "$IDF_DIR/.git" ]]; then + git clone --depth 1 --branch "$IDF_VERSION" --recursive \ + https://github.com/espressif/esp-idf.git "$IDF_DIR" +else + git -C "$IDF_DIR" fetch --tags --depth 1 origin "$IDF_VERSION" + git -C "$IDF_DIR" checkout "$IDF_VERSION" + git -C "$IDF_DIR" submodule update --init --recursive +fi + +"$IDF_DIR/install.sh" esp32s3 + +echo +echo "ESP-IDF installed. For current shell run:" +echo " . \"$IDF_DIR/export.sh\"" +echo "Then run from project root:" +echo " idf.py set-target esp32s3" +echo " idf.py build" From 390719d889cd5958a4c4fa6d5374dc2fbfebb8f7 Mon Sep 17 00:00:00 2001 From: Asklv Date: Thu, 19 Feb 2026 15:20:00 +0000 Subject: [PATCH 04/13] docs: add Ubuntu ESP-IDF setup and build flow Signed-off-by: Asklv --- README.md | 12 ++++++++---- README_CN.md | 12 ++++++++---- README_JA.md | 12 ++++++++---- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index cead192..a5380b2 100644 --- a/README.md +++ b/README.md @@ -45,13 +45,17 @@ You send a message on Telegram. The ESP32-S3 picks it up over WiFi, feeds it int ### Install ```bash -# You need ESP-IDF v5.5+ installed first: -# https://docs.espressif.com/projects/esp-idf/en/v5.5.2/esp32s3/get-started/ - git clone https://github.com/memovai/mimiclaw.git cd mimiclaw -idf.py set-target esp32s3 +# Ubuntu quick setup (installs ESP-IDF v5.5.2 + toolchain for esp32s3) +./scripts/setup_idf_ubuntu.sh + +# Build with the configured ESP-IDF +./scripts/build_ubuntu.sh + +# Or use upstream manual setup: +# https://docs.espressif.com/projects/esp-idf/en/v5.5.2/esp32s3/get-started/ ``` ### Configure diff --git a/README_CN.md b/README_CN.md index 93def4e..48455e3 100644 --- a/README_CN.md +++ b/README_CN.md @@ -45,13 +45,17 @@ MimiClaw 把一块小小的 ESP32-S3 开发板变成你的私人 AI 助理。插 ### 安装 ```bash -# 需要先安装 ESP-IDF v5.5+: -# https://docs.espressif.com/projects/esp-idf/en/v5.5.2/esp32s3/get-started/ - git clone https://github.com/memovai/mimiclaw.git cd mimiclaw -idf.py set-target esp32s3 +# Ubuntu 一键安装(安装 ESP-IDF v5.5.2 + esp32s3 工具链) +./scripts/setup_idf_ubuntu.sh + +# 使用已配置好的 ESP-IDF 构建 +./scripts/build_ubuntu.sh + +# 或按官方文档手动安装: +# https://docs.espressif.com/projects/esp-idf/en/v5.5.2/esp32s3/get-started/ ``` ### 配置 diff --git a/README_JA.md b/README_JA.md index 8ffc09f..c9eebc2 100644 --- a/README_JA.md +++ b/README_JA.md @@ -45,13 +45,17 @@ Telegramでメッセージを送ると、ESP32-S3がWiFi経由で受信し、エ ### インストール ```bash -# まずESP-IDF v5.5+をインストールしてください: -# https://docs.espressif.com/projects/esp-idf/en/v5.5.2/esp32s3/get-started/ - git clone https://github.com/memovai/mimiclaw.git cd mimiclaw -idf.py set-target esp32s3 +# Ubuntu向けクイックセットアップ(ESP-IDF v5.5.2 + esp32s3ツールチェーン) +./scripts/setup_idf_ubuntu.sh + +# 設定済みESP-IDFでビルド +./scripts/build_ubuntu.sh + +# もしくは公式手順で手動セットアップ: +# https://docs.espressif.com/projects/esp-idf/en/v5.5.2/esp32s3/get-started/ ``` ### 設定 From 9822f898e1f1b05fe271419d909d201a1b8ce139 Mon Sep 17 00:00:00 2001 From: Asklv Date: Thu, 19 Feb 2026 22:10:00 +0000 Subject: [PATCH 05/13] ci: add ubuntu esp-idf build verification workflow Signed-off-by: Asklv --- .github/workflows/build.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..3f55b2f --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,25 @@ +name: Build + +on: + push: + branches: + - '**' + pull_request: + +jobs: + idf-build: + runs-on: ubuntu-latest + container: + image: espressif/idf:v5.5.2 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Build firmware (ESP32-S3) + shell: bash + run: | + . "$IDF_PATH/export.sh" + idf.py set-target esp32s3 + idf.py fullclean + idf.py build From adbd771ef4bf762854ea76dcc93bb3578ac40faf Mon Sep 17 00:00:00 2001 From: Asklv Date: Thu, 19 Feb 2026 12:49:53 +0000 Subject: [PATCH 06/13] docs: add collapsed Ubuntu dependency and build notes in all READMEs Signed-off-by: Asklv --- README.md | 31 +++++++++++++++++++++++++++++++ README_CN.md | 31 +++++++++++++++++++++++++++++++ README_JA.md | 31 +++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+) diff --git a/README.md b/README.md index a5380b2..9490658 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,37 @@ cd mimiclaw # https://docs.espressif.com/projects/esp-idf/en/v5.5.2/esp32s3/get-started/ ``` +##### Ubuntu Notes + +
+Ubuntu dependency versions and build steps (collapsed by default) + +Recommended baseline: + +- Ubuntu 22.04/24.04 +- Python >= 3.10 +- CMake >= 3.16 +- Ninja >= 1.10 +- Git >= 2.34 +- flex >= 2.6 +- bison >= 3.8 +- gperf >= 3.1 +- dfu-util >= 0.11 +- `libusb-1.0-0`, `libffi-dev`, `libssl-dev` + +Install and build on Ubuntu: + +```bash +sudo apt-get update +sudo apt-get install -y git wget flex bison gperf python3 python3-pip python3-venv \ + cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 + +./scripts/setup_idf_ubuntu.sh +./scripts/build_ubuntu.sh +``` + +
+ ### Configure MimiClaw uses a **two-layer config** system: build-time defaults in `mimi_secrets.h`, with runtime overrides via the serial CLI. CLI values are stored in NVS flash and take priority over build-time values. diff --git a/README_CN.md b/README_CN.md index 48455e3..8ca085f 100644 --- a/README_CN.md +++ b/README_CN.md @@ -58,6 +58,37 @@ cd mimiclaw # https://docs.espressif.com/projects/esp-idf/en/v5.5.2/esp32s3/get-started/ ``` +##### Ubuntu 备注 + +
+Ubuntu 依赖版本与安装编译步骤(默认折叠) + +建议基线: + +- Ubuntu 22.04/24.04 +- Python >= 3.10 +- CMake >= 3.16 +- Ninja >= 1.10 +- Git >= 2.34 +- flex >= 2.6 +- bison >= 3.8 +- gperf >= 3.1 +- dfu-util >= 0.11 +- `libusb-1.0-0`、`libffi-dev`、`libssl-dev` + +Ubuntu 安装与构建: + +```bash +sudo apt-get update +sudo apt-get install -y git wget flex bison gperf python3 python3-pip python3-venv \ + cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 + +./scripts/setup_idf_ubuntu.sh +./scripts/build_ubuntu.sh +``` + +
+ ### 配置 MimiClaw 使用**两层配置**:`mimi_secrets.h` 提供编译时默认值,串口 CLI 可在运行时覆盖。CLI 设置的值存在 NVS Flash 中,优先级高于编译时值。 diff --git a/README_JA.md b/README_JA.md index c9eebc2..41647ed 100644 --- a/README_JA.md +++ b/README_JA.md @@ -58,6 +58,37 @@ cd mimiclaw # https://docs.espressif.com/projects/esp-idf/en/v5.5.2/esp32s3/get-started/ ``` +##### Ubuntu メモ + +
+Ubuntu の依存バージョンとインストール/ビルド手順(デフォルト折りたたみ) + +推奨ベースライン: + +- Ubuntu 22.04/24.04 +- Python >= 3.10 +- CMake >= 3.16 +- Ninja >= 1.10 +- Git >= 2.34 +- flex >= 2.6 +- bison >= 3.8 +- gperf >= 3.1 +- dfu-util >= 0.11 +- `libusb-1.0-0`, `libffi-dev`, `libssl-dev` + +Ubuntu でのインストールとビルド: + +```bash +sudo apt-get update +sudo apt-get install -y git wget flex bison gperf python3 python3-pip python3-venv \ + cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 + +./scripts/setup_idf_ubuntu.sh +./scripts/build_ubuntu.sh +``` + +
+ ### 設定 MimiClawは**2層設定**を採用しています:`mimi_secrets.h`でビルド時のデフォルト値を設定し、シリアルCLIで実行時にオーバーライドできます。CLI設定値はNVS Flashに保存され、ビルド時の値より優先されます。 From 23ddc06b72f9e89d8d484b7b9497042ae563fe1b Mon Sep 17 00:00:00 2001 From: Asklv Date: Thu, 19 Feb 2026 12:55:38 +0000 Subject: [PATCH 07/13] docs: restore default install flow and keep Ubuntu notes collapsed Signed-off-by: Asklv --- README.md | 16 +++++----------- README_CN.md | 16 +++++----------- README_JA.md | 16 +++++----------- 3 files changed, 15 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 9490658..e7619ef 100644 --- a/README.md +++ b/README.md @@ -45,23 +45,17 @@ You send a message on Telegram. The ESP32-S3 picks it up over WiFi, feeds it int ### Install ```bash +# You need ESP-IDF v5.5+ installed first: +# https://docs.espressif.com/projects/esp-idf/en/v5.5.2/esp32s3/get-started/ + git clone https://github.com/memovai/mimiclaw.git cd mimiclaw -# Ubuntu quick setup (installs ESP-IDF v5.5.2 + toolchain for esp32s3) -./scripts/setup_idf_ubuntu.sh - -# Build with the configured ESP-IDF -./scripts/build_ubuntu.sh - -# Or use upstream manual setup: -# https://docs.espressif.com/projects/esp-idf/en/v5.5.2/esp32s3/get-started/ +idf.py set-target esp32s3 ``` -##### Ubuntu Notes -
-Ubuntu dependency versions and build steps (collapsed by default) +Ubuntu Install Recommended baseline: diff --git a/README_CN.md b/README_CN.md index 8ca085f..11d002a 100644 --- a/README_CN.md +++ b/README_CN.md @@ -45,23 +45,17 @@ MimiClaw 把一块小小的 ESP32-S3 开发板变成你的私人 AI 助理。插 ### 安装 ```bash +# 需要先安装 ESP-IDF v5.5+: +# https://docs.espressif.com/projects/esp-idf/en/v5.5.2/esp32s3/get-started/ + git clone https://github.com/memovai/mimiclaw.git cd mimiclaw -# Ubuntu 一键安装(安装 ESP-IDF v5.5.2 + esp32s3 工具链) -./scripts/setup_idf_ubuntu.sh - -# 使用已配置好的 ESP-IDF 构建 -./scripts/build_ubuntu.sh - -# 或按官方文档手动安装: -# https://docs.espressif.com/projects/esp-idf/en/v5.5.2/esp32s3/get-started/ +idf.py set-target esp32s3 ``` -##### Ubuntu 备注 -
-Ubuntu 依赖版本与安装编译步骤(默认折叠) +Ubuntu Install 建议基线: diff --git a/README_JA.md b/README_JA.md index 41647ed..8e49e00 100644 --- a/README_JA.md +++ b/README_JA.md @@ -45,23 +45,17 @@ Telegramでメッセージを送ると、ESP32-S3がWiFi経由で受信し、エ ### インストール ```bash +# まずESP-IDF v5.5+をインストールしてください: +# https://docs.espressif.com/projects/esp-idf/en/v5.5.2/esp32s3/get-started/ + git clone https://github.com/memovai/mimiclaw.git cd mimiclaw -# Ubuntu向けクイックセットアップ(ESP-IDF v5.5.2 + esp32s3ツールチェーン) -./scripts/setup_idf_ubuntu.sh - -# 設定済みESP-IDFでビルド -./scripts/build_ubuntu.sh - -# もしくは公式手順で手動セットアップ: -# https://docs.espressif.com/projects/esp-idf/en/v5.5.2/esp32s3/get-started/ +idf.py set-target esp32s3 ``` -##### Ubuntu メモ -
-Ubuntu の依存バージョンとインストール/ビルド手順(デフォルト折りたたみ) +Ubuntu Install 推奨ベースライン: From fc9b7c335671109820d654e50665237a68630e07 Mon Sep 17 00:00:00 2001 From: Asklv Date: Thu, 19 Feb 2026 12:56:19 +0000 Subject: [PATCH 08/13] docs: localize Ubuntu details summary labels Signed-off-by: Asklv --- README_CN.md | 2 +- README_JA.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README_CN.md b/README_CN.md index 11d002a..0480f44 100644 --- a/README_CN.md +++ b/README_CN.md @@ -55,7 +55,7 @@ idf.py set-target esp32s3 ```
-Ubuntu Install +Ubuntu 安装 建议基线: diff --git a/README_JA.md b/README_JA.md index 8e49e00..332e967 100644 --- a/README_JA.md +++ b/README_JA.md @@ -55,7 +55,7 @@ idf.py set-target esp32s3 ```
-Ubuntu Install +Ubuntu インストール 推奨ベースライン: From 652da2a7f756b8506ab4e6751a19843e399d7498 Mon Sep 17 00:00:00 2001 From: Bo Date: Thu, 19 Feb 2026 10:00:00 -0800 Subject: [PATCH 09/13] Add macOS build scripts --- scripts/build_macos.sh | 21 ++++++++++++++++++++ scripts/setup_idf_macos.sh | 39 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100755 scripts/build_macos.sh create mode 100755 scripts/setup_idf_macos.sh diff --git a/scripts/build_macos.sh b/scripts/build_macos.sh new file mode 100755 index 0000000..773d6c5 --- /dev/null +++ b/scripts/build_macos.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +set -euo pipefail + +PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +IDF_VERSION="${IDF_VERSION:-v5.5.2}" +ESP_ROOT="${ESP_ROOT:-$HOME/.espressif}" +DEFAULT_IDF_DIR="$ESP_ROOT/esp-idf-$IDF_VERSION" +IDF_DIR="${IDF_DIR:-${IDF_PATH:-$DEFAULT_IDF_DIR}}" + +if [[ ! -f "$IDF_DIR/export.sh" ]]; then + echo "ESP-IDF not found at: $IDF_DIR" >&2 + echo "Run scripts/setup_idf_macos.sh first, or set IDF_DIR/IDF_PATH." >&2 + exit 1 +fi + +# shellcheck source=/dev/null +. "$IDF_DIR/export.sh" + +cd "$PROJECT_ROOT" +idf.py set-target esp32s3 +idf.py build diff --git a/scripts/setup_idf_macos.sh b/scripts/setup_idf_macos.sh new file mode 100755 index 0000000..1f38bd3 --- /dev/null +++ b/scripts/setup_idf_macos.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [[ "${OSTYPE:-}" != "darwin"* ]]; then + echo "This setup script currently supports macOS only." >&2 + exit 1 +fi + +IDF_VERSION="${IDF_VERSION:-v5.5.2}" +ESP_ROOT="${ESP_ROOT:-$HOME/.espressif}" +IDF_DIR="${IDF_DIR:-$ESP_ROOT/esp-idf-$IDF_VERSION}" + +if ! command -v brew >/dev/null 2>&1; then + echo "Homebrew not found. Install it first:" >&2 + echo " /bin/bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"" >&2 + exit 1 +fi + +brew install \ + git wget flex bison gperf python cmake ninja ccache dfu-util libusb libffi openssl@3 + +mkdir -p "$ESP_ROOT" +if [[ ! -d "$IDF_DIR/.git" ]]; then + git clone --depth 1 --branch "$IDF_VERSION" --recursive \ + https://github.com/espressif/esp-idf.git "$IDF_DIR" +else + git -C "$IDF_DIR" fetch --tags --depth 1 origin "$IDF_VERSION" + git -C "$IDF_DIR" checkout "$IDF_VERSION" + git -C "$IDF_DIR" submodule update --init --recursive +fi + +"$IDF_DIR/install.sh" esp32s3 + +echo +echo "ESP-IDF installed. For current shell run:" +echo " . \"$IDF_DIR/export.sh\"" +echo "Then run from project root:" +echo " idf.py set-target esp32s3" +echo " idf.py build" From 56946350c7f2644cfb0199e5d8d70ab3290b359b Mon Sep 17 00:00:00 2001 From: Bo Date: Thu, 19 Feb 2026 10:05:00 -0800 Subject: [PATCH 10/13] Docs: add macOS install guide --- README.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/README.md b/README.md index e7619ef..c03d562 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,36 @@ sudo apt-get install -y git wget flex bison gperf python3 python3-pip python3-ve
+
+macOS Install + +Recommended baseline: + +- macOS 12/13/14 +- Xcode Command Line Tools +- Homebrew +- Python >= 3.10 +- CMake >= 3.16 +- Ninja >= 1.10 +- Git >= 2.34 +- flex >= 2.6 +- bison >= 3.8 +- gperf >= 3.1 +- dfu-util >= 0.11 +- `libusb`, `libffi`, `openssl` + +Install and build on macOS: + +```bash +xcode-select --install +/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + +./scripts/setup_idf_macos.sh +./scripts/build_macos.sh +``` + +
+ ### Configure MimiClaw uses a **two-layer config** system: build-time defaults in `mimi_secrets.h`, with runtime overrides via the serial CLI. CLI values are stored in NVS flash and take priority over build-time values. From 54ccf098f2444b163b2b159bbc72f499de3f2408 Mon Sep 17 00:00:00 2001 From: Bo Date: Thu, 19 Feb 2026 10:10:00 -0800 Subject: [PATCH 11/13] Docs(CN): add macOS install guide --- README_CN.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/README_CN.md b/README_CN.md index 0480f44..28923f8 100644 --- a/README_CN.md +++ b/README_CN.md @@ -83,6 +83,36 @@ sudo apt-get install -y git wget flex bison gperf python3 python3-pip python3-ve
+
+macOS 安装 + +建议基线: + +- macOS 12/13/14 +- Xcode Command Line Tools +- Homebrew +- Python >= 3.10 +- CMake >= 3.16 +- Ninja >= 1.10 +- Git >= 2.34 +- flex >= 2.6 +- bison >= 3.8 +- gperf >= 3.1 +- dfu-util >= 0.11 +- `libusb`、`libffi`、`openssl` + +macOS 安装与构建: + +```bash +xcode-select --install +/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + +./scripts/setup_idf_macos.sh +./scripts/build_macos.sh +``` + +
+ ### 配置 MimiClaw 使用**两层配置**:`mimi_secrets.h` 提供编译时默认值,串口 CLI 可在运行时覆盖。CLI 设置的值存在 NVS Flash 中,优先级高于编译时值。 From 97ab08ea57986a0bb7269ef48d3640883de74433 Mon Sep 17 00:00:00 2001 From: Bo Date: Thu, 19 Feb 2026 10:15:00 -0800 Subject: [PATCH 12/13] Docs(JA): add macOS install guide --- README_JA.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/README_JA.md b/README_JA.md index 332e967..c4d9d68 100644 --- a/README_JA.md +++ b/README_JA.md @@ -83,6 +83,36 @@ sudo apt-get install -y git wget flex bison gperf python3 python3-pip python3-ve
+
+macOS インストール + +推奨ベースライン: + +- macOS 12/13/14 +- Xcode Command Line Tools +- Homebrew +- Python >= 3.10 +- CMake >= 3.16 +- Ninja >= 1.10 +- Git >= 2.34 +- flex >= 2.6 +- bison >= 3.8 +- gperf >= 3.1 +- dfu-util >= 0.11 +- `libusb`, `libffi`, `openssl` + +macOS でのインストールとビルド: + +```bash +xcode-select --install +/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + +./scripts/setup_idf_macos.sh +./scripts/build_macos.sh +``` + +
+ ### 設定 MimiClawは**2層設定**を採用しています:`mimi_secrets.h`でビルド時のデフォルト値を設定し、シリアルCLIで実行時にオーバーライドできます。CLI設定値はNVS Flashに保存され、ビルド時の値より優先されます。 From 61d820a138ad06197661f7d8bb41bb1e33e39561 Mon Sep 17 00:00:00 2001 From: Bo Date: Thu, 19 Feb 2026 10:20:00 -0800 Subject: [PATCH 13/13] chore: macOS setup skips installed tools and brew failures --- scripts/setup_idf_macos.sh | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/scripts/setup_idf_macos.sh b/scripts/setup_idf_macos.sh index 1f38bd3..616a0c6 100755 --- a/scripts/setup_idf_macos.sh +++ b/scripts/setup_idf_macos.sh @@ -16,8 +16,41 @@ if ! command -v brew >/dev/null 2>&1; then exit 1 fi -brew install \ - git wget flex bison gperf python cmake ninja ccache dfu-util libusb libffi openssl@3 +ensure_brew_pkg() { + local pkg="$1" + if brew list --formula --versions "$pkg" >/dev/null 2>&1; then + echo "brew: $pkg already installed, skipping" + else + if ! brew install "$pkg"; then + echo "warn: failed to install $pkg via brew; continuing" >&2 + return 0 + fi + fi +} + +ensure_brew_pkg_if_missing_cmd() { + local pkg="$1" + local cmd="$2" + if command -v "$cmd" >/dev/null 2>&1; then + echo "cmd: $cmd already available, skipping brew $pkg" + else + ensure_brew_pkg "$pkg" + fi +} + +ensure_brew_pkg_if_missing_cmd git git +ensure_brew_pkg_if_missing_cmd wget wget +ensure_brew_pkg_if_missing_cmd flex flex +ensure_brew_pkg_if_missing_cmd bison bison +ensure_brew_pkg_if_missing_cmd gperf gperf +ensure_brew_pkg_if_missing_cmd python python3 +ensure_brew_pkg_if_missing_cmd cmake cmake +ensure_brew_pkg_if_missing_cmd ninja ninja +ensure_brew_pkg_if_missing_cmd ccache ccache +ensure_brew_pkg_if_missing_cmd dfu-util dfu-util +ensure_brew_pkg libusb +ensure_brew_pkg libffi +ensure_brew_pkg openssl@3 mkdir -p "$ESP_ROOT" if [[ ! -d "$IDF_DIR/.git" ]]; then