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 из БД вместо стейлового поля.