vasyansk
58a57ff4d0
docs: custom records and import-as-sync invariants
...
Document the two Task 1-9 features in CLAUDE.md invariants and README
features. Also closes two review gaps: a Go test proving importResponse
marshals created/removed as [] (never null) on a no-op import, and a
frontend test-race fix in DomainsPage.test.tsx where the import button
was clicked before its disabled state cleared.
2026-08-19 18:45:52 +07:00
vasyansk
d6d91f8826
feat(web): show created and removed counts after zone import
2026-08-19 18:37:56 +07:00
vasyansk and Claude Opus 4.8
c2832348f8
feat(web): view zone without template, snapshot button, no-template status, drop delete
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01BwxdSt4reTm7Dj1oxRvpP3
2026-07-05 12:19:50 +07:00
vasyansk
34422420ca
feat(web): расписание, каналы уведомлений, история проверок, drift-badge
2026-07-04 14:40:29 +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
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