Skip to content

Plugin-wide bug and docs pass (41 plugins) - #611

Merged
ChuckBuilds merged 3 commits into
mainfrom
claude/plugin-fixes-docs-7319c2
Oct 3, 2026
Merged

ChuckBuilds merged 3 commits into
mainfrom
claude/plugin-fixes-docs-7319c2

Conversation

@ChuckBuilds

Copy link
Copy Markdown
Owner

Summary

A full audit of every plugin plus the repo docs. 41 plugins get patch bumps, and basketball and baseball get minor bumps. Each version has a new versions[0] entry, and plugins.json is regenerated with update_registry.py.

Bugs users would hit

  • cricket 1.3.3:
    • Innings parsing showed the bowling side's innings ("0 & 278 & 0/0") and gave a side yet to bat "0/0".
    • The "false" winner flag was read as true, so both sides drew in the winner's green.
    • The Test status line was wrong, and the chase line ran past the panel edge.
    • A match that had just started could go unnoticed for up to an hour.
    • The harness fixture now uses offline data, so CI no longer renders live ESPN data.
  • of-the-day 1.4.9:
    • An IndexError after midnight when a category had no entry for the new day.
    • Path traversal in upload_file.py.
    • The save and upload scripts rejected day 366.
  • ledmatrix-elections 1.3.2:
    • The called-race snapshot was read back with a 5-minute expiry, so it was lost on restart.
    • A badly formatted calendar_events date broke every update.
    • The harness fixture now uses frozen time, so it renders the real called card.
  • pomodoro-timer 1.3.10: an inf or overflowing duration left the timer stuck on its error screen.
  • on-air 1.2.14: retained state is republished on connect, and sw_version is read from the manifest.
  • mqtt-notifications 1.2.8: BDF fonts never rendered, and a failed image was retried on every frame.
  • tide-display 1.3.5: the plugin now honours the core's display_mode, so a disabled screen no longer takes a turn.
  • news 1.6.5: an empty <description/> failed the whole feed.
  • calendar 1.2.11: events from several calendars are now sorted by real start time.
  • static-image 1.1.8: the error screen drew on the discarded image, and very wide or very tall images scaled to zero height.
  • countdown 3.3.5: with image-right and an oversized image, the countdown text was pushed off the panel.
  • Smaller fixes:
    • soccer: custom-league defaults didn't match the settings page.
    • f1: auto_scale did nothing for a custom TTF font.
    • youtube-stats: the cache key now includes channel_id.
    • music: the album cover was re-decoded on every poll.
    • stocks: in switch mode the text covered the logo.
    • blackjack: x-widget: color changed to color-picker.
    • christmas-countdown: reads "1 DAY" on Dec 24.
    • hello-world: checks for a None font manager.
    • birdnet: a failed photo fetch is retried after 30 minutes.
    • jellyfin: the code's subtitle font-size fallback now matches the schema.
    • basketball and baseball: layout settings the code reads are now declared in the schema.

Docs

  • Plugin READMEs: brought in line with the schema and code for every bumped plugin: defaults, missing or nonexistent settings, setup steps.
  • Repo docs:
    • Required manifest fields now match core's manifest_schema.json.
    • New plugins need a hand-added plugins.json entry.
    • Corrected core API signatures, Vegas content types, the needs_high_fps note and CI workflow names.
  • README screenshots: regenerated for christmas-countdown, hello-world, 7-segment-clock and ledmatrix-stocks, with captions corrected.

Tooling

  • scripts/test_stage3_mixin_copies.py now lists the three SportsFetchMixin methods core added in LEDMatrix#728. Without this, the test fails on current core.

Verification

  • Every scripts/test_*.py and every check_*.py passes, run against a fresh export of LEDMatrix origin/main.
  • update_registry.py --check passes.
  • check_plugin.py passes at all 8 sizes for every changed plugin, and the rendered images were looked at, not just the PASS lines.
  • Each changed plugin's own tests pass.

Not changed (needs a decision)

  • On panels taller than 32 rows, logos overlap the date and time on upcoming-game screens in all scoreboards. The goldens lock this in.
  • The 64×32 layouts for cricket and ufc run past the panel edge; fixing them needs a redesign.
  • Some cache keys in stocks, stock-news, flights and elections don't start with the plugin id. Nothing collides today, and renaming them would throw away existing cached data.

🤖 Generated with Claude Code

Bug fixes:
- cricket: innings parsing (bowling innings, 0/0 for sides yet to bat,
  double highlight), winner flag read as truthy string, Test day/status
  line, chase line overflow, late live pickup; harness fixture now offline
- of-the-day: IndexError after midnight rollover; upload path traversal;
  day 366 accepted by save/upload scripts
- ledmatrix-elections: called-race snapshot expired after 5 min (lost on
  restart); malformed calendar_events date broke every update
- pomodoro-timer: inf/overflow durations wedged the timer
- on-air: republish retained state on connect; real sw_version
- mqtt-notifications: BDF fonts never rendered; image retry per frame
- tide-display: honour the core's display_mode (disabled modes took a turn)
- news: empty <description/> failed the whole feed
- calendar: sort events by real start time across calendars
- static-image: error screen drew on the discarded image; zero-height fit
- countdown: oversized image-right pushed text off panel
- soccer custom leagues, f1 auto_scale, youtube-stats cache key, music
  album-art cache, stocks switch-mode layout, blackjack color-picker,
  christmas-countdown "1 DAY", hello-world font-manager None check,
  birdnet photo retry, basketball/baseball missing layout settings

Docs: READMEs reconciled with schemas and code across all bumped plugins;
repo docs fixed (required manifest fields, new plugins need a hand-added
plugins.json entry, core API signatures, CI workflow names); README
screenshots regenerated for christmas-countdown, hello-world,
7-segment-clock and ledmatrix-stocks.

scripts/test_stage3_mixin_copies.py: list the three SportsFetchMixin
methods core added in LEDMatrix#728.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: c3cb0618-27e2-4923-929e-7dde4ab01bad
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codacy-production

codacy-production Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 55 complexity

Metric Results
Complexity 55

View in Codacy

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.

ChuckBuilds and others added 2 commits October 3, 2026 11:50
…ocs-7319c2

# Conflicts:
#	scripts/test_stage3_mixin_copies.py
Codacy flagged three issues new in this PR:
- cricket manager _upcoming_has_started: try/except/continue around
  .timestamp() -> skip entries without a datetime instead.
- cricket manager on_config_change: try/except/pass closing the old
  session -> only close a session that exists, log a failure at DEBUG.
- afl test_afl_plugin.py: importlib.import_module(name) takes only the
  fixed module names the test passes; marked nosemgrep.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ChuckBuilds
ChuckBuilds merged commit 886d203 into main Oct 3, 2026
5 checks passed
@ChuckBuilds
ChuckBuilds deleted the claude/plugin-fixes-docs-7319c2 branch October 3, 2026 16:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant