Native Shell
Native Shell:AI 生成的 UI,在你的應用中原生呈現,涵蓋每個平台。iOS、Android、macOS、Windows 與 Linux 上的應用、GPUI 應用與網頁在執行時載入已簽名、沙箱隔離的 TSX 模組並繪製 th
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Open-source wireless control for Halloween and holiday props.
Small ESP32 boards hidden in your props talk to each other by radio. A sensor at the gate can set off a skeleton by the porch, a light show can come on at dusk, and nothing needs wires across the lawn or an internet connection. You set it all up from a web page, with no code.
Using PropMesh? Start at the docs site: mrwillson2u.github.io/propmesh. It has step-by-step guides, a page for each supported board, an installer that puts the firmware on a board from your browser, and a copy of the console you can try with no hardware.
This README is for people working on PropMesh itself.
Beta. PropMesh runs the project's own yard for Halloween 2026 on off-the-shelf boards, and it changes quickly. Some features haven't been tried on real hardware yet. The docs site and
docs/status.mdsay which.
The firmware runs on inexpensive ESP32 dev boards. You plug a board in, open the console, and tell it what each pin does: relay, LED dimmer, servo, DC motor, LED strip, or sensor. The board stores that and runs on its own.
| Board | Status |
|---|---|
| ESP32 DevKit V1 (30-pin) | Runs the project's yard |
| Adafruit HUZZAH32 Feather | Partly tested |
| ESP32-C6 SuperMini | Built, not yet flashed |
| ESP32-C3 SuperMini | Built, not yet flashed |
Each board's page on the docs site has the details. To support another board, see Adding a board.
Two purpose-built boards run the same firmware and console. The PCBs
come after Halloween 2026, aiming at the 2027 season. Designs are in
hardware/ under CERN-OHL-S.
| PropMesh Pro | PropMesh Mini | |
|---|---|---|
| For | a prop that does everything | a small prop on a battery |
| MCU | ESP32-S3-WROOM-1 / 1U (N8R2) | ESP32-S3-WROOM-1U-N16R2 |
| Power | 12–30 V DC | 1S Li-ion |
| Motors | 2 stepper sockets (each can run 2 brushed DC) + 2 brushed DC | — |
| Servos | 6 | pending |
| Relays (dry contact, 30 V max) | 3 | pending |
| Addressable LED | 2 (3- or 4-wire) | pending |
| Dimmable LED | 6 | pending |
| Sensors | 3 digital, 2 analog | pending |
| Audio | I²S + microSD | I²S, sounds stored in flash |
| State | schematic done; layout next | module chosen; pin allocation being redone for the S3 |
"Pending" means the Mini's earlier ESP32-C3 plan was replaced on
2026-09-19 and its new allocation isn't finished. Neither board switches
mains power. That is a design decision; see CLAUDE.md.
PropMesh grew out of one-off prop controllers built for the 2024 and
2025 seasons: a painlessMesh network of ESP32-C3s, a stepper-driven prop
lid, a fire-effect lantern, and a bridge for Bluetooth flood lights.
Those prototypes are kept in reference/, with
credentials removed. This repository started in September 2026 to turn
them into one system.
A feature counts as done when it has run on real boards. The host test
suite (firmware/test/) covers the pure logic: pin rules, show
scheduling, sunrise and sunset, ramps, mesh framing and reassembly.
Bench results, with dates and numbers, are recorded in
docs/generic-boards.md next to each
feature's design; anything that has not yet run on hardware is marked
there, in docs/status.md, and on the docs site.
docs/status.md START HERE: where things stand, what's next, bench tests waiting
docs/generic-boards.md the firmware that runs today: design, APIs, bench results per feature
docs/software-plan.md architecture, mesh protocol, console plan, licensing
docs/hardware-spec.md Pro and Mini: BOM, costs, mechanical, manufacturing
firmware/node/ the node firmware (PlatformIO), one env per board profile
firmware/common/ shared code: propmesh/ (mesh core, pure logic, generated
headers) and propmesh-node/ (drivers, API, sleep, OTA, sync)
firmware/test/ host tests (pio test -e native)
firmware/mesh-node/ the early ESP-NOW testbed (Sept 2026), kept building in CI
console/ the web console (Vite + React + TypeScript), with a simulator
website/ the docs site (Astro Starlight), browser flasher, screenshots
boards/ SOURCE OF TRUTH: what each pin of a supported dev board can do
pinmap.yaml SOURCE OF TRUTH: Pro / Mini pin assignments
schema/messages.yaml SOURCE OF TRUTH: mesh messages and enums
tools/ generators (genboards, genmsg, genpins), bridge.py, ota_serve.py,
and KiCad helpers for the hardware (checknet, checksetup, …)
hardware/ KiCad projects for the Pro and the Mini
reference/ pre-PropMesh prototypes (2024–25), scrubbed; see its README
Generated files are never edited by hand. Edit the source, regenerate, and commit both. CI fails if they disagree.
python3 tools/genboards.py # boards/*.yaml -> boards_gen.h, boards_gen.ts
python3 tools/genmsg.py # schema/*.yaml -> proto_gen.h, proto_gen.ts
python3 tools/genpins.py # pinmap.yaml -> pins_*.h
# add --check to verify instead of write
You need Python 3, Node 22, and PlatformIO.
git clone https://github.com/mrwillson2u/propmesh.git && cd propmesh
git checkout dev
python3 -m venv .venv && . .venv/bin/activate
pip install -r requirements.txt platformio pyserial
npm ci --prefix console && npm ci --prefix website
Firmware
pio test -d firmware/test -e native # host tests
pio run -d firmware/node -e esp32-devkit-v1 # build
pio run -d firmware/node -e esp32-devkit-v1 -t upload # flash a board on USB
Board envs: esp32-devkit-v1, esp32-huzzah32, esp32-c6-supermini,
esp32-c3-supermini. On Linux, USB serial needs your user in the
dialout group.
Console
npm run dev --prefix console # then open http://localhost:5173/?sim=1
?sim=1 connects to a simulated bridge with two boards behind it, so you
can work on the UI with no hardware. USB connections need Chrome or Edge.
Docs site
npm run dev --prefix website # http://localhost:4321/propmesh/
website/README.md covers the board pages, the flasher, the screenshots
and how to write a page.
Talking to a live mesh from a terminal
python3 tools/bridge.py --host propmesh.local status
This reaches the bridge over WiFi, so nothing gets reset by opening a USB
port. docs/status.md §5 covers working on a separate server, tunnels,
and serving firmware for updates.
A board works with PropMesh once it has a profile: a YAML file in
boards/ listing what each pin can do and what to warn about.
board_type to BoardType in schema/messages.yaml.python3 tools/genmsg.py && python3 tools/genboards.py. The
generator refuses advice the pin can't follow.firmware/node/platformio.ini with
-DPM_BOARD_PROFILE=PM_BOARD_<ID>.The board's page on the docs site and its pinout in the console are generated from the same file. Not comfortable doing this? Use the board request form.
Pull requests go to dev. main only takes PRs from dev and
publishes the docs site. Read CONTRIBUTING.md first:
it has the checks to run and the sign-off each commit needs.
The decisions in CLAUDE.md under "Locked design decisions"
were settled after analysis. To change one, say why its reasoning no
longer holds. Bugs, questions and reports from real yards go in
issues.
Copyleft open source: use it, change it, sell things built with it, but
share your changes and keep the credit. Details and reasoning:
LICENSING.md.
| Part | License |
|---|---|
| Firmware, tools, board profiles | GPL-3.0-or-later |
| Console (web app) | AGPL-3.0-or-later |
Board designs (hardware/) | CERN-OHL-S-2.0 |
| Docs and the docs site's text | CC BY-SA 4.0 |
The PropMesh name and logo: TRADEMARK.md. Credits and
third-party code: THIRD_PARTY.md.