From ce21733ae611de7b2586961e20bb80c3c7ef4fda Mon Sep 17 00:00:00 2001 From: "alexei.dolgolyov" Date: Thu, 19 Mar 2026 19:28:00 +0300 Subject: [PATCH] Jinja2 syntax highlighting + description field + preview toggle JinjaEditor: - Custom StreamLanguage parser for Jinja2 syntax highlighting: {{ variables }} in blue, {% statements %} in purple, {# comments #} in gray - Replaced HTML mode (didn't understand Jinja2 syntax) - Proper monospace font (Consolas/Monaco) TemplateConfig: - Added `description` field to model + seed defaults with descriptions - Description shown on template cards instead of raw template text - Description input in create/edit form Preview: - Toggle behavior: clicking Preview again hides the preview - Per-slot preview uses preview-raw API (renders current editor content) i18n: added common.description, templateConfig.descriptionPlaceholder Co-Authored-By: Claude Opus 4.6 (1M context) --- frontend/package-lock.json | 1 + frontend/package.json | 1 + frontend/src/lib/components/IconButton.svelte | 26 +++++++++++ .../src/lib/components/JinjaEditor.svelte | 45 ++++++++++++++++--- frontend/src/lib/i18n/en.json | 2 + frontend/src/lib/i18n/ru.json | 2 + frontend/src/routes/servers/+page.svelte | 13 ++++-- frontend/src/routes/targets/+page.svelte | 9 ++-- .../src/routes/telegram-bots/+page.svelte | 6 +-- .../src/routes/template-configs/+page.svelte | 41 +++++++++++++---- frontend/src/routes/trackers/+page.svelte | 21 ++++----- .../src/routes/tracking-configs/+page.svelte | 7 +-- frontend/src/routes/users/+page.svelte | 7 +-- .../immich_watcher_server/database/models.py | 1 + .../server/src/immich_watcher_server/main.py | 4 +- 15 files changed, 141 insertions(+), 45 deletions(-) create mode 100644 frontend/src/lib/components/IconButton.svelte diff --git a/frontend/package-lock.json b/frontend/package-lock.json index ce5850d..0101074 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.1", "dependencies": { "@codemirror/lang-html": "^6.4.11", + "@codemirror/language": "^6.12.2", "@codemirror/state": "^6.6.0", "@codemirror/theme-one-dark": "^6.1.3", "@codemirror/view": "^6.40.0", diff --git a/frontend/package.json b/frontend/package.json index 9cc3ae1..c66055f 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -30,6 +30,7 @@ }, "dependencies": { "@codemirror/lang-html": "^6.4.11", + "@codemirror/language": "^6.12.2", "@codemirror/state": "^6.6.0", "@codemirror/theme-one-dark": "^6.1.3", "@codemirror/view": "^6.40.0", diff --git a/frontend/src/lib/components/IconButton.svelte b/frontend/src/lib/components/IconButton.svelte new file mode 100644 index 0000000..bc11362 --- /dev/null +++ b/frontend/src/lib/components/IconButton.svelte @@ -0,0 +1,26 @@ + + + diff --git a/frontend/src/lib/components/JinjaEditor.svelte b/frontend/src/lib/components/JinjaEditor.svelte index 0755b2f..b87ea4c 100644 --- a/frontend/src/lib/components/JinjaEditor.svelte +++ b/frontend/src/lib/components/JinjaEditor.svelte @@ -1,8 +1,8 @@