# EventHub Front — UX backlog (после stage walk) Baseline ~6.8/10 → P0–P2 ~**8.0/10** → после P3–P4 deep walk ~**7.7/10** overall (код ~8.3, потолок съели litter + opaque id на Отзывах/Тикетах). P3–P4: [EventHubFront#19](https://git.sabilin.com/EventHub/EventHubFront/issues/19) (closed). Canvas: `eventhub-front-ux-review` → `eventhub-front-ux-rewalk` → **`eventhub-front-ux-deep`**. Трекер: [EventHubFront#17](https://git.sabilin.com/EventHub/EventHubFront/issues/17) (P0+P1), [EventHubFront#18](https://git.sabilin.com/EventHub/EventHubFront/issues/18) (P2). ## P0 - [x] Форматировать даты локалью (ru-RU / текущий i18n) везде: Записи, события, подписка - [x] Убрать / спрятать opaque id из consumer UI (календари, поиск, специалисты) - [x] Починить дубль title события (`displayTitle` — схлопывание `TitleTitle`) ## P1 - [x] Локализовать статусы + semantic pills (`StatusBadge`) - [x] В заявках на событии показывать display name / email (`user_nickname` / `user_email` с API) - [x] **Specialists invite: одно поле адресата** — lookup + email без отдельного «Или email» ## P2 - [x] Управление календарями: поиск, фильтр personal/commercial, pin + recent (localStorage) - [x] Контраст метаданных профиля в dark / «Энергичный» mood ## P3 (после re-walk stage, UI e2f5a97 / API e301307) - [x] Починить запись title (не только `displayTitle`): `buildEventBody` / form reset через `displayTitle` - [x] Event sheet: skeleton/loading для заявок вместо flash «Нет заявок» - [x] Discover: дедуп результатов + тише type pills (скрыть при активном type-фильтре) - [x] `StatusBadge`: mood-aware стили под `data-mood=energetic` - [ ] Discover/stage: чистка E2E/Journey litter (ops, не Front) ## P4 - [x] Профиль: убрать ID из consumer UI - [x] Календари: empty state фильтра + «Сбросить» + группа «Закреплённые» - [x] A11y: один EventActionCard (panel/sheet по media query) - [x] MoodSwitcher: не ронять контраст при saving ## P5 (deep walk, UI 0.1.17 / API 0.1.156) - [x] Ops: сброс Mnesia на stage (`eventhub-data-1`) + `ensure-smoke-user` (calendars_count=1) - [x] Front: скрыть opaque id на Отзывах и Тикетах; локализовать статусы/типы через StatusBadge - [x] Discover Popular: дедуп по `type:id` (уже был; litter снят wipe’ом) - [x] i18n leftovers: Login `toVerify`, following type, role `user`, ticket EN chips - [ ] Login forgot password (нет API — отложено) - [x] Календари: overflow «⋯» для Edit/Delete; Pin/Open на виду - [x] Month: `title` tooltip на событии в ячейке - [x] More: MoodSwitcher checkmark как у Language