feat: alerts (M8), notifications config page, and app icon (0.4.0)
release / release (push) Successful in 14s
release / release (push) Successful in 14s
- feat(alerts): desktop notifications (notify-send) for overheat (GPU/CPU past a configurable threshold), GPU-lost, and a new-version-available alert (once per version). Edge-triggered with cooldown so it doesn't spam (core/alerts.py) - feat(gui): Notifications page to configure alerts (enable, GPU/CPU thresholds, Send test); changes apply live and persist via config.save_config/update_config - feat(gui): ship a RigDoctor icon; the GUI self-registers the icon + .desktop on launch and sets the Wayland app-id, so the dock shows it after an update + relaunch (no installer re-run); installer/uninstaller updated to manage the icon - config: alerts_enabled, gpu_temp_alert, cpu_temp_alert; flat-TOML writer - tests for the alert monitor and config round-trip Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
"""Tests for config save/load (flat TOML writer)."""
|
||||
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from unittest import mock
|
||||
|
||||
from rigdoctor import config
|
||||
|
||||
|
||||
class ConfigTests(unittest.TestCase):
|
||||
def test_save_load_round_trip(self):
|
||||
with tempfile.TemporaryDirectory() as d:
|
||||
cf = Path(d) / "config.toml"
|
||||
with mock.patch.object(config, "CONFIG_FILE", cf), mock.patch.object(config, "CONFIG_DIR", Path(d)):
|
||||
config.save_config({"alerts_enabled": False, "gpu_temp_alert": 88.0, "update_check_minutes": 5})
|
||||
loaded = config.load_config()
|
||||
self.assertIs(loaded["alerts_enabled"], False)
|
||||
self.assertEqual(loaded["gpu_temp_alert"], 88.0)
|
||||
self.assertEqual(loaded["update_check_minutes"], 5)
|
||||
|
||||
def test_update_config_merges_and_keeps_defaults(self):
|
||||
with tempfile.TemporaryDirectory() as d:
|
||||
cf = Path(d) / "config.toml"
|
||||
with mock.patch.object(config, "CONFIG_FILE", cf), mock.patch.object(config, "CONFIG_DIR", Path(d)):
|
||||
config.update_config(cpu_temp_alert=70.0)
|
||||
self.assertEqual(config.load_config()["cpu_temp_alert"], 70.0)
|
||||
self.assertEqual(config.load_config()["gpu_temp_alert"], 90.0) # default preserved
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user