Fix template variable docs to match actual notifier output
All checks were successful
Validate / Hassfest (push) Successful in 3s

Audit and fix all template variable references:
- template_vars.py: Add missing fields (album_id, old_shared,
  new_shared, latitude, longitude, owner_id, people per asset)
- _SAMPLE_CONTEXT: Use proper structured data matching
  build_asset_detail() output (id, owner_id, latitude, longitude,
  people per asset, playback_url for videos)
- i18n: Fix all variable descriptions for accuracy, add missing
  fields, mark scheduler-dependent slots as "not yet implemented"
- Variables modal: Add album_fields section for periodic_summary
- Shared _ASSET_FIELDS and _ALBUM_FIELDS dicts in template_vars.py
  to keep scheduled/memory slots DRY

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-19 20:58:21 +03:00
parent 3c893d6dbf
commit b87b5b2c87
7 changed files with 297 additions and 100 deletions

View File

@@ -268,6 +268,7 @@
"preview": "Preview",
"variables": "Variables",
"assetFields": "Asset fields (in {% for asset in added_assets %})",
"albumFields": "Album fields (in {% for album in albums %})",
"confirmDelete": "Delete this template config?"
},
"templateVars": {
@@ -275,38 +276,50 @@
"message_assets_removed": { "description": "Notification when assets are removed from an album" },
"message_album_renamed": { "description": "Notification when an album is renamed" },
"message_album_deleted": { "description": "Notification when an album is deleted" },
"periodic_summary_message": { "description": "Periodic album summary with stats" },
"scheduled_assets_message": { "description": "Scheduled asset picks from albums" },
"memory_mode_message": { "description": "\"On This Day\" memories from past years" },
"periodic_summary_message": { "description": "Periodic album summary (scheduler not yet implemented)" },
"scheduled_assets_message": { "description": "Scheduled asset delivery (scheduler not yet implemented)" },
"memory_mode_message": { "description": "\"On This Day\" memories (scheduler not yet implemented)" },
"album_id": "Album ID (UUID)",
"album_name": "Album name",
"album_url": "Public share URL (if available)",
"album_url": "Public share URL (empty if not shared)",
"added_count": "Number of assets added",
"removed_count": "Number of assets removed",
"change_type": "Type of change",
"people": "Detected people names (use {{ people | join(', ') }})",
"added_assets": "List of added asset objects (use {% for asset in added_assets %})",
"removed_assets": "List of removed asset IDs",
"shared": "Whether album is shared (true/false)",
"video_warning": "Video size warning text",
"old_name": "Previous album name",
"new_name": "New album name",
"albums": "List of album objects (use {% for album in albums %})",
"assets": "List of asset objects (use {% for asset in assets %})",
"date": "Current date/time",
"change_type": "Type of change (assets_added, assets_removed, album_renamed, album_deleted)",
"people": "Detected people names (list, use {{ people | join(', ') }})",
"added_assets": "List of asset dicts (use {% for asset in added_assets %})",
"removed_assets": "List of removed asset IDs (strings)",
"shared": "Whether album is shared (boolean)",
"video_warning": "Video size warning (from template config, only if videos present)",
"old_name": "Previous album name (rename events)",
"new_name": "New album name (rename events)",
"old_shared": "Was album shared before rename (boolean)",
"new_shared": "Is album shared after rename (boolean)",
"albums": "List of album dicts (use {% for album in albums %})",
"assets": "List of asset dicts (use {% for asset in assets %})",
"date": "Current date string",
"asset_id": "Asset ID (UUID)",
"asset_filename": "Original filename",
"asset_type": "IMAGE or VIDEO",
"asset_created_at": "Creation date/time (ISO 8601)",
"asset_owner": "Owner display name",
"asset_owner_id": "Owner user ID",
"asset_description": "User or EXIF description",
"asset_url": "Public viewer URL",
"asset_download_url": "Direct download URL",
"asset_photo_url": "Preview image URL (images only)",
"asset_playback_url": "Video playback URL (videos only)",
"asset_is_favorite": "Whether asset is favorited",
"asset_people": "People detected in this asset (list)",
"asset_is_favorite": "Whether asset is favorited (boolean)",
"asset_rating": "Star rating (1-5 or null)",
"asset_latitude": "GPS latitude (float or null)",
"asset_longitude": "GPS longitude (float or null)",
"asset_city": "City name",
"asset_state": "State/region name",
"asset_country": "Country name"
"asset_country": "Country name",
"asset_url": "Public viewer URL (if shared)",
"asset_download_url": "Direct download URL (if shared)",
"asset_photo_url": "Preview image URL (images only, if shared)",
"asset_playback_url": "Video playback URL (videos only, if shared)",
"album_name_field": "Album name (in album list)",
"album_asset_count": "Total assets in album",
"album_url_field": "Album share URL",
"album_shared": "Whether album is shared"
},
"hints": {
"periodicSummary": "Sends a scheduled summary of all tracked albums at specified times. Great for daily/weekly digests.",

View File

@@ -268,6 +268,7 @@
"preview": "Предпросмотр",
"variables": "Переменные",
"assetFields": "Поля файла (в {% for asset in added_assets %})",
"albumFields": "Поля альбома (в {% for album in albums %})",
"confirmDelete": "Удалить эту конфигурацию шаблона?"
},
"templateVars": {
@@ -275,38 +276,50 @@
"message_assets_removed": { "description": "Уведомление об удалении файлов из альбома" },
"message_album_renamed": { "description": "Уведомление о переименовании альбома" },
"message_album_deleted": { "description": "Уведомление об удалении альбома" },
"periodic_summary_message": { "description": "Периодическая сводка альбомов со статистикой" },
"scheduled_assets_message": { "description": "Запланированная подборка фото из альбомов" },
"memory_mode_message": { "description": "«В этот день» — фото из прошлых лет" },
"periodic_summary_message": { "description": "Периодическая сводка альбомов (планировщик не реализован)" },
"scheduled_assets_message": { "description": "Запланированная подборка фото (планировщик не реализован)" },
"memory_mode_message": { "description": "«В этот день» — воспоминания (планировщик не реализован)" },
"album_id": "ID альбома (UUID)",
"album_name": "Название альбома",
"album_url": "Публичная ссылка (если есть)",
"album_url": "Публичная ссылка (пусто, если не расшарен)",
"added_count": "Количество добавленных файлов",
"removed_count": "Количество удалённых файлов",
"change_type": "Тип изменения",
"people": "Обнаруженные люди ({{ people | join(', ') }})",
"added_assets": "Список добавленных файлов ({% for asset in added_assets %})",
"removed_assets": "Список ID удалённых файлов",
"shared": "Общий альбом (true/false)",
"video_warning": "Предупреждение о размере видео",
"old_name": "Прежнее название альбома",
"new_name": "Новое название альбома",
"change_type": "Тип изменения (assets_added, assets_removed, album_renamed, album_deleted)",
"people": "Обнаруженные люди (список, {{ people | join(', ') }})",
"added_assets": "Список файлов ({% for asset in added_assets %})",
"removed_assets": "Список ID удалённых файлов (строки)",
"shared": "Общий альбом (boolean)",
"video_warning": "Предупреждение о видео (из конфига шаблона, если есть видео)",
"old_name": "Прежнее название альбома (при переименовании)",
"new_name": "Новое название альбома (при переименовании)",
"old_shared": "Был ли общим до переименования (boolean)",
"new_shared": "Является ли общим после переименования (boolean)",
"albums": "Список альбомов ({% for album in albums %})",
"assets": "Список файлов ({% for asset in assets %})",
"date": "Текущая дата/время",
"date": "Текущая дата",
"asset_id": "ID файла (UUID)",
"asset_filename": "Имя файла",
"asset_type": "IMAGE или VIDEO",
"asset_created_at": "Дата создания (ISO 8601)",
"asset_owner": "Имя владельца",
"asset_owner_id": "ID владельца",
"asset_description": "Описание (EXIF или пользовательское)",
"asset_url": "Ссылка для просмотра",
"asset_download_url": "Ссылка для скачивания",
"asset_photo_url": "URL превью (только фото)",
"asset_playback_url": "URL видео (только видео)",
"asset_is_favorite": "В избранном",
"asset_people": "Люди на этом файле (список)",
"asset_is_favorite": "В избранном (boolean)",
"asset_rating": "Рейтинг (1-5 или null)",
"asset_latitude": "GPS широта (float или null)",
"asset_longitude": "GPS долгота (float или null)",
"asset_city": "Город",
"asset_state": "Регион",
"asset_country": "Страна"
"asset_country": "Страна",
"asset_url": "Ссылка для просмотра (если расшарен)",
"asset_download_url": "Ссылка для скачивания (если расшарен)",
"asset_photo_url": "URL превью (только фото, если расшарен)",
"asset_playback_url": "URL видео (только видео, если расшарен)",
"album_name_field": "Название альбома (в списке альбомов)",
"album_asset_count": "Всего файлов в альбоме",
"album_url_field": "Ссылка на альбом",
"album_shared": "Общий альбом"
},
"hints": {
"periodicSummary": "Отправляет плановую сводку по всем отслеживаемым альбомам в указанное время. Подходит для ежедневных/еженедельных дайджестов.",