# 第三方依赖与授权说明

适用应用：桌宠副屏（`local.watcher_desktop_pet`）。版本要求以 `app.json`、`firmware/main/idf_component.yml` 和 `firmware/dependencies.lock` 为准。

## 第一方代码

本应用的第一方 Python Application、原创 renderer bridge、配套固件的原创代码及工具按根目录 [LICENSE](LICENSE) 中的完整 Apache License 2.0 发布。

`renderer-bridge/m5-frame-export.cjs` 与 `renderer-bridge/pet-touch-renderer.cjs` 是本项目自行编写、从自有 PoC 迁入的桥接代码。其文件名及协议中的历史名称不表示随包分发了另一桌宠产品的实现、安装包或角色资源。

上述授权范围不包含下文列出的外部软件、模型或媒体。它们的许可和版权声明由各自的实际发布版本提供。

## 外部 Python 依赖

以下版本来自 `app.json`，由 SDK 运行环境另行安装；本应用源码发布包不附带这些包的源码、wheel、解释器或本地虚拟环境。

| 依赖 | 本版本要求 | 说明 |
|---|---|---|
| `watcherobot` | `==0.1.14.dev20261103` | 外部 WatcheRobot Python SDK 开发构建；当前兼容条件见 [README.md](README.md) |
| `numpy` | `==2.1.3` | 外部安装依赖 |
| `opencv-python-headless` | `==4.12.0.88` | 外部安装依赖 |
| `Pillow` | `==12.3.0` | 外部安装依赖 |
| `psutil` | `==7.2.2` | 外部安装依赖 |

这些依赖的授权与附带第三方声明以各自对应版本的上游发布包为准。本应用的 Apache-2.0 授权不替代它们的许可文件。

## 外部硬件 SDK 与固件构建依赖

本发布包保留配套固件工程源码和构建清单。硬件 SDK 是构建时另行获取的外部依赖，`firmware/vendor/` 整个目录不随本应用发布。公开仓库地址、所需的完整公开提交号及获取步骤统一见 [firmware/README.md](firmware/README.md)；复现构建应使用该说明固定的公开提交。硬件 SDK 来源清单中的上游来源提交号不能替代公开仓库的 checkout 提交号。

`firmware/managed_components/`、`firmware/build/` 及其第三方库、构建产物不随本应用源码发布。以下外部构建依赖版本记录自当前 `firmware/dependencies.lock`：

| 依赖 | 固定版本 |
|---|---|
| ESP-IDF | `6.0.2` |
| `lvgl/lvgl` | `8.4.0` |
| `espressif/button` | `3.2.3` |
| `espressif/cjson` | `1.7.19` |
| `espressif/cmake_utilities` | `0.5.3` |
| `espressif/esp_audio_codec` | `2.4.1` |
| `espressif/esp_io_expander` | `1.0.1` |
| `espressif/esp_lcd_spd2010` | `1.0.1` |
| `espressif/esp_lcd_touch` | `1.1.1` |
| `espressif/esp_lcd_touch_spd2010` | `0.0.1` |
| `espressif/esp_new_jpeg` | `1.0.1` |
| `espressif/knob` | `0.1.4` |
| `espressif/led_strip` | `2.5.4` |

锁文件另记录硬件 SDK 提供的本地组件 `esp_codec_dev`（`1.2.0`）与 `sensecap-watcher`（`1.0.0`）。这些组件来自外部硬件 SDK，同样不随本应用发布。

实际获取的 SDK、ESP-IDF 与组件保留各自版权、许可和第三方声明。本文件记录构建依赖，不将其列为本发布包已附带的软件。

### 配套固件的二进制分发

开发目录中的 vendor 对照副本包含根目录 GPLv3 文本，硬件 SDK 子目录 README 则声明其第一方快照保留 Apache-2.0，其他组件保留各自许可。该 SDK 的 `LICENSE` 与标准 Apache License 2.0 文本存在差异，包括省略部分专利条款和可分离作品定义。

该副本整体不随 App 源码发布，但配套固件二进制会包含实际链接的第三方代码。本项目保留 SDK 实际提供的许可原文；不把它替换成标准文本，也不替外部组件重新授权。原文允许源代码或目标代码再分发，要求保留适用许可、版权和修改说明。

固件目录中的 [DISTRIBUTION_NOTICES.txt](firmware/DISTRIBUTION_NOTICES.txt) 汇总本次已链接 SDK、组件、ESP-IDF、运行库及内置字体所需的声明和许可正文。相同许可正文可由多个组件共用，组件及版权对应关系仍保留。该文件随独立固件 ZIP 的 `flash_args.txt` 注释行完整交付；每个 `# ` 前缀仅为刷写参数注释，不属于原许可正文。App 源码中另保留可直接阅读的副本。

两处硬件 SDK 修改由 [vendor-changes.patch](firmware/patches/vendor-changes.patch) 提供，补丁包含文件内显著修改声明，内容是显示 DMA 暂存行数配置和对应缓冲区大小计算。复现构建须在固定公开提交上应用此补丁。固件包仅包含本项目 ESP32 application，不附带 bootloader、NVS、STM32 或 Himax 镜像。

## 外部桌宠与角色资源

本应用与用户另行安装的 dsh-pet `0.3.8` Electron helper 配合使用。dsh-pet 本体、Electron 运行时、原桌宠安装包、角色模型、动作、表情和媒体资源不随本应用发布。

用户自行取得并保管这些外部软件与资源。其授权以对应软件和资源的来源说明为准；本应用的代码授权不为它们另行提供使用或再分发授权。

本地取画会话、私有备份、日志、照片和构图校准数据也不属于公开源码发布内容。
