- 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>
- Delete legacy API versions (v1, v1.1, v1.2), keep only v2
- Replace Celery + Redis with threading-based background tasks
- Replace React/TypeScript/webpack frontend with Django templates + HTMX + Bootstrap 5
- Replace ZMQ pub/sub with Django Channels WebSocket
- Replace Nginx with WhiteNoise for static file serving
- Replace Gunicorn with Daphne (ASGI) for WebSocket support
- Simplify Docker from 6 services to 2 (server + viewer)
- Migrate test suite from unittest to pytest
- Remove ~20,000 lines of code and dozens of dependencies
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>