Add ability to persist current configuration to disk and trigger reloads, expose set() and save() methods, monitor the config directory for changes, and adjust notification history based on config modifications.
- New Features
- Implement `save()` method to write config to file and trigger reload
- Add `set()` method for in‑memory config updates
- Extend file monitoring to include parent directory
- Rename `get_all_config` to `get_config_all`
- Enhancements
- Refine reload logic to correctly capture previous state via `_last_notified_config`
- Trigger reloads on additional file‑monitor events (CREATED, DELETED)
- Prune cached notifications according to config changes (`notification_ignored_apps`, `notification_limited_apps_history`)
- Bug Fixes
- Resolve race condition where reload‑pending flag could be left set
- Ensure callbacks are notified on every reload request
- Fix stale comparison of config values in `has_changed`
Why: Modernize HTTP client usage and expose currency symbols for conversion.
New Features
- Added `CURRENCY_SYMBOLS` mapping from symbols to currency codes.
- Switched all external requests to `httpx` with custom headers and redirects.
Enhancements
- Increased timeout to 10 seconds and enabled `follow_redirects=True`.
- Centralized error handling with explicit status‑code checks.
Bug Fixes
- Added proper exception handling for JSON parsing to avoid silent failures.
- Improved error messages for non‑200 responses.
- New Feature: Replace urllib.request with httpx for fetching artwork URLs, providing timeout and redirect support.
- Enhancement: Added proper HTTP status code handling and early exit on download cancellation.
- Bug Fix: Gracefully handle non‑200 responses and prevent resource leaks during network operations.
The updated regex now matches non‑numeric unit prefixes, and units are normalized before conversion, improving accuracy and preventing mismatches.
- Bug Fixes: Fixed incorrect unit detection that caused failed conversions.
- Enhancements: Added unit cleaning (`converter.clean_type`) to standardize input.
- New Features: None.
This change adds a mechanism to refresh the todo list dynamically when the underlying service updates, improving UI responsiveness and user experience. It also updates documentation and removes deprecated files.
- New Features:
- Added `_refresh_todos` method to rebuild the todo list when `get_todo_service().todos` changes.
- Introduced `TodoListCapture` class for mouse capture handling of the todo list window.
- Enhancements:
- Updated README with corrected image paths, installation tips, and manual installation commands.
- Introduced `start.py` to launch the application or lock mode.
- Removed deprecated `config.json` and `debug_memory.py`.
- Bug Fixes:
- Fixed lock screen screenshot path in README.