From c78b69fcaff3fd680acfd3eb447b9be0bc49386a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Sat, 27 Jun 2026 10:23:55 +0300 Subject: [PATCH] =?UTF-8?q?feat(fe):=20=D0=BF=D0=BE=D0=B4=D0=BA=D0=BB?= =?UTF-8?q?=D1=8E=D1=87=D0=B8=D1=82=D1=8C=20installMenuRepositionFix=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B5?= =?UTF-8?q?=20SPA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Также: привести resizeSpy в тесте к EventListener (тип-чистота vue-tsc). Co-Authored-By: Claude Opus 4.8 (1M context) --- app/resources/js/app.ts | 5 +++++ app/tests/Frontend/installMenuRepositionFix.spec.ts | 4 ++-- docs/observer/STATUS.md | 8 ++++---- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/resources/js/app.ts b/app/resources/js/app.ts index 6ff07f6b..85e8d71b 100644 --- a/app/resources/js/app.ts +++ b/app/resources/js/app.ts @@ -6,6 +6,7 @@ import '../css/tokens.css'; import '../css/typography.css'; import '../css/motion.css'; import { router } from './router'; +import { installMenuRepositionFix } from './utils/menuRepositionFix'; // Точка входа Vue 3 + Vuetify 3 + Vue Router 4 + Pinia (фаза 2, CLAUDE.md §3.3). // Mount в
внутри Blade-шаблона `welcome.blade.php`. @@ -14,3 +15,7 @@ app.use(createPinia()); app.use(vuetify); app.use(router); app.mount('#app'); + +// Глобальный обход бага позиционирования меню Vuetify (один наблюдатель на всё +// приложение) — подробности в utils/menuRepositionFix.ts. +installMenuRepositionFix(); diff --git a/app/tests/Frontend/installMenuRepositionFix.spec.ts b/app/tests/Frontend/installMenuRepositionFix.spec.ts index 8ef4b618..5c4ccd51 100644 --- a/app/tests/Frontend/installMenuRepositionFix.spec.ts +++ b/app/tests/Frontend/installMenuRepositionFix.spec.ts @@ -52,14 +52,14 @@ beforeEach(() => { } as DOMRect; }; resizeSpy = vi.fn(); - window.addEventListener('resize', resizeSpy); + window.addEventListener('resize', resizeSpy as unknown as EventListener); }); afterEach(() => { teardown?.(); teardown = undefined; HTMLElement.prototype.getBoundingClientRect = origRect; - window.removeEventListener('resize', resizeSpy); + window.removeEventListener('resize', resizeSpy as unknown as EventListener); vi.unstubAllGlobals(); document.body.innerHTML = ''; }); diff --git a/docs/observer/STATUS.md b/docs/observer/STATUS.md index f0f6dc1e..298b6ac5 100644 --- a/docs/observer/STATUS.md +++ b/docs/observer/STATUS.md @@ -1,6 +1,6 @@ # Brain Status (auto-generated) -Last updated: 2026-06-27T07:15:13.998Z +Last updated: 2026-06-27T07:20:21.970Z | Контролёр | Состояние | Детали | |---|---|---| @@ -132,9 +132,9 @@ Episodes since last run: 542 / threshold: 10 | PID | Имя | CPU-время | Возраст | |---|---|---|---| -| 3440 | MsMpEng | 15.64ч | 0.0ч | -| 21928 | Code | 5.81ч | 0.0ч | -| 1212 | svchost | 3.95ч | 0.0ч | +| 3440 | MsMpEng | 15.66ч | 0.0ч | +| 21928 | Code | 5.82ч | 0.0ч | +| 1212 | svchost | 3.96ч | NaNч | ⚠️ Проверь, не «осиротевшие» ли это процессы от завершённых Claude-сессий.