- Use SCRIPT_DIR to find source files from any directory
- Create venv as target user (sudo -u) for correct ownership
- Add python3 existence check
- Add source file existence check
- Add group to systemd service
- Fix uninstall.sh root check
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Port now set via config.json "port" field
- Aggregator reads PORT from environment variable
- Updated all docs and scripts to use port 5100
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- install.sh: Sets up /opt/kao with systemd service
- uninstall.sh: Clean removal
- Hide message when optimal (only show when something to report)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Renamed sentry.py to kao.py
- Updated all references from Sentry-Emote to Kao
- Kao (顔) means "face" in Japanese
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Sleep/wake endpoints for Home Assistant webhooks
- Sleep state: dim ( -_-)zzZ with slow breathing animation
- Updated CLAUDE.md with full technical reference
- Added README.md with user guide and HA integration examples
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rotating optimal faces with paired animations (breathing, floating, bouncing, swaying)
- Occasional idle expressions (winks/blinks) with 15% chance
- Recovery celebration emote with bounce animation
- Connection lost state with searching animation
- Face rotation every 5 minutes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Aggregator: Flask-based event broker with priority queue
- Frontend: OLED-optimized UI with animations
- Detectors: disk, cpu, memory, service, network
- Unified entry point (sentry.py) with process management
- Heartbeat TTL system for auto-clearing stale events
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>