v0.309.0: the notification page shows three group switches; details and cooldown under Részletek (R-388 slice 1, decision 200)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-10-12 16:50:41 +02:00
parent 68294ecb6f
commit 462196e29b
11 changed files with 659 additions and 89 deletions
+18 -3
View File
@@ -2910,8 +2910,23 @@ live hardware), which is exactly what the marker covers.
#### Default Enabled Events
Events the customer receives notifications for (configurable in settings):
`backup_failed`, `db_dump_failed`, `disk_warning`, `disk_critical`, `storage_disconnected`, `node_down`, `health_critical`, `expected_backup_missed`, `expected_dbdump_missed`
Events the customer receives notifications for (configurable in settings) — `settings.DefaultEnabledEvents`:
`backup_failed`, `db_dump_failed`, `disk_warning`, `disk_critical`, `storage_disconnected`, `node_down`, `health_critical`, `expected_backup_missed`, `expected_dbdump_missed`, `offbox_enlarge_blocked`, `app_update_undone`, `app_update_held`, `app_stopped_unhealthy`
#### The page: three group switches (v0.309.0, R-388 slice 1, `08` §8.1, `09` §3 decision 200)
The notification page shows three switches instead of one per detector — „A gépem és a meghajtóim" / "My
machine and drives", „Az alkalmazásaim" / "My apps", „Amit mi intézünk" / "What we handle" — each with one
sentence of what it sends. The membership table is `settings.NotificationGroups` (every detector on the page
is in exactly one group, pinned by `TestR388_EveryPageSwitchIsInExactlyOneGroup`). A group is a VIEW over the
same `enabled_events` list: no wire change, no hub change. A group with some detectors on and some off shows
as „egyedi" / "custom". The per-detector switches and the cooldown field sit under a „Részletek" / "Details"
fold (`<details>`, no script). The save rule (`Server.applyNotificationGroupSwitches`): a group switch the
household MOVED wins (sets or clears all its detectors); a group switch left where it was rendered leaves the
per-detector switches authoritative — so a custom group saved untouched writes the list back byte-for-byte
(`TestR388_CustomGroupSavedBackUnchanged`). A POST without the `group_<key>_shown` fields (an old page) is
handled exactly as before. Note: today's default list fills NO group completely (each misses a member), so a
fresh box shows all three as „egyedi" (`TestR388_DefaultListAsGroups` pins this until the default is decided).
#### Preference Sync
@@ -3249,7 +3264,7 @@ Five sections:
2. **Version & update** — current/latest version, check/update buttons, auto-update status, last update result
3. **Storage paths** — add/remove, edit labels, set default, toggle schedulable, per-path app list with sizes, safe disconnect/reconnect for USB drives
4. **Password change** — current + new + confirm, min 8 chars
5. **Notifications** — email, event checkboxes, cooldown hours, test email button
5. **Notifications** — email, three group switches (v0.309.0), the per-event checkboxes and cooldown hours under „Részletek", test email button
---