Architecture
- plugin.json is now the single source of truth for all fields, actions, and metadata
- Removed duplicate fields property and actions class variable from plugin.py (~310 lines removed)
- Removed _load_timezones_from_file() — 312 IANA timezone options are now statically inlined in plugin.json
- Removed name and description class attributes from Plugin class (metadata lives in plugin.json)
Lifecycle
- Removed on_load() (not in plugin spec; was a no-op)
- Renamed on_unload() → stop(self, context) per plugin spec
Return Values
- All "status": "success" → "status": "ok" (34 occurrences)
- All "status": "info" → "status": "ok" (9 occurrences)
- Fixed 4 status comparisons in _execute_scheduled_check that still checked for 'success'
Actions Consolidated
- Removed Fire Webhook button — webhooks now only fire automatically after scheduled checks
- Removed Get Status Update internal polling action
- Enhanced View Check Progress to absorb completion and pending message handling from the removed actions
plugin.json Enhancements
- Added help_text and placeholder to all fields
- Added missing fields: webhook_url, scheduler_fire_webhook
- Added confirm dialogs (spec format) to 7 destructive actions
- Added button_color styling: blue (start check), red (cancel/delete/clear), orange (rename/move)
Bug Fixes
- Fixed self.name → self.key in _trigger_frontend_refresh (would have raised AttributeError after name attribute
removal)
Other
- Version check moved from dynamic settings field to validate_settings action output