Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
12e9ce4
LED driver: lock Phase-A contract, reorder plan to test-first
ewowi Jun 9, 2026
ceff259
LED driver Phase A+B: WS2812 encoder contract + red test
ewowi Jun 9, 2026
78ea0b8
LED driver Phase C: implement WS2812 encoder — encoder test goes green
ewowi Jun 9, 2026
7386bd0
LED driver Phase C+D: RMT WS2812 driver + HAL loopback, proven on har…
ewowi Jun 9, 2026
6c3e269
LED driver: in-firmware loopback self-test + conditional-control fixes
ewowi Jun 10, 2026
1b14bee
Add MoonLight Ripples effect (rename old → Rings) + screenshot/flash …
ewowi Jun 10, 2026
1f6b73a
Multi-pin RMT driver, ArtNet receive effect, live ArtNet matrix test
ewowi Jun 10, 2026
f15eb01
Multi-protocol network I/O: ArtNet + E1.31 + DDP, Resolume discovery
ewowi Jun 10, 2026
b868fa2
S3 LCD_CAM 8-lane WS2812 driver + Improv TX-power provisioning
ewowi Jun 10, 2026
c5170df
Fix classic-ESP32 boot-loop regression + RMT flicker-detection tooling
ewowi Jun 11, 2026
f8c6a58
P4 round 1: ESP32-P4-NANO board support, Ethernet-only
ewowi Jun 11, 2026
0ffdcaf
P4 round 2: ParlioLedDriver (8-lane parallel WS2812 over Parlio)
ewowi Jun 11, 2026
fd6c1d8
LED driver Phase D: Parlio rx/tx loopback self-test, proven on P4
ewowi Jun 11, 2026
7a36bfb
Add MicModule: I2S microphone + 16-band audio-reactive spectrum
ewowi Jun 11, 2026
7d0cfaf
Disable WiFi power-save; process CodeRabbit audio review
ewowi Jun 12, 2026
b79d54f
P4 WiFi-over-C6 scaffold + audio DC-blocker + docs/principle pass
ewowi Jun 12, 2026
51e02d1
Rename MicModule → AudioModule, link primary sources, process CodeRab…
ewowi Jun 12, 2026
6049ffa
Process pre-merge reviewer findings: dedup LED drivers + doc/behavior…
ewowi Jun 12, 2026
c7fab1e
Empty user-soldered pin defaults; process CodeRabbit findings
ewowi Jun 12, 2026
7c310f4
Process two review rounds; promote strongpoints to README + a no-rebo…
ewowi Jun 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions .claude/settings.local.cleaned.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
{
"permissions": {
"allow": [
"Bash(./build/projectMM:*)",
"Bash(./build/test/mm_scenarios:*)",
"Bash(./build/test/mm_tests:*)",
"Bash(./test/mm_tests --test-case=\"AudioLevel*,AudioBands*\")",
"Bash(./test/mm_tests)",
"Bash(/usr/bin/curl -s --max-time 12 \"https://moonmodules.org/projectMM/install/boards.json\")",
"Bash(arp -a)",
"Bash(awk:*)",
"Bash(cat:*)",
"Bash(cmake --build /Users/ewoud/Developer/GitHub/MoonModules/projectMM/build -j 8)",
"Bash(cmake --build build --target mm_tests)",
"Bash(cmake --build build -j 8)",
"Bash(cmake --build build -j)",
"Bash(cmake --build build)",
"Bash(cmake -B build)",
"Bash(cp .claude/settings.local.json .claude/settings.local.cleaned.json)",
"Bash(ctest --output-on-failure)",
"Bash(ctest --test-dir build:*)",
"Bash(ctest)",
"Bash(curl -s --max-time 10 https://moonmodules.org/projectMM/install/)",
"Bash(curl -s --max-time 3 -o /dev/null -w \"%{http_code}\" http://localhost:8765/projectMM.bin)",
"Bash(curl -s -o /dev/null -w \" boards.json: HTTP %{http_code}\\\\n\" --max-time 10 https://moonmodules.org/projectMM/install/boards.json)",
"Bash(curl -s -o /dev/null -w \" index.html: HTTP %{http_code}\\\\n\" --max-time 10 https://moonmodules.org/projectMM/install/)",
"Bash(curl -sS *)",
"Bash(curl -sf *)",
"Bash(echo:*)",
"Bash(gh api *)",
"Bash(gh auth *)",
"Bash(gh pr *)",
"Bash(gh release *)",
"Bash(gh run *)",
"Bash(gh search *)",
"Bash(gh workflow *)",
"Bash(git -C ~/esp/esp-idf describe)",
"Bash(git check-ignore *)",
"Bash(git fetch *)",
"Bash(git mv:*)",
"Bash(grep:*)",
"Bash(gunzip:*)",
"Bash(head:*)",
"Bash(ipconfig getsummary *)",
"Bash(ls:*)",
"Bash(networksetup -listallhardwareports)",
"Bash(node --check:*)",
"Bash(pkill:*)",
"Bash(sed:*)",
"Bash(tail:*)",
"Bash(timeout 5 dns-sd -B _http._tcp local.)",
"Bash(uv run *)",
"Bash(xargs -n1 basename)",
"Read(//Users/ewoud/**)",
"Read(//Users/ewoud/.cache/**)",
"Read(//Users/ewoud/.espressif/tools/esp-rom-elfs/**)",
"Read(//Users/ewoud/Developer/GitHub/MoonModules/**)",
"Read(//Users/ewoud/Library/Caches/ms-playwright/**)",
"Read(//Users/ewoud/esp/esp-idf/**)",
"Read(//Users/ewoud/esp/esp-idf/components/esp_driver_rmt/src/**)",
"Read(//Users/ewoud/esp/esp-idf/components/esp_lcd/i80/**)",
"Read(//dev/**)",
"WebFetch(domain:components.espressif.com)",
"WebFetch(domain:components101.com)",
"WebFetch(domain:developer.espressif.com)",
"WebFetch(domain:devices.esphome.io)",
"WebFetch(domain:docs.espressif.com)",
"WebFetch(domain:easyelecmodule.com)",
"WebFetch(domain:files.waveshare.com)",
"WebFetch(domain:github.com)",
"WebFetch(domain:kno.wled.ge)",
"WebFetch(domain:mm.kno.wled.ge)",
"WebFetch(domain:raw.githubusercontent.com)",
"WebFetch(domain:www.digikey.com)",
"WebFetch(domain:www.farnell.com)",
"WebFetch(domain:www.waveshare.com)",
"WebSearch"
],
"additionalDirectories": [
"/tmp"
]
}
}
5 changes: 4 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -392,7 +392,10 @@ jobs:
cp src/ui/install-picker.js pages/install/
# library.json — install page reads the project version from it.
cp library.json pages/install/
ls -la pages/install/
# Root landing page (moonmodules.org/projectMM/) → Flash button + repo
# links. Without it the bare root 404s; only /install/ would exist.
cp docs/landing/index.html pages/index.html
ls -la pages/ pages/install/

