From c7e015a9ac21c8ced5b34f5bb231eefc10a2fcfa 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:30:06 +0300 Subject: [PATCH] =?UTF-8?q?refactor(fe):=20=D1=83=D0=B1=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BC=D1=91=D1=80=D1=82=D0=B2=D1=8B=D0=B9=20repositio?= =?UTF-8?q?nMenuAfterOpen=20-=20=D1=8F=D0=B4=D1=80=D0=BE=20=D0=B2=D0=BD?= =?UTF-8?q?=D1=83=D1=82=D1=80=D0=B5=D0=BD=D0=BD=D0=B5=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Старый per-instance экспорт больше не используется (заменён глобальным installMenuRepositionFix). Старый тест-файл удалён - механизм покрыт installMenuRepositionFix.spec.ts. Co-Authored-By: Claude Opus 4.8 (1M context) --- app/resources/js/utils/menuRepositionFix.ts | 10 --- app/tests/Frontend/menuRepositionFix.spec.ts | 66 -------------------- docs/observer/STATUS.md | 6 +- 3 files changed, 3 insertions(+), 79 deletions(-) delete mode 100644 app/tests/Frontend/menuRepositionFix.spec.ts diff --git a/app/resources/js/utils/menuRepositionFix.ts b/app/resources/js/utils/menuRepositionFix.ts index fb3444b4..362b366b 100644 --- a/app/resources/js/utils/menuRepositionFix.ts +++ b/app/resources/js/utils/menuRepositionFix.ts @@ -53,16 +53,6 @@ function scheduleStabilize(): void { requestAnimationFrame(tick); } -/** - * @deprecated Ручной per-instance обход (привязывался к `@update:menu`). - * Заменён глобальным {@link installMenuRepositionFix}. Оставлен временно, - * до снятия ручных пометок в окнах. - */ -export function repositionMenuAfterOpen(open: boolean): void { - if (!open) return; - scheduleStabilize(); -} - let installed = false; /** diff --git a/app/tests/Frontend/menuRepositionFix.spec.ts b/app/tests/Frontend/menuRepositionFix.spec.ts deleted file mode 100644 index b6698b16..00000000 --- a/app/tests/Frontend/menuRepositionFix.spec.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { describe, it, expect, vi, afterEach } from 'vitest'; -import { repositionMenuAfterOpen } from '../../resources/js/utils/menuRepositionFix'; - -/** - * Unit-тесты воркэраунда Vuetify location-strategy (см. menuRepositionFix.ts). - * Реальный баг — гонка позиционирования в браузере под prefers-reduced-motion — - * в jsdom не воспроизводится (нет layout); он покрыт Playwright-пробой. Здесь - * проверяется контракт утилиты: при стабилизации overlay-меню шлётся один resize. - */ -function makeStableMenu(left: number): HTMLElement { - const overlay = document.createElement('div'); - overlay.className = 'v-overlay v-menu'; - const content = document.createElement('div'); - content.className = 'v-overlay__content'; - content.getBoundingClientRect = () => - ({ - width: 400, - height: 300, - left, - top: 50, - right: left + 400, - bottom: 350, - x: left, - y: 50, - toJSON() {}, - }) as DOMRect; - overlay.appendChild(content); - document.body.appendChild(overlay); - return overlay; -} - -const wait = (ms: number): Promise => new Promise((r) => setTimeout(r, ms)); - -describe('repositionMenuAfterOpen', () => { - afterEach(() => { - document.querySelectorAll('.v-overlay').forEach((el) => el.remove()); - }); - - it('does nothing when menu is closing (open=false)', async () => { - const spy = vi.fn(); - window.addEventListener('resize', spy); - repositionMenuAfterOpen(false); - await wait(200); - window.removeEventListener('resize', spy); - expect(spy).not.toHaveBeenCalled(); - }); - - it('dispatches a single resize once the overlay content is geometrically stable', async () => { - makeStableMenu(120); - const spy = vi.fn(); - window.addEventListener('resize', spy); - repositionMenuAfterOpen(true); - await wait(400); - window.removeEventListener('resize', spy); - expect(spy).toHaveBeenCalled(); - }); - - it('does not dispatch resize or throw when no overlay is present', async () => { - const spy = vi.fn(); - window.addEventListener('resize', spy); - expect(() => repositionMenuAfterOpen(true)).not.toThrow(); - await wait(300); - window.removeEventListener('resize', spy); - expect(spy).not.toHaveBeenCalled(); - }); -}); diff --git a/docs/observer/STATUS.md b/docs/observer/STATUS.md index f476c5f8..44c680ab 100644 --- a/docs/observer/STATUS.md +++ b/docs/observer/STATUS.md @@ -1,6 +1,6 @@ # Brain Status (auto-generated) -Last updated: 2026-06-27T07:23:59.570Z +Last updated: 2026-06-27T07:27:57.330Z | Контролёр | Состояние | Детали | |---|---|---| @@ -132,8 +132,8 @@ Episodes since last run: 542 / threshold: 10 | PID | Имя | CPU-время | Возраст | |---|---|---|---| -| 3440 | MsMpEng | 15.67ч | 0.0ч | -| 21928 | Code | 5.83ч | 220523.4ч | +| 3440 | MsMpEng | 15.67ч | NaNч | +| 21928 | Code | 5.85ч | 10093714.0ч | | 1212 | svchost | 3.96ч | NaNч | ⚠️ Проверь, не «осиротевшие» ли это процессы от завершённых Claude-сессий.