From 39bac828fdfe890c9aa531f70e012b8139d80e0b Mon Sep 17 00:00:00 2001 From: "alexei.dolgolyov" Date: Mon, 23 Mar 2026 15:03:35 +0300 Subject: [PATCH] feat: smart video size warnings + Jinja2 template autocomplete MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Video size warnings: - Add file_size field to ImmichAssetInfo from exifInfo.fileSizeInByte - Expose per-target max_video_size (50 MB for Telegram, none for others) - Compute has_oversized_videos and per-asset oversized flag in template context - Default templates show warning only when videos actually exceed the limit - Templates no longer hardcode Telegram-specific logic Template autocomplete: - New jinja-autocomplete.ts engine with contextual completions - Top-level variables ({{ }}), asset/album fields (dot access in loops), Jinja2 filters (|), block tags ({% %}), and loop.* special vars - JinjaEditor accepts optional variables prop via CodeMirror Compartment - Wired into template-configs and command-template-configs pages Also: fix template emoji (📷 → 📎) and sync sample_context with new vars. --- frontend/package-lock.json | 1 + frontend/package.json | 1 + .../src/lib/components/JinjaEditor.svelte | 29 +- frontend/src/lib/editor/jinja-autocomplete.ts | 279 ++++++++++++++++++ .../command-template-configs/+page.svelte | 1 + .../src/routes/template-configs/+page.svelte | 2 +- .../providers/immich/change_detector.py | 1 + .../providers/immich/models.py | 3 + .../notify_bridge_core/templates/context.py | 22 ++ .../templates/defaults/en/assets_added.jinja2 | 7 +- .../templates/defaults/ru/assets_added.jinja2 | 7 +- .../notify_bridge_core/templates/validator.py | 1 + .../api/template_configs.py | 5 + .../services/sample_context.py | 17 +- 14 files changed, 365 insertions(+), 11 deletions(-) create mode 100644 frontend/src/lib/editor/jinja-autocomplete.ts diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 6cc1318..4a44fc0 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,6 +8,7 @@ "name": "notify-bridge-frontend", "version": "0.1.0", "dependencies": { + "@codemirror/autocomplete": "^6.18.0", "@codemirror/lang-html": "^6.4.11", "@codemirror/language": "^6.12.2", "@codemirror/state": "^6.6.0", diff --git a/frontend/package.json b/frontend/package.json index abce86c..74a41f9 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -28,6 +28,7 @@ "vite": "^7.3.1" }, "dependencies": { + "@codemirror/autocomplete": "^6.18.0", "@codemirror/lang-html": "^6.4.11", "@codemirror/language": "^6.12.2", "@codemirror/state": "^6.6.0", diff --git a/frontend/src/lib/components/JinjaEditor.svelte b/frontend/src/lib/components/JinjaEditor.svelte index 33de030..ecb25dd 100644 --- a/frontend/src/lib/components/JinjaEditor.svelte +++ b/frontend/src/lib/components/JinjaEditor.svelte @@ -1,19 +1,24 @@