-
-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Usermod libs matrix #4592
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Usermod libs matrix #4592
Conversation
|
""" WalkthroughA new GitHub Actions workflow and a PlatformIO override configuration file have been introduced. The workflow automates continuous integration for user modifications under the Changes
Possibly related PRs
Suggested reviewers
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
5c493aa to
adb9b77
Compare
|
Looks like the CI part is doing what I want now and trying to build each usermod for each env so we can easily see if anything breaks on certain envs https://github.com/netmindz/WLED-MM/actions/runs/15655590001 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
🧹 Nitpick comments (7)
usermods/platformio_override.usermods.ini (2)
8-8: Remove or document commented brownout flag.
The-D WLED_DISABLE_BROWNOUT_DETflag is commented out, which may confuse maintainers. Remove it if unused or add a note explaining why it's disabled.
48-49: Document the[usermods]section.
The empty[usermods]section is populated at runtime by CI. Add a short comment explaining its purpose for future maintainers..github/workflows/usermods.yml (5)
31-31: Fix typo in job name.
"Build Enviornments" should be "Build Environments" to prevent confusion.Apply this diff:
-name: Build Enviornments +name: Build Environments
8-8: Remove trailing whitespace.
Trailing spaces on this line can cause lint failures; drop any extra spaces at end-of-line.🧰 Tools
🪛 YAMLlint (1.37.1)
[error] 8-8: trailing spaces
(trailing-spaces)
71-71: Remove trailing whitespace.
The extra spaces at end of thepio runcommand line should be removed.🧰 Tools
🪛 YAMLlint (1.37.1)
[error] 71-71: trailing spaces
(trailing-spaces)
54-56: Include override file in cache key.
Currently the cache key hashes onlyplatformio.iniandpio-scripts/output_bins.py. Add the newusermods/platformio_override.usermods.inito ensure cache invalidation when override definitions change.Apply this diff:
-key: pio-${{ runner.os }}-${{ matrix.environment }}-${{ hashFiles('platformio.ini', 'pio-scripts/output_bins.py') }}-${{ hashFiles('wled00/**', 'usermods/**') }} +key: pio-${{ runner.os }}-${{ matrix.environment }}-${{ hashFiles('platformio.ini', 'pio-scripts/output_bins.py', 'usermods/platformio_override.usermods.ini') }}-${{ hashFiles('wled00/**', 'usermods/**') }}
66-67: Trim whitespace in override file injection.
Theecho "custom_usermods = ..."line contains two spaces afterecho, resulting in leading whitespace. Use a single space to maintain consistent formatting.Apply this diff:
- echo "custom_usermods = ${{ matrix.usermod }}" >> platformio_override.ini + echo "custom_usermods = ${{ matrix.usermod }}" >> platformio_override.ini
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
.github/workflows/usermods.yml(1 hunks)usermods/platformio_override.usermods.ini(1 hunks)
🧰 Additional context used
🪛 YAMLlint (1.37.1)
.github/workflows/usermods.yml
[error] 8-8: trailing spaces
(trailing-spaces)
[warning] 15-15: wrong indentation: expected 6 but found 4
(indentation)
[warning] 40-40: wrong indentation: expected 6 but found 4
(indentation)
[warning] 59-59: wrong indentation: expected 8 but found 10
(indentation)
[error] 71-71: trailing spaces
(trailing-spaces)
🔇 Additional comments (2)
usermods/platformio_override.usermods.ini (2)
1-2: Default environments configured correctly.
Thedefault_envslist includes all four target variants and aligns with the CI matrix.
36-37: Verify base environment for ESP32-S3 builds.
The S3 variant extendsesp32s3, while other variants use*devsuffixes (e.g.,esp32c3dev). Ensureesp32s3exists in the primaryplatformio.inior adjust toesp32s3dev.
| - uses: actions/checkout@v4 | ||
| - uses: actions/setup-python@v5 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix YAML indentation under get_usermod_envs steps.
Sequence items (- uses:) must be indented two spaces under steps: to be valid.
Apply this diff:
- - uses: actions/checkout@v4
- - uses: actions/setup-python@v5
+ - uses: actions/checkout@v4
+ - uses: actions/setup-python@v5📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 |
🧰 Tools
🪛 YAMLlint (1.37.1)
[warning] 15-15: wrong indentation: expected 6 but found 4
(indentation)
🤖 Prompt for AI Agents
In .github/workflows/usermods.yml around lines 15 to 16, the sequence items
under the steps key are not indented correctly. Fix the YAML indentation by
ensuring that each `- uses:` line is indented exactly two spaces under the
`steps:` key to comply with YAML syntax requirements.
| - uses: actions/checkout@v4 | ||
| - name: Set up Node.js |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix YAML indentation under build steps.
The - uses: entries here should align with a two-space indent under steps:.
Apply this diff:
- - uses: actions/checkout@v4
- - name: Set up Node.js
+ - uses: actions/checkout@v4
+ - name: Set up Node.js📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - uses: actions/checkout@v4 | |
| - name: Set up Node.js | |
| - uses: actions/checkout@v4 | |
| - name: Set up Node.js |
🧰 Tools
🪛 YAMLlint (1.37.1)
[warning] 40-40: wrong indentation: expected 6 but found 4
(indentation)
🤖 Prompt for AI Agents
In .github/workflows/usermods.yml at lines 40 to 41, the YAML indentation for
the build steps is incorrect. Adjust the indentation so that the `- uses:` and
`- name:` entries are indented exactly two spaces under the `steps:` key to
comply with YAML syntax and ensure proper workflow execution.
| - name: Set up Python | ||
| uses: actions/setup-python@v5 | ||
| with: | ||
| python-version: '3.12' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Correct indentation for Python setup block.
Indent python-version and cache two spaces under with: (8 spaces total).
Apply this diff:
- python-version: '3.12'
- cache: 'pip'
+ python-version: '3.12'
+ cache: 'pip'📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| python-version: '3.12' | |
| python-version: '3.12' | |
| cache: 'pip' |
🧰 Tools
🪛 YAMLlint (1.37.1)
[warning] 59-59: wrong indentation: expected 8 but found 10
(indentation)
🤖 Prompt for AI Agents
In .github/workflows/usermods.yml at line 59, the `python-version` key under the
`with:` block is not correctly indented. Adjust the indentation of
`python-version` and the `cache` keys to be two spaces further indented under
`with:`, making a total of 8 spaces, to comply with YAML formatting standards.
OK, if I'm understanding correctly, the goal is to do full-usermod builds on all platforms, but only if the usermods themselves change; while the base ESP32 platform still does an all-usermod build for core firmware changes. From a code standpoint, I think you can clean out a lot of the environment text by picking envs/boards we're already building for. Something like: ... is probably sufficient. From a resource utilization standpoint, we can get a lot of savings if we can do the usermods builds in the same session as the reference build, thanks to the build cache. That's one of the big advantages of the new usermod system -- no extra |
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Correct
Incorrect, you also need board, platform and board_build.flash_mode as a minimum. build_flags needed for the release name, custom_usermods needed to limit to only the single usermod so it's really only build_unflags and lib_deps that you can save
If you look at the build output you will see that it's already making extensive use of the build cache so doesn't need to be in the same session for that. While we could do a single session that had all the envs rather than using a matrix CI build, saving things like checking out the code and the cache, we would lose the clear visibility of what usermods are failing |
How do you intend to handle inter-module dependencies? Not all modules can be built in isolation.
Those should be supplied by the environment being extended (in this example
Ah, it's already sharing a build cache between jobs! That's good enough for me. (I should look at getting the HTML outputs in the cache, that'll save even more replication.) |
I don't at the moment is the simple answer. We would need to add something to these modules to define their dependencies and then process this when the CI generates the usermod environment. In the short term I think we just blacklist any of these usermods from the CI to avoid false positives
What you might expect the behaviour of extends and what actually happens in platformio are very different things. This is why I said how you still need to define platform and board in every env, just try your proposed example and you will see what I mean |
Sorry, I should be more careful when sketching examples -- 'env:' is required in the extends to reference the correct section. The correct code should be: Suggested code is at willmmiles@68540c6 ; you can see that it works at https://github.com/willmmiles/WLED/actions/runs/15688280452 |
This is ultimately why I went with the "build all the modules in one env" CI approach; I found that the number of modules that couldn't be combined in one build was smaller than the number of modules that had build time dependencies. I agree that a blacklist is probably the best workaround. I don't think we want to invest in a more complex solution - longer term I am hoping to move towards out-of-tree usermods, so making sure the dep list is correct can be left as an exercise for the individual module's own CI. (That said, I'll need to make sure the example repo demonstrates a working CI -- something that runs nightly and checks for WLED updates, perhaps...) On an quasi-related note, another objective with |
Thanks, that is applied now |
...
Actually, there is perhaps a simpler option - given you have proved that you can build the usermods when both A and B dependencies are included, given the new usermod system is so much more user friendly, why not just include A and B as dependencies in library.json? Ok that technically that will make the bin slightly larger than a totally slimmed down version, but it solves out build problem and makes it easier for users too as they just depend on PWM fan for example and don't then need to work out which dependencies they need to also add to build |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
usermods/PWM_fan/library.json(1 hunks)
🧰 Additional context used
🪛 Biome (1.9.4)
usermods/PWM_fan/library.json
[error] 7-7: expected , but instead found "dependencies"
Remove "dependencies"
(parse)
[error] 8-8: expected : but instead found ,
Remove ,
(parse)
[error] 8-8: expected : but instead found ,
Remove ,
(parse)
[error] 9-9: expected : but instead found ,
Remove ,
(parse)
[error] 10-10: expected : but instead found }
Remove }
(parse)
[error] 8-8: The key was already declared.
This where a duplicated key was declared again.
If a key is defined multiple times, only the last definition takes effect. Previous definitions are ignored.
(lint/suspicious/noDuplicateObjectKeys)
⏰ Context from checks skipped due to timeout of 90000ms (20)
- GitHub Check: wled_build / Build Environments (esp32_wrover)
- GitHub Check: wled_build / Build Environments (esp32dev)
- GitHub Check: wled_build / Build Environments (esp32_eth)
- GitHub Check: wled_build / Build Environments (esp32c3dev)
- GitHub Check: wled_build / Build Environments (lolin_s2_mini)
- GitHub Check: wled_build / Build Environments (esp32s3dev_16MB_opi)
- GitHub Check: wled_build / Build Environments (nodemcuv2_compat)
- GitHub Check: wled_build / Build Environments (usermods)
- GitHub Check: wled_build / Build Environments (esp32dev_V4)
- GitHub Check: wled_build / Build Environments (esp32s3_4M_qspi)
- GitHub Check: wled_build / Build Environments (esp32s3dev_8MB_opi)
- GitHub Check: wled_build / Build Environments (esp01_1m_full_compat)
- GitHub Check: wled_build / Build Environments (nodemcuv2)
- GitHub Check: wled_build / Build Environments (esp8266_2m_compat)
- GitHub Check: wled_build / Build Environments (esp01_1m_full_160)
- GitHub Check: wled_build / Build Environments (nodemcuv2_160)
- GitHub Check: wled_build / Build Environments (esp01_1m_full)
- GitHub Check: wled_build / Build Environments (esp8266_2m)
- GitHub Check: wled_build / Build Environments (esp8266_2m_160)
- GitHub Check: wled_build / Test cdata.js
For PWM_fan, If both deps are included, the internal ifdefs bind to Temperature and ignore sht. The module would have to be recoded to allow runtime selection. If the library.json lists both as deps, sht becomes unusable for production builds. |
dce4eb6 to
e97723d
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (3)
.github/workflows/usermods.yml (3)
15-20: Invalid YAML – step list items need 2 more spacesThe sequence items under
steps:are still aligned at the same level as the key itself.
They must be indented 6 spaces (2 more than the current 4) to be valid YAML.- - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5
40-46: Repeat of thesteps-indentation error in thebuildjobSame fix required here; otherwise the matrix job is never parsed.
- - uses: actions/checkout@v4 - - name: Set up Node.js + - uses: actions/checkout@v4 + - name: Set up Node.js
57-60:with:block keys over-indentedKeys under
with:must be exactly 2 spaces further in thanwith:itself (total 8).- python-version: '3.12' - cache: 'pip' + python-version: '3.12' + cache: 'pip'
🧹 Nitpick comments (2)
.github/workflows/usermods.yml (2)
31-33: Spelling: “Enviornments” → “Environments”Minor, but visible in the Actions UI.
8-8: Remove trailing whitespace (lines 8 & 71)Keeps YAMLlint happy and eliminates noisy diffs.
Also applies to: 71-71
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.github/workflows/usermods.yml(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: willmmiles
PR: wled/WLED#4623
File: usermods/word-clock-matrix/word-clock-matrix.cpp:332-332
Timestamp: 2025-03-29T01:22:54.617Z
Learning: In the WLED project, hardcoded usermod IDs (like 500 in the WordClockMatrix's getId() method) are intentionally used as part of a strategy to avoid modifying core code. There are plans to remove numeric usermod IDs entirely in the future.
🪛 YAMLlint (1.37.1)
.github/workflows/usermods.yml
[error] 8-8: trailing spaces
(trailing-spaces)
[warning] 15-15: wrong indentation: expected 6 but found 4
(indentation)
[warning] 40-40: wrong indentation: expected 6 but found 4
(indentation)
[warning] 59-59: wrong indentation: expected 8 but found 10
(indentation)
[error] 71-71: trailing spaces
(trailing-spaces)
🔇 Additional comments (1)
.github/workflows/usermods.yml (1)
50-55: Block-scalar contents indented too farLines 51-53 are indented 14 spaces, so YAML treats them as part of the previous indentation level instead of scalar content. Bring them back to 8 spaces (2 under
|).- ~/.platformio/.cache - ~/.buildcache - build_output + ~/.platformio/.cache + ~/.buildcache + build_outputLikely an incorrect or invalid review comment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (3)
.github/workflows/usermods.yml (3)
15-16: Fix YAML indentation underget_usermod_envssteps.Sequence items (
- uses:) must be indented two spaces understeps:to be valid YAML.- - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5
40-41: Fix YAML indentation underbuildsteps.The
- uses:entries should be indented two spaces understeps:.- - uses: actions/checkout@v4 - - name: Set up Node.js + - uses: actions/checkout@v4 + - name: Set up Node.js
59-60: Fix indentation for Python setup parameters.The
python-versionandcachekeys should be indented two spaces underwith:.- python-version: '3.12' - cache: 'pip' + python-version: '3.12' + cache: 'pip'
🧹 Nitpick comments (3)
.github/workflows/usermods.yml (3)
8-8: Remove trailing spaces.- +
31-31: Fix typo in job name.- name: Build Enviornments + name: Build Environments
71-71: Remove trailing spaces.- run: pio run -e ${{ matrix.environment }} + run: pio run -e ${{ matrix.environment }}
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
.github/workflows/usermods.yml(1 hunks)usermods/buzzer/buzzer.cpp(1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: willmmiles
PR: wled/WLED#4623
File: usermods/word-clock-matrix/word-clock-matrix.cpp:332-332
Timestamp: 2025-03-29T01:22:54.617Z
Learning: In the WLED project, hardcoded usermod IDs (like 500 in the WordClockMatrix's getId() method) are intentionally used as part of a strategy to avoid modifying core code. There are plans to remove numeric usermod IDs entirely in the future.
usermods/buzzer/buzzer.cpp (5)
Learnt from: willmmiles
PR: wled/WLED#4623
File: usermods/word-clock-matrix/word-clock-matrix.cpp:332-332
Timestamp: 2025-03-29T01:22:54.617Z
Learning: In the WLED project, hardcoded usermod IDs (like 500 in the WordClockMatrix's getId() method) are intentionally used as part of a strategy to avoid modifying core code. There are plans to remove numeric usermod IDs entirely in the future.
Learnt from: KrX3D
PR: wled/WLED#4237
File: usermods/INA219_v2/INA219_v2.cpp:265-276
Timestamp: 2025-04-18T22:27:58.634Z
Learning: When implementing MQTT message handling in WLED usermods, use `strstr(topic, "/specific/path")` instead of `strcmp_P(topic, PSTR("/specific/path"))` to properly match topics that include the device prefix. The full MQTT topic typically follows the pattern `<mqttDeviceTopic>/specific/path`.
Learnt from: netmindz
PR: wled/WLED#4728
File: wled00/FX.h:378-378
Timestamp: 2025-06-15T09:59:52.720Z
Learning: In WLED's FX.h, MODE_COUNT represents the highest FX_MODE_ ID + 1, not the total count of FX_MODE_ definitions. This is because some effects may have been removed but their IDs are not reused, creating gaps in the numbering sequence. MODE_COUNT is used for array bounds and range checking.
Learnt from: netmindz
PR: wled/WLED#4728
File: wled00/FX.h:378-378
Timestamp: 2025-06-15T09:59:52.720Z
Learning: In WLED's FX.h, MODE_COUNT represents the highest FX_MODE_ ID + 1, not the total count of FX_MODE_ definitions. This is because some effects may have been removed but their IDs are not reused, creating gaps in the numbering sequence. MODE_COUNT is used for array bounds and range checking.
Learnt from: KrX3D
PR: wled/WLED#4585
File: usermods/seven_segment_display_reloaded_v2/seven_segment_display_reloaded_v2.h:121-136
Timestamp: 2025-04-27T09:37:28.415Z
Learning: Using PROGMEM for the seven-segment font array (umSSDRNumbers) in the WLED SSDR usermod causes compilation problems, so it should be left as a regular array.
🪛 YAMLlint (1.37.1)
.github/workflows/usermods.yml
[error] 8-8: trailing spaces
(trailing-spaces)
[warning] 15-15: wrong indentation: expected 6 but found 4
(indentation)
[warning] 40-40: wrong indentation: expected 6 but found 4
(indentation)
[warning] 59-59: wrong indentation: expected 8 but found 10
(indentation)
[error] 71-71: trailing spaces
(trailing-spaces)
⏰ Context from checks skipped due to timeout of 90000ms (1)
- GitHub Check: wled_build / Build Environments (usermods)
🔇 Additional comments (4)
usermods/buzzer/buzzer.cpp (1)
8-12: LGTM! Improved platform compatibility.The conditional pin definition enhances portability across ESP32 variants by using
GPIO_NUM_32when available and falling back to pin 21 otherwise. This is a good improvement that maintains backward compatibility while supporting newer platforms..github/workflows/usermods.yml (3)
22-27: Excellent usermod discovery and filtering logic.The dynamic discovery of usermods using
findandjqwith filtering for problematic modules (PWM_fan,BME68X_v2) is well-implemented and aligns with the PR objectives to handle inter-module dependencies.
34-38: Well-designed matrix build strategy.The matrix combination of usermods and environments (
usermods_esp32,usermods_esp32c3,usermods_esp32s2,usermods_esp32s3) effectively tests each usermod across all supported ESP32 variants, ensuring comprehensive compatibility validation.
47-55: Comprehensive caching strategy for build optimization.The caching setup covers PlatformIO cache, build cache, and output directory with appropriate cache keys based on relevant file hashes. This should significantly improve build times as mentioned in the PR objectives.
…sermod-libs-matrix
…cting the limited platforms - no bluetooth on S2
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
♻️ Duplicate comments (3)
.github/workflows/usermods.yml (3)
14-21: Fix broken indentation understeps– the workflow will not parse
Items insidesteps:must be indented two spaces further than the key itself. The current 0-indent list entries (- uses:/- name:) violate YAML syntax and will cause the job to be skipped.- steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: '3.12' - cache: 'pip' - - name: Install PlatformIO + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + cache: 'pip' + - name: Install PlatformIO
40-46: Repeat the indentation fix for thebuildjob’ssteps
Same problem as above: list items must sit two spaces below their parent key.- steps: - - uses: actions/checkout@v4 - - name: Set up Node.js + steps: + - uses: actions/checkout@v4 + - name: Set up Node.jsMake sure every following step in this block keeps that 6-space indent.
56-60: Indent thewith:block correctly
python-versionandcacheshould be indented two spaces underwith:(total 8-space indent). Current 10-space indent violates YAML spec.- with: - python-version: '3.12' - cache: 'pip' + with: + python-version: '3.12' + cache: 'pip'
🧹 Nitpick comments (1)
.github/workflows/usermods.yml (1)
31-31: Typo: “Enviornments” → “Environments”
This appears in the job name and will surface in CI logs.- name: Build Enviornments + name: Build Environments
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.github/workflows/usermods.yml(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: willmmiles
PR: wled/WLED#4623
File: usermods/word-clock-matrix/word-clock-matrix.cpp:332-332
Timestamp: 2025-03-29T01:22:54.617Z
Learning: In the WLED project, hardcoded usermod IDs (like 500 in the WordClockMatrix's getId() method) are intentionally used as part of a strategy to avoid modifying core code. There are plans to remove numeric usermod IDs entirely in the future.
🪛 YAMLlint (1.37.1)
.github/workflows/usermods.yml
[error] 8-8: trailing spaces
(trailing-spaces)
[warning] 15-15: wrong indentation: expected 6 but found 4
(indentation)
[warning] 40-40: wrong indentation: expected 6 but found 4
(indentation)
[warning] 59-59: wrong indentation: expected 8 but found 10
(indentation)
[error] 71-71: trailing spaces
(trailing-spaces)
| paths: | ||
| - usermods/** | ||
| - .github/workflows/usermods.yml | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove trailing whitespace – YAML-lint treats it as an error
Also applies to: 71-71
🧰 Tools
🪛 YAMLlint (1.37.1)
[error] 8-8: trailing spaces
(trailing-spaces)
🤖 Prompt for AI Agents
In .github/workflows/usermods.yml at lines 8 and 71, there are trailing
whitespace characters that cause YAML-lint errors. Remove any spaces or tabs at
the end of these lines to comply with YAML formatting rules and prevent linting
issues.
Run a build of each usermod if a PR contains a usermod change
Summary by CodeRabbit
New Features
Improvements
Chores