chore(plugins): add missing LICENSE files + march-madness README (audit phase 1) - #173
Conversation
…:// retry mount Neglected-plugin hygiene pass (plugin audit, phase 1): - Add LICENSE files matching each manifest's declared license: MIT for geochron, nfl-draft, on-air, tide-display; GPL-3.0 for march-madness (previously undeclared — license field added to its manifest). - march-madness: add a README (it was the only plugin shipping without one) documenting features, display mode, per-key config, and data source; and mount the HTTP retry adapter on http:// as well as https:// so redirected ESPN requests keep the retry/backoff policy. - Bump manifest versions + add changelog entries; sync plugins.json. ledmatrix-elections (third-party author) LICENSE intentionally deferred pending the contributor's licensing choice. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F9Saiat9CQmNi3DeDdvacB
|
Warning Review limit reached
Next review available in: 39 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (12)
📝 WalkthroughWalkthroughAdds MIT or GPLv3 LICENSE files to five plugins (geochron, march-madness, on-air, nfl-draft, tide-display), bumps their manifest versions with new changelog entries, updates central plugins.json metadata, adds a march-madness README, and fixes an HTTP retry adapter mount in march-madness manager.py. ChangesPlugin license and version metadata updates
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | 0 |
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
The safety CI validates each changed plugin's manifest against the core manifest_schema.json. Two pre-existing issues surfaced once these plugins became "changed" in this PR: - march-madness: add the required `compatible_versions` field ([">=2.0.0"]). - on-air: remove `update_interval: 0`, which violates the schema's minimum of 1. on-air is MQTT push-driven and does not poll; the sibling mqtt-notifications plugin omits the field entirely. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F9Saiat9CQmNi3DeDdvacB
The core manifest_schema.json requires `dependencies` to be an array;
march-madness declared it as an empty object `{}`. It has no plugin
dependencies, so `[]` is correct.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F9Saiat9CQmNi3DeDdvacB
|
@coderabbitai review |
✅ Action performedReview finished.
|
Per project policy the whole repo is GPL-3.0. This PR originally added MIT LICENSE files (matching those plugins' declared MIT manifests); switch them to GPL-3.0 instead so nothing ships as MIT: - geochron, nfl-draft, on-air, tide-display: LICENSE file + manifest "license" field MIT -> GPL-3.0. All are first-party (ChuckBuilds), so the relicense is the copyright holder's call; MIT is GPL-compatible. - ledmatrix-elections: add a GPL-3.0 LICENSE (it shipped without one) and declare it in the manifest; bump 1.1.0 -> 1.1.1. This plugin is a third-party contribution (rpierce99) — under the repo's inbound=outbound GPL policy (CONTRIBUTING.md) it is already GPL-licensed to the project. No code changes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F9Saiat9CQmNi3DeDdvacB
countdown's LICENSE file was already GPL-3.0 but its manifest declared MIT; align the manifest to the file (project standard). Folded into the pending 3.1.1 changelog entry — no extra version bump. Rides on a merge of the #173 branch, which flips geochron/nfl-draft/on-air/ tide-display to GPL-3.0 and adds ledmatrix-elections' LICENSE, keeping this stacked branch consistent with #173's licensing. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F9Saiat9CQmNi3DeDdvacB
The README still said "MIT License"; align it with the GPL-3.0 LICENSE and manifest (part of the repo-wide MIT -> GPL-3.0 standardization). Docs only; nfl-draft is already version-bumped in this PR. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F9Saiat9CQmNi3DeDdvacB
Resolves conflicts after #173 (phase-1 LICENSE) and #176 (flights airport-weather) landed on main: - ledmatrix-flights/manifest.json: main advanced to 1.12.2 (still MIT). Re-applied the GPL-3.0 license flip on top and bumped to 1.12.3, preserving the weather-feature version history. - plugins.json: regenerated from manifests (deterministic). flights -> 1.12.3, stocks -> 2.3.1 (both GPL-3.0). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F9Saiat9CQmNi3DeDdvacB
Resolves conflicts after #173 (phase-1) landed on main: - on-air/manifest.json: the branch's versions[] (1.2.2 -> 1.2.1 -> ...) is a clean superset of main's (1.2.1 -> ...), so kept the branch's manifest. - plugins.json: regenerated from manifests (deterministic). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F9Saiat9CQmNi3DeDdvacB
…it phase 2) (#175) * chore(plugins): add missing LICENSE files, march-madness README, http:// retry mount Neglected-plugin hygiene pass (plugin audit, phase 1): - Add LICENSE files matching each manifest's declared license: MIT for geochron, nfl-draft, on-air, tide-display; GPL-3.0 for march-madness (previously undeclared — license field added to its manifest). - march-madness: add a README (it was the only plugin shipping without one) documenting features, display mode, per-key config, and data source; and mount the HTTP retry adapter on http:// as well as https:// so redirected ESPN requests keep the retry/backoff policy. - Bump manifest versions + add changelog entries; sync plugins.json. ledmatrix-elections (third-party author) LICENSE intentionally deferred pending the contributor's licensing choice. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F9Saiat9CQmNi3DeDdvacB * fix(plugins): satisfy core manifest schema for march-madness and on-air The safety CI validates each changed plugin's manifest against the core manifest_schema.json. Two pre-existing issues surfaced once these plugins became "changed" in this PR: - march-madness: add the required `compatible_versions` field ([">=2.0.0"]). - on-air: remove `update_interval: 0`, which violates the schema's minimum of 1. on-air is MQTT push-driven and does not poll; the sibling mqtt-notifications plugin omits the field entirely. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F9Saiat9CQmNi3DeDdvacB * fix(march-madness): make dependencies an array to satisfy core schema The core manifest_schema.json requires `dependencies` to be an array; march-madness declared it as an empty object `{}`. It has no plugin dependencies, so `[]` is correct. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F9Saiat9CQmNi3DeDdvacB * docs(plugins): fix stale README config docs (7-segment-clock, on-air, static-image) Plugin audit phase 2a — realign these READMEs with their config_schema.json (the source of truth for the web UI form): - 7-segment-clock: remove the documented-but-removed sunrise/sunset color transition feature (location lat/lng/locality, color_daytime/nighttime, min_fade_elevation, astral dependency) — it no longer exists in the schema or manager; document the real color and digit_spacing options; fix the placeholder license section (GPL-3.0, matching the LICENSE file). - on-air: replace the removed pulsing/glow/tally-dot options with the actual text color, background color, font, and Home Assistant discovery fields; correct the per-message color/bg MQTT payload docs; drop the broken preview.png reference. - static-image: document all rotation_mode values (add time_based/date_based), describe images as scheduled image entries rather than plain paths, and add a Per-Image Scheduling section. Also normalizes each manifest's versions[] changelog key to ledmatrix_min (some mixed the old ledmatrix_min_version). Version bumps + plugins.json sync. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F9Saiat9CQmNi3DeDdvacB * docs(calendar,countdown): add config tables + missing schema titles Audit phase 2 (README parity, continued): - calendar: convert the prose config bullets to a per-key table that also documents the previously-undocumented customization fonts. Kept credentials_file/token_file — both are real config-only keys the manager reads (manager.py:72-73), not schema drift. Added web-UI titles to the untitled options (Enabled, Max Events, Show All-Day Events, Event Rotation Interval, Display Duration, Update Interval). - countdown: replace the stale prose config section with per-key tables covering the v3 keys (target_time, mode until/since, layout_preset, text_align, and the per-countdown style/layout overrides); add a title to the top-level enabled option. Normalizes both manifests' versions[] key to ledmatrix_min. Version bumps + plugins.json sync. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F9Saiat9CQmNi3DeDdvacB * chore(license): standardize these plugins to GPL-3.0 (not MIT) Per project policy the whole repo is GPL-3.0. This PR originally added MIT LICENSE files (matching those plugins' declared MIT manifests); switch them to GPL-3.0 instead so nothing ships as MIT: - geochron, nfl-draft, on-air, tide-display: LICENSE file + manifest "license" field MIT -> GPL-3.0. All are first-party (ChuckBuilds), so the relicense is the copyright holder's call; MIT is GPL-compatible. - ledmatrix-elections: add a GPL-3.0 LICENSE (it shipped without one) and declare it in the manifest; bump 1.1.0 -> 1.1.1. This plugin is a third-party contribution (rpierce99) — under the repo's inbound=outbound GPL policy (CONTRIBUTING.md) it is already GPL-licensed to the project. No code changes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F9Saiat9CQmNi3DeDdvacB * chore(license): set countdown manifest license to GPL-3.0 countdown's LICENSE file was already GPL-3.0 but its manifest declared MIT; align the manifest to the file (project standard). Folded into the pending 3.1.1 changelog entry — no extra version bump. Rides on a merge of the #173 branch, which flips geochron/nfl-draft/on-air/ tide-display to GPL-3.0 and adds ledmatrix-elections' LICENSE, keeping this stacked branch consistent with #173's licensing. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F9Saiat9CQmNi3DeDdvacB * docs(countdown): fix README license section to GPL-3.0 The README license line still said "MIT License"; align it with the GPL-3.0 manifest + LICENSE (repo-wide MIT -> GPL-3.0 standardization). Docs only; countdown is already version-bumped in this PR. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F9Saiat9CQmNi3DeDdvacB * fix(plugins): use ledmatrix_min_version, not deprecated ledmatrix_min This PR's changelog normalization went the wrong direction: it converted each touched plugin's versions[] entries from ledmatrix_min_version to ledmatrix_min. The core's own validator (store_manager.py, _validate_manifest_version_fields) explicitly flags ledmatrix_min as deprecated and expects ledmatrix_min_version, so every real device install/update of these 5 plugins would start logging a fresh "deprecated field" warning that wasn't there before. Revert the field name direction (and the changelog notes describing the change) so it actually matches the core's documented, non-deprecated field. --------- Co-authored-by: Claude <noreply@anthropic.com>
Summary
First phase of a fleet-wide plugin audit, targeting the most neglected plugins: adds the missing per-plugin
LICENSEfiles, writes the one missingREADME.md(march-madness), and fixes a small networking correctness gap. No behavior changes to existing config.Type of change
http://redirects)Plugin(s) affected
geochron,march-madness,nfl-draft,on-air,tide-displayRelated issues
N/A
Test plan
march-madnessschema is unchanged; the new README documents the existing keys (README ↔ schema parity checked by hand).python update_registry.py --dry-run(5 expected bumps),python scripts/check_module_collisions.py(clean), JSON validity of all edited manifests.Required for plugin changes
versionin each changedmanifest.json(geochron 1.0.0→1.0.1, march-madness 1.0.0→1.0.1, nfl-draft 1.3.11→1.3.12, on-air 1.2.0→1.2.1, tide-display 1.1.0→1.1.1) + changelog entriesclass_nameunchanged and still matchesmanager.pyentry_pointunchangedREADME.md(createdmarch-madness/README.md)config_schema.jsonunchanged — no new options introducedplugins.jsonsynced viaupdate_registry.pyNotes for reviewer
Licensing — please confirm. Each new
LICENSEfile was chosen to match the license already declared in that plugin'smanifest.json, not to impose one:geochron,nfl-draft,on-air,tide-displaymarch-madness— its manifest declared no license, so I applied the repo default and added"license": "GPL-3.0"to the manifest.ledmatrix-electionsalso lacks a LICENSE but is authored by a third-party contributor (rpierce99), so I deliberately left its license alone — that's the contributor's call. Happy to add one if you tell me which.march-madness is not redundant with basketball-scoreboard's tournament support: it's a dedicated bracket view (round grouping, seeds, round-logo separators, upset highlighting) rather than a game-rotation list. The README makes that distinction explicit. The only code change is mounting the existing retry/backoff
HTTPAdapteronhttp://in addition tohttps://.This is phase 1 of a larger audit (docs/schema polish, config completeness, and resource-efficiency refactors ship in later phased PRs).
🤖 Generated with Claude Code
https://claude.ai/code/session_01F9Saiat9CQmNi3DeDdvacB
Generated by Claude Code
Summary by CodeRabbit
New Features
Bug Fixes
Chores