feat: add bed cooled notification after print completes (#378)

Notify users when the print bed cools below a configurable threshold
(default 35°C) after a print finishes, so they know when to remove parts.

- Backend: DB migration, model, schemas, notification template, service
  method, background cooldown monitor (polls every 15s, 30min timeout)
- Frontend: event toggle in provider card/modal, threshold setting in
  Settings > Notifications, i18n keys for all 5 locales
- Tests: 4 backend + 4 frontend tests
- Docs: README, website, wiki updated
This commit is contained in:
maziggy
2026-02-15 10:59:07 +01:00
parent 045326d8ca
commit 53a4933c36
26 changed files with 441 additions and 55 deletions
+8
View File
@@ -791,6 +791,8 @@ export interface AppSettings {
// Prometheus metrics
prometheus_enabled: boolean;
prometheus_token: string;
// Bed cooled threshold
bed_cooled_threshold: number;
}
export type AppSettingsUpdate = Partial<AppSettings>;
@@ -1402,6 +1404,8 @@ export interface NotificationProvider {
on_ams_ht_temperature_high: boolean;
// Build plate detection
on_plate_not_empty: boolean;
// Bed cooled
on_bed_cooled: boolean;
// Print queue events
on_queue_job_added: boolean;
on_queue_job_assigned: boolean;
@@ -1452,6 +1456,8 @@ export interface NotificationProviderCreate {
on_ams_ht_temperature_high?: boolean;
// Build plate detection
on_plate_not_empty?: boolean;
// Bed cooled
on_bed_cooled?: boolean;
// Print queue events
on_queue_job_added?: boolean;
on_queue_job_assigned?: boolean;
@@ -1495,6 +1501,8 @@ export interface NotificationProviderUpdate {
on_ams_ht_temperature_high?: boolean;
// Build plate detection
on_plate_not_empty?: boolean;
// Bed cooled
on_bed_cooled?: boolean;
// Print queue events
on_queue_job_added?: boolean;
on_queue_job_assigned?: boolean;