Changelog
Все обновления AtlasPM в одном месте
Добавлено
- •Удаление аккаунта (152-ФЗ) — Danger Zone на странице аккаунта. Подтверждение паролем, проверка sole ownership, soft-delete через user_metadata + ban через Supabase Admin API. Данные удаляются вручную раз в месяц.
- •Экспорт персональных данных (152-ФЗ) — кнопка «Скачать мои данные» на странице аккаунта. JSON с профилем, воркспейсами, проектами, задачами, входящими. Rate limit 1 раз в 24 часа.
- •PostHog Product Analytics — интеграция `@posthog/next` + `posthog-node`. Client-side: PostHogProvider с автоматическим трекингом pageview. Server-side: типизированный `trackEvent()` хелпер для ключевых действий (создание проекта, AI-генерация доски). No-op без `NEXT_PUBLIC_POSTHOG_KEY`.
- •Sentry Error Monitoring — интеграция `@sentry/nextjs` v10. Client/server/edge конфиги, error boundary в `global-error.tsx` и app-level `error.tsx`, `instrumentation.ts` для серверной инициализации. Семплирование 10%, session replay при ошибках. Для активации — указать `NEXT_PUBLIC_SENTRY_DSN` в env.
- •Inbox: кнопка «Разгруппировать все» в карточке кластера — все отзывы возвращаются в Inbox как отдельные записи, хедер группы удаляется. С подтверждением через диалог.
- •Inbox: кнопка «В тему» на каждом отзыве в кластере — переместить отзыв в другую тему через inline picker. Пересчёт count на обеих группах.
- •Inbox: inline reassign направления в таблице — кнопка быстрой смены направления прямо в строке таблицы Inbox, без открытия детальной карточки.
Исправлено
- •72 hardcoded ошибки заменены на i18n error codes — все server actions теперь возвращают типизированные коды ошибок (NOT_AUTHORIZED, MEMBER_NOT_FOUND и т.д.) вместо хардкоженных русских строк. Клиент маппит коды на переводы через `errors.server.*`. EN-пользователи больше не видят русские сообщения об ошибках. 12 action-файлов, 42 кода ошибок.
- •Inbox: два крестика закрытия в карточке одиночного фидбэка — ShadCN Sheet рисовал свой крестик поверх кастомного. Убран дублирующий.
- •Inbox: несовпадение количества отзывов в «Топ запросов» и внутри кластера — `group_member_count` не обновлялся при откреплении отзывов. Теперь: при откреплении — пересчёт, в таблице Top — реальный count из БД вместо стейлового поля.