shellcheck SC2034:
- first_time_install.sh: 'type' loop variable also unused in the wifi
status loop (we previously fixed 'device' → '_' but left 'type').
Changed to '_ _ state' since neither device nor type is referenced.
ESLint no-undef:
- app.js: typeof guards don't satisfy no-undef; added updateSystemStats
to the /* global */ declaration alongside showNotification.
nosec annotation:
- web_interface/app.py: app.run(host='0.0.0.0') line changed when we
fixed debug=True, giving it a new issue ID. Re-added # nosec B104.
pyflakes F401:
- scripts/dev/test_pillow_compat.py: ImageFilter was imported but never
used in the smoke test. Removed from the import.
Codacy API suppressions (false positives on changed lines):
- disk_cache.py 0o660 chmod (2x): lines changed when # nosec B103 was
added, producing new Semgrep issue IDs. Re-suppressed.
- pages_v3.py raw-html-concat: Semgrep does not recognise escape() as
a sanitizer; the escape() call IS the correct fix.
- app.py flask 0.0.0.0: same line as B104 above; Semgrep rule also
re-suppressed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Covers all Pillow APIs used in LEDMatrix — image creation, drawing,
font metrics, LANCZOS resampling, paste/alpha_composite, and PNG I/O.
Run after any Pillow version bump to catch regressions before deploy.
python3 scripts/dev/test_pillow_compat.py
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>