- Remove obsolete javascript-lint.yaml (no package.json after React removal)
- Remove TypeScript test job from docker-test.yaml (no npm in container)
- Simplify test-runner.yml to Python-only, add migrate + collectstatic
before integration tests to fix missing staticfiles manifest
- Fix settings.py to create config directory before writing screenly.conf
- Apply ruff formatting to all Python files
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Set minimum Python version to 3.13, remove Python 2 compatibility
- Remove legacy imports: future, six, builtins, __future__, configparser,
importlib-metadata, pep8, mock, unittest-parametrize
- Add modern type hints throughout (PEP 604 union syntax, PEP 585 generics)
- Replace .format() with f-strings, use super() without args
- Replace pytz with datetime.timezone, distutils.strtobool with inline impl
- Use conditional import for cec hardware dependency
- Clean up uv.lock (6 packages removed)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This change improves the error handling when interacting with the github
API by enforcing a 5 minute backoff on API call failures as well as
caches the remote branch presence/absence for 24 hours.
This prevents potential crashes when Internet connectivity is
unavailable, as well as from having one's IP address rate limited by Github
if the remote branch on the pi references a branch name that does not exist
under https://github.com/Screenly/screenly-ose/tree/
Prior to this change, this scenario causes the remote branch status to be
checked during every UI request.
Signed-off-by: Nash Kaminski <nashkaminski@kaminski.io>