Architecture
- Pure hexagonal DI —
lcd_device.pyandled_device.pyhave zero adapter imports. StrictRuntimeErrorwithout deps. Onlybuilder.py(composition root) imports adapters - SensorEnumerator ABC — 9 abstract methods in
core/ports.py. All 4 platform sensor adapters (Linux, Windows, macOS, BSD) inherit from it - PlatformSetup ABC — each OS has its own setup adapter.
trcc setupdispatches viaControllerBuilder.build_setup() - Cross-platform package managers — Doctor supports
winget(Windows),brew(macOS),pkg(BSD)
Fixes
- Windows: sensor crashes —
WindowsSensorEnumeratormissing methods + GUI/API hardcoded Linux enumerator - Windows: GUI not showing —
AF_UNIX,SIGUSR1,/tmplock path, IPC sockets all guarded - Windows: charmap codec — UTF-8 forced on stdout/stderr
- Rotation crushed on non-square displays — 90°/270° on landscape devices now resizes back to native dims before encoding
Improvements
trcc reportshows install method — pip, pipx, pacman, dnf, apt, or .exe- 5247 tests with ABC contract verification across all platforms