Files
haos-hacs-immich-album-watcher/plans/phase-8-ui-polish.md
alexei.dolgolyov 431069fbdb
Some checks failed
Validate / Hassfest (push) Has been cancelled
Add Phase 8 plan: UI polish, template engine, password change
5 tasks:
1. Server health indicator on cards
2. Album selector filter-by-name
3. Album last update time display
4. Review/improve template engine (Jinja2 with full variable context)
5. Change user password (self + admin reset)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 17:16:56 +03:00

1.6 KiB

Phase 8: UI Polish & Template Engine

Status: Pending Parent: 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