# Phase 8: UI Polish & Template Engine **Status**: Pending **Parent**: [primary-plan.md](primary-plan.md) --- ## Tasks ### 1. Server health indicator on card `[ ]` - Call `/api/health` or ping the Immich server on load - Show green/red dot or badge on each server card - Auto-refresh periodically or on page load ### 2. Album selector filter-by-name `[ ]` - Add search/filter input above the album checkbox list in tracker form - Filter albums by name as user types (case-insensitive) - Show match count ### 3. Album last update time `[ ]` - Fetch `updatedAt` from Immich album API response - Display formatted last update time next to each album in the selector - Format relative ("2 hours ago") or absolute based on locale ### 4. Review and improve message template engine `[ ]` - Current: simple Python `str.format()` style `{variable}` placeholders - Blueprint uses Jinja2 with `{% if %}`, `{% for %}`, `| join` filters - The TemplateConfig stores raw template strings - Review: should the server render templates using Jinja2 with the full variable context? Currently `notifier.py` just does simple format() - Proposal: Switch to full Jinja2 rendering in notifier with all 40+ variables, conditional blocks, loops over assets, filters - Add template documentation/reference panel in the template-configs UI - Add a "variable reference" sidebar showing all available variables with descriptions and example values ### 5. Change user password `[ ]` - Add password change form to user profile (sidebar footer or /settings page) - Backend: `PUT /api/auth/password` (current_password + new_password) - Admin can also reset any user's password via /users page