- uses: actions/upload-pages-artifact@v3
with:
Expand Down
150 changes: 76 additions & 74 deletions CLAUDE.md

Large diffs are not rendered by default.

92 changes: 52 additions & 40 deletions README.md

Large diffs are not rendered by default.

247 changes: 126 additions & 121 deletions docs/architecture.md

Large diffs are not rendered by default.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/boards/esp32-d0-16mb.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/boards/esp32-p4-nano.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/boards/esp32-s3-n16r8v.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/screenshots/CheckerboardModifier.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/screenshots/CheckerboardModifier.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/screenshots/GameOfLifeEffect.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/screenshots/GameOfLifeEffect.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/screenshots/MultiplyModifier.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/screenshots/MultiplyModifier.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/screenshots/RingsEffect.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/screenshots/RingsEffect.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/RipplesEffect.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/RipplesEffect.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/backlog/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,4 @@ One-off research documents that informed a future direction, kept for the reason
- [leddriver-analysis-top-down.md](leddriver-analysis-top-down.md) — reasons from the end goal (driving WS2812-class LEDs from a GPIO pin) toward a generic driver architecture, per-platform implementation, and a testing strategy.
- [leddriver-analysis-bottom-up.md](leddriver-analysis-bottom-up.md) — the companion landscape survey: catalogues the existing LED-driver libraries across ESP32, Teensy, Raspberry Pi, and PC, and recommends a path.
- [leddriver-increment-1-plan.md](leddriver-increment-1-plan.md) — the concrete first-increment plan distilled from the two analyses: RMT/WS2812B on classic ESP32, the unified one-base driver hierarchy (ArtNet + LED + Preview as peer interpreters of the light preset), the platform seam, and the loopback + host-encoder test strategy. Locked product-owner decisions at the top.
- [leddriver-increment-2-plan.md](leddriver-increment-2-plan.md) — the second increment: 2a multi-pin RMT (implemented; classic + S3 via SOC capability constants) and 2b parallel LCD_CAM on the S3 (open: lane count and LEDs-per-lane targets). Locked decisions and the deferred per-driver buffer window at the top.
Loading