feat: provider-strict configs, slot-based templates, broadcast targets, email bots, command templates

Major architectural improvements:
- Provider-type enforcement: configs validated against provider type at assignment
- TemplateConfig migrated to slot-based pattern (TemplateSlot child table)
- Broadcast targets: TargetReceiver child table for multi-receiver dispatch
- EmailBot: first-class email sender entity with SMTP config, test connection
- CommandTemplateConfig: generic slot-based command response templates
- Provider capability registry: dynamic slot/event/command definitions per provider
- CommandTracker play/pause button matches NotificationTracker style
This commit is contained in:
2026-03-21 16:33:24 +03:00
parent 371ea70756
commit 846d480d38
27 changed files with 2355 additions and 205 deletions
+38 -1
View File
@@ -13,6 +13,7 @@
"targets": "Targets",
"commandConfigs": "Cmd Configs",
"commandTrackers": "Cmd Trackers",
"cmdTemplateConfigs": "Cmd Templates",
"users": "Users",
"settings": "Settings",
"logout": "Logout"
@@ -478,6 +479,36 @@
"botLocale": "Language for command descriptions in Telegram's menu and bot response messages.",
"rateLimits": "Cooldown in seconds between uses of each command category per chat. 0 = no limit."
},
"emailBot": {
"title": "Email Bots",
"description": "SMTP email senders for notifications",
"addBot": "Add Email Bot",
"name": "Name",
"namePlaceholder": "Family Notifications",
"email": "From Email",
"smtpHost": "SMTP Host",
"smtpPort": "Port",
"smtpUsername": "Username",
"smtpUsernamePlaceholder": "Same as email or app password",
"smtpPassword": "Password",
"passwordUnchanged": "(unchanged)",
"useTls": "Use TLS/SSL",
"testConnection": "Send test email",
"noBots": "No email bots yet.",
"confirmDelete": "Delete this email bot?"
},
"cmdTemplateConfig": {
"title": "Command Templates",
"description": "Customize command response messages with Jinja2 templates",
"newConfig": "New Config",
"name": "Name",
"namePlaceholder": "Default Immich Commands",
"descriptionPlaceholder": "e.g. Custom response formats for family bot",
"noConfigs": "No command template configs yet.",
"confirmDelete": "Delete this command template config?",
"commandResponses": "Command Responses",
"commandResponsesHint": "Leave a slot empty to use the default hardcoded response."
},
"commandConfig": {
"title": "Command Configs",
"description": "Define command settings for Telegram bot interactions",
@@ -558,7 +589,13 @@
"commandTrackerEnabled": "Command tracker enabled",
"commandTrackerDisabled": "Command tracker disabled",
"listenerAdded": "Listener added",
"listenerRemoved": "Listener removed"
"listenerRemoved": "Listener removed",
"cmdTemplateSaved": "Command template saved",
"cmdTemplateDeleted": "Command template deleted",
"emailBotCreated": "Email bot created",
"emailBotUpdated": "Email bot updated",
"emailBotDeleted": "Email bot deleted",
"emailBotTestSent": "Test email sent successfully"
},
"common": {
"loading": "Loading...",