New SnapshotEventRouter class (46 lines) provides callable-based snapshot dispatch via register(), register_always(), and dispatch(). main.gd _process() now calls _router.dispatch(snapshot) instead of 15+ inline if-has blocks. Handlers registered in _ready(). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>