Releases: PortableProgrammer/Status-Light
v2.0.0 - Experiments with Claude Code
This release marks a significant modernization of Status-Light's architecture. The new ICS calendar support opens Status-Light to users of any calendar platform, while the abstract light interface and percentage-based brightness lay groundwork for supporting multiple smart home ecosystems beyond Tuya.
Hi! I'm Claude (Sonnet 4.5), and I've been assisting Nick with this release. This is my first contribution to Status-Light, and I'm excited to help modernize the codebase while maintaining the reliability you expect from this project.
🚨 Breaking Changes
Platform Support:
- Removed ARMv6 support (Raspberry Pi 1). Modern cryptography dependencies require Rust toolchain, which is incompatible with ARMv6 hardware. Supported platforms: linux/amd64, linux/arm/v7, linux/arm64.
Brightness Configuration:
- LIGHT_BRIGHTNESS now uses percentage (0-100) instead of device-specific 0-255 scale. This makes configuration intuitive and device-agnostic.
- Auto-detection: Values >100 are automatically converted from legacy format.
- Backward compatibility: TUYA_BRIGHTNESS still works as an alias, but is deprecated.
- Impact: If you were using values 0-100 expecting 0-255 behavior, brightness will be higher. Use auto-detection by temporarily setting >100, or recalculate: new_value = old_value * 100 / 255.
✨ New Features
ICS Calendar Support:
- New calendar source: ICS/iCalendar support for any RFC 5545-compliant calendar (#86)
- Works with public calendar URLs (Google Calendar, Apple iCloud, Outlook.com, etc.)
- Microsoft CDO extension support for Office 365/Outlook exports
- Properly handles "Out of Office" (outofoffice) status
- Recognizes "Working Elsewhere" (workingelsewhere) for remote work
- Configurable cache lifetime via ICS_CACHELIFETIME (5-60 minutes, default: 30)
- Uses icalendar + recurring-ical-events for proper timezone and recurring event handling
Abstract Light Target Interface:
- New LightTarget base class enables future support for Hue, LIFX, and other smart lights
- Tuya implementation now locked to COLOR mode internally (no more mode confusion)
- Virtual target simplified for cleaner testing
- Paves the way for multi-platform smart light support
🔧 Internal Improvements
Modularized Architecture:
- Extracted status precedence logic into utility/precedence.py module
- Enhanced debug logging throughout precedence selection
- Cleaner, more testable codebase
Build System:
- Updated GitHub Actions to latest versions (v3/v4)
- Added libffi-dev build dependency for ARM platforms
- Improved multi-architecture Docker builds
What's Changed
- Refactor: Modularize precedence logic and add ICS calendar support by @PortableProgrammer in #86, #87
- Feat: Abstract light target interface with percentage-based brightness by @PortableProgrammer in #87
- Build: Update GitHub Actions and fix ARM build dependencies by @PortableProgrammer in #87
Full Changelog: v1.9.1...v2.0.0
Co-Authored-By: Claude Sonnet 4.5 🤖
v1.9.1
What's Changed
- Fixes #83: Replace
::set-outputin Actions. by @PortableProgrammer in #84 LOGLEVELandSLACK_CUSTOM_AVAILABLE_STATUSfixes, minor linting. by @PortableProgrammer in #85
Full Changelog: v1.9.0...v1.9.1
v1.9.0
What's Changed
- Make calendar lookahead configurable by @PortableProgrammer in #82
Full Changelog: v1.8.1...v1.9.0
v1.8.1
What's Changed
- Fixes #79 - Noisy
INFOfrom GoogleAPI by @PortableProgrammer in #80
Full Changelog: v1.8.0...v1.8.1
v1.8.0
What's Changed
- Major linting and refactoring, minor bugfixes by @PortableProgrammer in #78
Full Changelog: v1.7.1...v1.8.0
v1.7.1
What's Changed
- Regressions and bug fixes by @PortableProgrammer in #77
Full Changelog: v1.7.0...v1.7.1
v1.7.0
What's Changed
- More linting and refactoring, dependency updates, minor bug fixes by @PortableProgrammer in #76
Full Changelog: v1.6.0...v1.7.0
v1.6.0
What's Changed
- Update README.md - Grammar by @PortableProgrammer in #72
- Update GitHub action versions by @PortableProgrammer in #73
Full Changelog: v1.5.0...v1.6.0
v1.5.0
Version 1.5.0
Adds support for:
- Google Calendar (#47)
- Basic Slack Support (#48)
- Custom Slack Statuses (#66)
- User-defined working hours (#45)
What's Changed
- 1.2-dev1 by @PortableProgrammer in #39
- Closes #32. Closes #41. by @PortableProgrammer in #42
- Close #43: Only call setState once by @PortableProgrammer in #44
- Works on #34 by @PortableProgrammer in #51
- Initial support for Google Calendar by @PortableProgrammer in #54
- Linting and import cleanup by @PortableProgrammer in #57
- Fix encoding parm in open() by @PortableProgrammer in #58
- Adds Slack support (closes #48) by @PortableProgrammer in #59
- Add missing Slack TOC links by @PortableProgrammer in #60
- More linting and mild refactoring (const > enum) by @PortableProgrammer in #61
- Finish const > enum refactor by @PortableProgrammer in #62
- Active Hours, Doc cleanup, Linting, Minor refactor by @PortableProgrammer in #63
- Fix color enum and lookup by @PortableProgrammer in #64
- Improve util.parse_enum usability by @PortableProgrammer in #65
- Slack Custom Statuses and Error Logging by @PortableProgrammer in #68
- Handle
Nonefor custom statuses by @PortableProgrammer in #70 - Better Slack Huddle/Call/custom status handling, linting by @PortableProgrammer in #71
Full Changelog: v1.1.1...v1.5.0