vasyansk
|
8c35aed8f2
|
perf(web): route-level code-splitting; harden channel config rendering
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BwxdSt4reTm7Dj1oxRvpP3
|
2026-07-04 16:04:17 +07:00 |
|
vasyansk
|
34422420ca
|
feat(web): расписание, каналы уведомлений, история проверок, drift-badge
|
2026-07-04 14:40:29 +07:00 |
|
vasyansk
|
45259b9720
|
feat(web,api): клиент/хуки расписания/каналов/истории + lastCheckStatus в domainResponse
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BwxdSt4reTm7Dj1oxRvpP3
|
2026-07-04 14:24:02 +07:00 |
|
vasyansk
|
901eb51e2a
|
fix(auth): серверная проверка длины пароля, loading-guard и различение ошибок на auth-страницах
|
2026-07-03 21:33:03 +07:00 |
|
vasyansk
|
5a4d560e70
|
feat(web): Login/Register страницы, protected routes, logout
- ProtectedRoute: loading -> спиннер, !user -> /login, иначе children
- LoginPage/RegisterPage: field+react-hook-form/zod, ошибка через role=alert,
редирект на /domains при успехе/уже авторизован
- main.tsx: AuthProvider + QueryCache/MutationCache onError -> notifyUnauthorized
на UnauthorizedError (сброс сессии из кода вне React-дерева)
- AuthContext: logout и notifyUnauthorized чистят react-query кэш (qc.clear())
- Layout: email пользователя + кнопка Выйти
- App: /login и /register публичные (авторизованный -> /domains), остальное
под ProtectedRoute
Починка page-тестов (Accounts/Domains/Templates/DomainDiff/App): AuthProvider
+ мок api.auth.me, спай-ассерты обновлены под projectId-первым-аргументом
сигнатур api.* (T5).
|
2026-07-03 21:21:29 +07:00 |
|
vasyansk
|
222d6c0453
|
fix(web): null-guard в мутациях (no active project), AuthContext различает 401 и ошибки сервера
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BwxdSt4reTm7Dj1oxRvpP3
|
2026-07-03 21:07:48 +07:00 |
|
vasyansk
|
b5d9e8f7ab
|
feat(web): AuthContext + клиент под cookie-сессии, projectId из контекста
|
2026-07-03 21:00:18 +07:00 |
|
vasyansk
|
388bf4aeb6
|
fix(web): валидация записей шаблона — пустые values не уходят в API, ошибки видимы
|
2026-07-03 18:10:10 +07:00 |
|
vasyansk
|
99e09d35fb
|
feat(web): TemplatesPage + RecordEditor — CRUD шаблонов с редактором записей
|
2026-07-03 18:02:08 +07:00 |
|
vasyansk
|
4e91211a89
|
feat(web): AccountsPage — CRUD учёток, secret-форма, инструкция Selectel
|
2026-07-03 17:52:59 +07:00 |
|
vasyansk
|
ef003230fa
|
fix(web): DomainsPage показывает ошибки привязки шаблона и удаления
|
2026-07-03 17:49:48 +07:00 |
|
vasyansk
|
0ce15d30a8
|
feat(web): DomainsPage — список, импорт зон, привязка шаблона
|
2026-07-03 17:43:49 +07:00 |
|
vasyansk
|
1412da9a31
|
feat(web): DiffView + DomainDiffPage с prune-guard по умолчанию выключенным
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BwxdSt4reTm7Dj1oxRvpP3
|
2026-07-03 17:32:20 +07:00 |
|
vasyansk
|
267ffc4ed9
|
fix(web): Domain.templateId опционален (Go omitempty), String() на error
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-03 17:19:51 +07:00 |
|
vasyansk
|
6f82036e38
|
feat(web): типизированный API-клиент, типы DTO, TanStack Query хуки
|
2026-07-03 17:14:11 +07:00 |
|
vasyansk
|
41242973e1
|
feat(web): scaffold Vite+React+TS, Tailwind v4, shadcn, router, тёмная console-тема
|
2026-07-03 17:06:23 +07:00 |
|