03c5c66eed
- Show entity icons on all cards with fallback defaults (providers, trackers, targets, bots)
- Enrich EventLog with provider_name, tracker_name, assets_count; add DB migration
- Dashboard events: filtering (type, provider, search), sorting, pagination, dynamic page size
- Friendly chat names on telegram target cards (resolve from TelegramChat table)
- Test message button on bot chat items with locale-aware messages
- Album public link validation on tracker save with auto-create dialog
- Support albums without public links: conditional <a href> in templates
- Fetch shared links during poll, enrich events with public_url/protected_url
- Per-asset public_url in template context ({share_url}/photos/{asset_id})
- Common date/location detection: common_date + common_location context vars
- Dual date formats: date_format (datetime) + date_only_format (date only)
- Template clone button, HTML link rendering in template preview
- Fix Telegram asset download 401: pass x-api-key headers through client
- Fix provider external_url matching for API key scoping
- Fix event timestamp timezone (append Z suffix for UTC)
- Localize event filter controls, test messages (EN/RU)
- Template variable UI helpers updated with all new fields
- CLAUDE.md: template system sync rules documentation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
20 lines
907 B
Markdown
20 lines
907 B
Markdown
# Feature Context: UX & Notification Improvements
|
|
|
|
## Current State
|
|
Starting implementation. All entity models already have `icon: str` fields. EventLog exists with basic fields. Immich client already has shared link CRUD methods. Frontend uses Svelte 5 + Tailwind v4 with inline form/card pattern on all CRUD pages.
|
|
|
|
## Temporary Workarounds
|
|
- None yet
|
|
|
|
## Cross-Phase Dependencies
|
|
- Phase 3 depends on Phase 2 (enriched event data from API)
|
|
- Phase 6 logically follows Phase 5 (link validation informs no-link handling)
|
|
- Phases 1, 4 are fully independent
|
|
|
|
## Implementation Notes
|
|
- All overlays MUST use `position: fixed` with inline styles and `z-index: 9999`
|
|
- SQLAlchemy async + aiohttp: eager load DB data before aiohttp context
|
|
- Jinja2 templates use SandboxedEnvironment
|
|
- Icons stored as MDI icon path names (e.g., `mdiCamera`) from `@mdi/js`
|
|
- Frontend uses MdiIcon component to render SVG icons
|