Files
notify-bridge/plans/ux-notification-improvements/phase-3-events-ui.md
T
alexei.dolgolyov 03c5c66eed feat: UX & notification improvements — icons, events, chat names, link validation, templates
- 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>
2026-03-20 16:18:03 +03:00

44 lines
2.0 KiB
Markdown

# Phase 3: Richer Events Display + Filtering & Sorting
**Status:** ⬜ Not Started
**Parent plan:** [PLAN.md](./PLAN.md)
**Domain:** frontend
## Objective
Update the dashboard to display richer event details (provider name, tracker name, album name, event type, assets count) and add filtering/sorting controls.
## Tasks
- [ ] Task 1: Update event timeline items in `+page.svelte` to show: provider name, tracker name, album name, event type badge, and assets count
- [ ] Task 2: Add filter controls above the events list: text search input, event type dropdown (all/assets_added/assets_removed/collection_renamed/collection_deleted/sharing_changed), provider dropdown (populated from providers list)
- [ ] Task 3: Add sort control: newest first / oldest first toggle
- [ ] Task 4: Wire filters to API query params (event_type, provider_id, search) from Phase 2
- [ ] Task 5: Add "load more" button or increase default limit for events
- [ ] Task 6: Ensure graceful display when enriched fields are empty (old events before Phase 2)
## Files to Modify/Create
- `frontend/src/routes/+page.svelte` — event display, filter/sort controls, API calls
## Acceptance Criteria
- Each event shows: provider name, tracker name, album name, event type (badge), assets count
- Filtering by text search, event type, and provider works
- Sort by time (newest/oldest) works
- Old events without enriched data display gracefully (show what's available)
- Filter/sort state resets on page load (no persistence needed)
- UI is responsive and consistent with existing design
## Notes
- Depends on Phase 2's enriched API response
- Provider list for the dropdown can come from existing /api/providers endpoint
- Event type badges already have color mapping in the current dashboard code
## Review Checklist
- [ ] All tasks completed
- [ ] Code follows project conventions
- [ ] No unintended side effects
- [ ] Build passes
- [ ] Tests pass (new + existing)
## Handoff to Next Phase
<!-- Filled in after completion -->