Phase 8: Server health, album filter, Jinja2 engine, password change
Some checks failed
Validate / Hassfest (push) Has been cancelled

5 features implemented:

1. Server health indicator: green/red/yellow dot on each server card.
   Pings Immich in background on page load. New GET /api/servers/{id}/ping.

2. Album selector filter: search input above album list in tracker form.
   Filters by name as you type (case-insensitive). Shows total count.

3. Album last update time: each album in the selector shows its
   updatedAt date. Backend now returns updatedAt from Immich API.

4. Full Jinja2 template engine in notifier:
   - build_full_context() assembles all ~40 variables from blueprint
   - Common date/location detection across assets
   - Per-asset date/location when they differ
   - Favorite indicator, people formatting, asset list with truncation
   - Video warning for Telegram
   - All template slots from TemplateConfig used contextually

5. Password change: PUT /api/auth/password endpoint (validates current
   password, min 6 chars). UI in sidebar footer with inline form.

Also: Phase 9 plan (Telegram bot management) added.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-19 17:27:00 +03:00
parent 431069fbdb
commit 0200b9929f
10 changed files with 269 additions and 52 deletions

View File

@@ -0,0 +1,23 @@
# Phase 9: Telegram Bot Management
**Status**: Pending
**Parent**: [primary-plan.md](primary-plan.md)
---
## Tasks
### 1. Register Telegram bots `[ ]`
- New entity: TelegramBot (name, token, bot_username fetched via getMe)
- CRUD API: /api/telegram-bots
- Frontend page to manage bots
### 2. View active bot chats `[ ]`
- Call Telegram getUpdates API to discover chats the bot has interacted with
- Display chat list (id, title, type) per bot
- Refresh on demand
### 3. Target uses registered bot + chat selector `[ ]`
- Target form: select from registered bots (dropdown) instead of raw token
- Select from discovered chats instead of typing chat_id manually
- Keep backward-compatible raw input as fallback