You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit f4292bb
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: .github/workflows/release.yml
+6-17Lines changed: 6 additions & 17 deletions
Original file line number
Diff line number
Diff line change
@@ -615,6 +615,10 @@ jobs:
615
615
dist/MoonLight-control-surface.json
616
616
ls -la dist/MoonLight-control-surface.json
617
617
618
+
# The module help this release's app shows, so a device reads the help of the firmware it runs: a newer file names controls it lacks. deploy-pages mirrors it beside the release's binaries, where the device's page can read it.
Copy file name to clipboardExpand all lines: CLAUDE.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ The rules that bind every change. What the system is: [README.md](README.md). Ho
4
4
5
5
A high-performance system driving large LED installations and DMX fixtures. One source tree drives ESP32, Teensy, Raspberry Pi, macOS, Windows and Linux.
6
6
7
-
**Read on every task**: this file. **Read when the task touches them**: the architecture, the two standards pages, and the spec of the module being changed. Everything else is linked from where it applies.
7
+
**Read on every task**: this file. **Read when the task touches them**: the architecture, the two standards pages, and the header of the module being changed. Everything else is linked from where it applies.
8
8
9
9
## Principles
10
10
@@ -130,7 +130,7 @@ flowchart TB
130
130
131
131
Keep each commit under ~100 changed files: CodeRabbit reviews the files a pushed commit changes, and past that the commit silently loses a review layer. A mechanical sweep (em-dashes, a metrics refresh) is a commit of its own, apart from behavioral fixes, so both stay reviewable.
132
132
133
-
**A contributed pull request is one topic, about 400 changed lines and ten files at most**, tests included. Generated files (metrics, images, scenario observations) are a category of their own, outside the count. Past a few hundred lines a review stops catching defects (the SmartBear and Cisco review study; Google's guide on small changes), and the product owner reviews every line. Every pull request is based on main. The one exception is a step of a larger topic, which lands as its own pull request and may build on the step below it. A stacked pull request from a fork shows its parents, so it is reviewed once the one below it merges.
133
+
**A contributed pull request is one topic, max 400 changed lines and ten files**, tests included. Generated files (metrics, images, scenario observations) are a category of their own, outside the count. Past a few hundred lines a review stops catching defects (the SmartBear and Cisco review study; Google's guide on small changes), and the product owner reviews every line. Every pull request is based on main. The one exception is a step of a larger topic, which lands as its own pull request and may build on the step below it. A stacked pull request from a fork shows its parents, so it is reviewed once the one below it merges.
134
134
135
135
### Build and test
136
136
@@ -173,7 +173,7 @@ New behavior is pinned before it ships: a unit test for module logic, a scenario
173
173
174
174
### Document
175
175
176
-
Docs land with the code: the module's spec and catalog card describe what shipped, a breaking change gets its [MIGRATING](docs/reference/MIGRATING.md) entry, and a shipped backlog item or spec draft is deleted. The merge gate verifies this happened. How the writing looks and how much of it there is: [documentation-standards.md](docs/contributing/documentation-standards.md), which is the one home for all of it.
176
+
Docs land with the code: the module's header describes what shipped, a breaking change gets its [MIGRATING](docs/reference/MIGRATING.md) entry, and a shipped backlog item or spec draft is deleted. The merge gate verifies this happened. How the writing looks and how much of it there is: [documentation-standards.md](docs/contributing/documentation-standards.md), which is the one home for all of it.
Copy file name to clipboardExpand all lines: CMakeLists.txt
+4-1Lines changed: 4 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -251,10 +251,13 @@ add_custom_target(build_info_gen ALL
251
251
# (no semicolons on the command line — those would either get split by `make`
252
252
# on POSIX hosts or land as literals in the value on MSBuild) and let
253
253
# embed_ui.cmake assemble the `<uv> run python` list internally.
254
+
# Every UI file, by glob, so a file added to src/ui re-embeds without a second edit here: the hand-kept list had already missed migrate.js, semver.js and preview-adapt.js.
Copy file name to clipboardExpand all lines: README.md
+9-23Lines changed: 9 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,9 +28,9 @@ If you like MoonLight, give it a star, fork it, or open an issue. It helps the p
28
28
29
29
🎵 **Audio-reactive**: an I²S microphone drives a 16-band FFT spectrum and sound level.
30
30
31
-
🏠 **Home automation**: a device joins Homebridge and any MQTT hub for on/off, brightness and color. See [the MQTT module](docs/moonmodules/core/services.md#mqtt).
31
+
🏠 **Home automation**: a device joins Homebridge and any MQTT hub for on/off, brightness and color. See [the MQTT module](https://moonmodules.org/MoonLight/moonmodules/core/system.html#mqtt).
32
32
33
-
📁 **On-device file manager**: browse and edit the device filesystem from the browser, with drag-drop upload and [firmware update over the LAN](docs/moonmodules/core/services.md#firmware-update).
33
+
📁 **On-device file manager**: browse and edit the device filesystem from the browser, with drag-drop upload and [firmware update over the LAN](https://moonmodules.org/MoonLight/moonmodules/core/system.html#firmware-update).
34
34
35
35
🛡️ **Robust to any input**: add, delete, replace or reconfigure any module in any order, at any grid size, and the device keeps running. Every crash found becomes a regression test.
36
36
@@ -94,35 +94,35 @@ The domain-neutral runtime: the module base class, controls, scheduling, persist
94
94
95
95

The light domain, and the bigger half of the code: light values, layouts, layers, mapping, blending, effects, modifiers and LED drivers. This is what you build a light show from, stacking a layout, then layers of effects and modifiers, then a driver.
102
102
103
103

Scripts compiled to native machine code on the device. Write an effect in the browser, and it runs at the speed of compiled code rather than an interpreter, on ESP32 and on the desktop alike.
Architecture: [MoonLive](docs/explanation/architecture/moonlive.md) · Use it: [MoonLiveEffect](docs/moonmodules/light/moonlive.md) · [the script language](moonlive/README.md)
113
+
Architecture: [MoonLive](docs/explanation/architecture/moonlive.md) · Use it: [MoonLiveEffect](https://moonmodules.org/MoonLight/moonmodules/light/moonlive.html) · [the script language](moonlive/README.md)
114
114
115
115
### MoonI80
116
116
117
-
Our own DMA driver for parallel WS2812 output, one of the backends [ParallelLedDriver](docs/moonmodules/light/drivers.md#parallelled) selects. It adds a streaming ring and 74HCT595 expander support, which is what drives 12,288 lights from a single board.
117
+
Our own DMA driver for parallel WS2812 output, one of the backends [ParallelLedDriver](https://moonmodules.org/MoonLight/moonmodules/light/drivers.html#parallelled) selects. It adds a streaming ring and 74HCT595 expander support, which is what drives 12,288 lights from a single board.
118
118
119
-
Architecture: [MoonLight drivers](docs/explanation/architecture/moonlight.md#drivers) · Use it: [LED drivers](docs/moonmodules/light/drivers.md#moonled)
119
+
Architecture: [MoonLight drivers](docs/explanation/architecture/moonlight.md#drivers) · Use it: [LED drivers](https://moonmodules.org/MoonLight/moonmodules/light/drivers.html#parallelled)
120
120
121
121
### MoonBase
122
122
123
123
A small maintenance image in the factory slot that installs updates into one large app slot, instead of spending half the flash on a second copy of the firmware. A power cut mid-update lands back in MoonBase rather than a half-written app.
124
124
125
-
Architecture: [MoonBase](docs/explanation/architecture/moonbase.md) · Use it: [System modules](docs/moonmodules/core/system.md)
125
+
Architecture: [MoonBase](docs/explanation/architecture/moonbase.md) · Use it: [System modules](https://moonmodules.org/MoonLight/moonmodules/core/system.html)
126
126
127
127
### MoonCloud
128
128
@@ -213,21 +213,7 @@ We built and maintained these, so MoonLight rests on our own hands-on experience
213
213
214
214
## Credits
215
215
216
-
People whose work directly shaped parts of MoonLight. We study their thinking with respect and write our own code against our architecture:
217
-
218
-
-**[WLED](https://github.com/wled/WLED) and [WLED-MM](https://github.com/MoonModules/WLED)**: MoonLight is born out of WLED and takes the usermod idea further, where everything is a module. A MoonLight device also acts as a WLED device and talks to WLED devices.
219
-
-**Frank ([softhack007](https://github.com/softhack007))**: main author of the WLED-MM audio-reactive usermod. The ideas behind [AudioService](docs/moonmodules/core/moxygen/AudioService.md), including the adaptive noise gate analyzed with his permission, descend from years of collaboration.
220
-
-**[troyhacks](https://github.com/troyhacks/WLED)**: reworked the WLED-MM audio DSP onto Espressif's [esp-dsp](https://github.com/espressif/esp-dsp) FFT, the same choice AudioService makes.
221
-
-**[Stefan Petrick](https://github.com/StefanPetrick)**: the generative-field vocabulary from [Animartrix](https://github.com/StefanPetrick/animartrix), [FunkyNoise](https://github.com/StefanPetrick/FunkyNoise) and [ColorTrails](https://github.com/StefanPetrick/ColorTrails). [Aurora](docs/moonmodules/light/effects.md#aurora), [PolarNoise](docs/moonmodules/light/effects.md#polarnoise), [Tunnel](docs/moonmodules/light/effects.md#tunnel) and [Trails](docs/moonmodules/light/effects.md#trails) sit in that tradition, written on the published algorithms underneath.
222
-
-**[hpwit](https://github.com/hpwit) (Yves Bazin)**: the clockless I2S, RMT and Parlio driver techniques, and the [ESPLiveScript](https://github.com/hpwit/ESPLiveScript) engine behind MoonLive.
223
-
-**Christophe Gagnier ([@Moustachauve](https://github.com/Moustachauve))**: author of the native [WLED-Android](https://github.com/Moustachauve/WLED-Android) and [WLED-iOS](https://github.com/Moustachauve/WLED-iOS) apps, whose source let MoonLight devices appear in them.
224
-
-**The [Improv Wi-Fi](https://github.com/improv-wifi) project**: the open serial provisioning standard the web installer uses.
225
-
-**[FastLED](https://github.com/FastLED/FastLED)**: the canonical LED-effects library whose names and models MoonLight carries forward (`scale8`, `sin8`, the gradient-palette model, the `beatsin8` family) so a contributor recognizes them on sight. The implementations are our own, integer-only and hot-path-tuned.
226
-
-**[FPP](https://github.com/FalconChristmas/fpp) (Falcon Player)**: the show player that prompted [PanelCardDriver](docs/moonmodules/light/drivers.md#panelcard): if a Linux host can feed a wall of HUB75 panels, so can the board already rendering them.
227
-
-**[Tasmota](https://github.com/arendst/Tasmota) and Mathieu Carbou's [MycilaSafeBoot](https://github.com/mathieucarbou/MycilaSafeBoot)**: the safeboot pattern behind [MoonBase](docs/explanation/architecture/moonbase.md), our from-scratch minimal take on it.
228
-
-**Damian Schneider ([dedehai](https://github.com/DedeHai))**: author of the WLED Particle System, whose shape our [particle kernel](docs/moonmodules/light/power-functions.md#particles) follows in fixed point.
229
-
-**[Piper](https://github.com/OHF-Voice/piper1-gpl) (OHF-Voice)**: the offline text-to-speech that narrates the documentation clips, with voice models from [rhasspy/piper-voices](https://huggingface.co/rhasspy/piper-voices). GPL, and used as a tool rather than linked: MoonTube calls it to render an audio track.
230
-
-**wladi ([myhome-control](https://shop.myhome-control.de))**: designer of the [MHC-WLED ESP32-P4 shield](https://shop.myhome-control.de/en/ABC-WLED-ESP32-P4-shield/HW10027), and the source of the pinout details that got its line-in audio working.
216
+
The people, projects and published algorithms whose work shaped MoonLight, each with what it shaped and the modules that name it, are on the [Attributions](docs/reference/attributions.md) page.
0 commit comments