diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 271d7a5..9c4aaa2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,7 +24,7 @@ npm run check python tools/build.py ``` -`tools/build.py` собирает небольшой `dist/YouTubeDL-1.4.5.zip` без EXE. +`tools/build.py` собирает небольшой `dist/YouTubeDL-1.4.6.zip` без EXE. Для сборки расширения не требуется предварительно собирать помощник. ## Браузерные проверки diff --git a/INSTALL.md b/INSTALL.md index 8ade056..7b6d6d6 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -6,7 +6,7 @@ Firefox, macOS, Linux и Windows ARM не входят в эту сборку. Скачивания доступны в [релизах проекта](https://git.lonarpgproxy.space/OwnerLink/YouTubeDL/releases/latest). Помощник распространяется **отдельно**: внутри архива расширения EXE нет. -1. Скачайте **YouTubeDL-1.4.5.zip** и распакуйте его в постоянную папку. Не удаляйте и не перемещайте её после установки. +1. Скачайте **YouTubeDL-1.4.6.zip** и распакуйте его в постоянную папку. Не удаляйте и не перемещайте её после установки. 2. Откройте `edge://extensions` или `chrome://extensions`. Включите **Режим разработчика**, нажмите **Загрузить распакованное расширение** и выберите папку **extension** внутри распакованного архива. 3. На странице релиза отдельно скачайте **YouTubeDL-Helper-Setup.exe**. Это автономный комплект: Python, yt-dlp, EJS, Node.js, FFmpeg и FFprobe уже внутри. 4. Запустите EXE вручную и дождитесь окончания установки. Администратор и интернет для установки комплекта не требуются. Программы устанавливаются для текущего пользователя в `%LOCALAPPDATA%\YouTubeDL\Helper`. @@ -59,7 +59,7 @@ Get-FileHash -Algorithm SHA256 -LiteralPath '.\YouTubeDL-Helper-Setup.exe' При разных дисках результат сначала копируется во временную папку на диске сохранения, затем публикуется под итоговым именем. Прогресс копирования виден в уведомлении; частичный файл не появляется под готовым именем. При отмене помощник завершает группу процессов данной задачи и удаляет её временные папки. -Для отдельной рабочей папки, подробного прогресса слияния и исправленной отмены установите помощник 1.3.2 и расширение 1.4.5. Обновление компонентов не заменяет программный код помощника; для этой версии запустите новый установщик помощника. +Для отдельной рабочей папки, подробного прогресса слияния и исправленной отмены установите помощник 1.3.2 и расширение 1.4.6. Обновление компонентов не заменяет программный код помощника; для этой версии запустите новый установщик помощника. ## История и ошибки @@ -69,7 +69,7 @@ Get-FileHash -Algorithm SHA256 -LiteralPath '.\YouTubeDL-Helper-Setup.exe' ## Совместимость версий -В настройках и мастере первого запуска отображаются версии расширения и помощника. Расширение 1.4.5 поддерживает помощник 1.3.2. При старом помощнике появится кнопка «Обновить помощник», при более новом помощнике или устаревшем расширении — «Обновить расширение». Пока совместимость не подтверждена, новая загрузка не запускается. +В настройках и мастере первого запуска отображаются версии расширения и помощника. Расширение 1.4.6 поддерживает помощник 1.3.2. При старом помощнике появится кнопка «Обновить помощник», при более новом помощнике или устаревшем расширении — «Обновить расширение». Пока совместимость не подтверждена, новая загрузка не запускается. После установки помощника нажмите «Проверить»: статус изменится без перезагрузки страницы. После замены файлов расширения нажмите «Обновить» на странице расширений браузера и перезагрузите вкладку YouTube. Обновление компонентов обновляет инструменты внутри комплекта и не заменяет само расширение или код помощника. diff --git a/README.md b/README.md index e8e5947..2196857 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ **[Инструкция](INSTALL.md)** · **[Обработка данных](PRIVACY.md)** · **[Сообщить об ошибке](https://git.lonarpgproxy.space/OwnerLink/YouTubeDL/issues)** -Windows 10/11 x64 · Microsoft Edge / Google Chrome 120+ · расширение **1.4.5** · помощник **1.3.2**. +Windows 10/11 x64 · Microsoft Edge / Google Chrome 120+ · расширение **1.4.6** · помощник **1.3.2**. Расширение устанавливается распакованным, через режим разработчика. В магазинах браузеров пока не опубликовано. ## Что умеет @@ -38,7 +38,7 @@ DRM-контент и гарантированный обход ограниче ## Установка: два отдельных скачивания -1. Откройте [последний релиз](https://git.lonarpgproxy.space/OwnerLink/YouTubeDL/releases/latest), скачайте **YouTubeDL-1.4.5.zip** и распакуйте в постоянную папку. +1. Откройте [последний релиз](https://git.lonarpgproxy.space/OwnerLink/YouTubeDL/releases/latest), скачайте **YouTubeDL-1.4.6.zip** и распакуйте в постоянную папку. 2. В `edge://extensions` или `chrome://extensions` включите **Режим разработчика**, нажмите **Загрузить распакованное расширение** и выберите папку **extension**. 3. **Отдельно скачайте YouTubeDL-Helper-Setup.exe из того же релиза** и запустите его вручную. EXE не встроен в расширение: кнопка установки открывает страницу релизов. 4. Обновите YouTube, откройте **⚙** и пройдите мастер. Выберите папку и параметры; зелёный статус подтверждает связь с помощником. diff --git a/docs/RELEASE-1.4.6.md b/docs/RELEASE-1.4.6.md new file mode 100644 index 0000000..fc822e3 --- /dev/null +++ b/docs/RELEASE-1.4.6.md @@ -0,0 +1,19 @@ +# YouTubeDL 1.4.6 + +Расширение **1.4.6** для Edge и Chrome 120+. Совместимый локальный помощник — **1.3.2**. + +- Исправлено перекрытие: кнопки на обычных превью и Shorts больше не появляются поверх уведомлений и меню YouTube. +- Значок настроек заменён симметричной шестерёнкой с окружностью по центру на всех кнопках, включая превью видео и Shorts. +- Кнопки остаются доступны при замене превью Shorts проигрываемым видео. + +## Обновление + +1. Скачайте **YouTubeDL-1.4.6.zip** и распакуйте в постоянную папку, заменив прежнюю папку `extension`. +2. Откройте `chrome://extensions` или `edge://extensions` и перезагрузите YouTubeDL. Если устанавливаете впервые, включите режим разработчика и выберите «Загрузить распакованное расширение» → папку `extension`. +3. Обновите уже открытые страницы YouTube. В настройках расширения должна отображаться версия **1.4.6**. + +Установленный помощник **1.3.2** обновлять не требуется. Для первой установки его EXE доступен отдельно в этом релизе. + +## Проверка + +Проверены слои кнопок, обычные и Shorts-превью, замена превью плеером, центр значка настроек, меню и совместимость помощника в Edge. Документы и служебные файлы находятся в сворачиваемом разделе загрузок. diff --git a/extension/controls.js b/extension/controls.js index 32b0305..fa258ef 100644 --- a/extension/controls.js +++ b/extension/controls.js @@ -6,8 +6,11 @@ const previewResize = new ResizeObserver(schedulePreviewLayout); let watchButton = null, shortsButton = null, shortsRenderer = null; let menu = null, menuAnchor = null, menuSize = { width: 270, height: 142 }; + // Above hover playback, below YouTube's masthead (2020) and popups (2202). + // Shorts controls live at the document root to survive preview replacement. + const pageControlLayer = 2000; const icon = ''; - const gear = ''; + const gear = ""; const themeStyle = ':host{font-family:Roboto,"Segoe UI",sans-serif;--bg:#fff;--fg:#0f0f0f;--muted:#606060;--button:#0000000d;--hover:#0000001a;--pressed:#00000026;--line:#0000001a}:host([dark]){--bg:#212121;--fg:#f1f1f1;--muted:#aaa;--button:#ffffff1a;--hover:#ffffff33;--pressed:#ffffff40;--line:#ffffff1a}*{box-sizing:border-box}button{font:inherit;cursor:pointer}'; const dark = () => document.documentElement.hasAttribute('dark') || document.documentElement.dataset.theme === 'dark'; function canonical(value) { @@ -73,7 +76,7 @@ function makeControl(kind, resolveUrl) { const host = document.createElement('span'); host.dataset.ytdlControl = 'true'; host.dataset.kind = kind; const shadow = host.attachShadow({ mode: 'open' }); - shadow.innerHTML = `
`; + shadow.innerHTML = `
`; for (const button of shadow.querySelectorAll('button')) { button.addEventListener('pointerdown', event => { event.stopPropagation(); }); button.addEventListener('keydown', event => { event.stopPropagation(); }); @@ -206,7 +209,7 @@ }); host.className = 'ytdl-thumbnail-download'; const key = `ytdl-preview-${++previewSequence}`; root.dataset.ytdlPreview = key; host.dataset.ytdlPreviewFor = key; - host.style.cssText = `position:${card ? 'fixed' : 'absolute'};left:0;top:0;width:74px;height:34px;margin:0;padding:0;line-height:1;z-index:2147483644;display:inline-flex`; + host.style.cssText = `position:${card ? 'fixed' : 'absolute'};left:0;top:0;width:74px;height:34px;margin:0;padding:0;line-height:1;z-index:${pageControlLayer};display:inline-flex`; if (card) document.documentElement.append(host); else { if (getComputedStyle(root).position === 'static') root.style.position = 'relative'; @@ -233,7 +236,7 @@ shortsButton.style.cssText = 'display:flex;justify-content:center;margin-top:16px;flex-shrink:0'; rail.append(shortsButton); } else { - shortsButton.style.cssText = 'position:fixed;right:16px;bottom:180px;z-index:2147483645;display:inline-flex'; + shortsButton.style.cssText = `position:fixed;right:16px;bottom:180px;z-index:${pageControlLayer};display:inline-flex`; document.documentElement.append(shortsButton); } } diff --git a/extension/manifest.json b/extension/manifest.json index 64a3ccb..f11733f 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "YouTubeDL", "description": "Скачать видео и аудио с YouTube: качество, формат, папка, NVIDIA NVENC и AMD AMF.", - "version": "1.4.5", + "version": "1.4.6", "minimum_chrome_version": "120", "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6bCUFVUmC9OqpL0+/vrQDKEesuiylybHxRWJXfMV7VfctMbDjAQzActxImzMGIviC8PJrCHT86v/erppUhIgqFrSftHVPPWmYbVJ/g6KBu1bRNIG5J1WDUnMO2E4hGNEJQe+6ezqGuGdk659qQOqP5khGbnog9wUs+1nPpolaXbXsUudn5leaxJ0SrdFT9oWjq59bAc7raEKjR1chU9pB9g9alEA8lqpcKUU8j7f/KJC9YvkOlTNEsLXhuLLzcC7Aw/eI3lgBqBLFWIcrEYrBPVFeIlNaVLdl6b8YqAD+eBaT1xdpT6VbGh/d3lf/Vq/TBzTzCplcMO2vIFGDKTNhQIDAQAB", "permissions": [ diff --git a/package-lock.json b/package-lock.json index fa1c728..895bc4c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "youtubedl", - "version": "1.4.5", + "version": "1.4.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "youtubedl", - "version": "1.4.5", + "version": "1.4.6", "license": "SEE LICENSE IN LICENSE", "devDependencies": { "playwright": "^1.64.0" diff --git a/package.json b/package.json index f156e1b..adcdae0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "youtubedl", - "version": "1.4.5", + "version": "1.4.6", "license": "SEE LICENSE IN LICENSE", "private": true, "type": "module", diff --git a/site/index.html b/site/index.html index 47bd886..44eba9e 100644 --- a/site/index.html +++ b/site/index.html @@ -40,7 +40,7 @@
Установить расширение Посмотреть возможности

Бесплатно · Для Windows · Обработка на вашем компьютере

-
ВИДЕО. ЗВУК. ВАШ ВЫБОР.Выпуск 1.4.5
+
ВИДЕО. ЗВУК. ВАШ ВЫБОР.Выпуск 1.4.6

Один ролик.
Ваш формат.

MP4MKVWebMMP3M4AOpusFLACWAV
@@ -70,8 +70,8 @@

04 / НАЧНЁМ

Два скачивания.
Один комплект.

Windows 10/11 x64
Edge или Chrome 120+
Без прав администратора

-
1БРАУЗЕРv1.4.5

Расширение

Кнопки на YouTube, настройки и уведомления. Устанавливается распакованным.

Скачать расширение ZIP · Небольшой архив
-
2КОМПЬЮТЕРv1.3.2

Локальный помощник

Скачивает, соединяет и конвертирует. Все необходимые компоненты уже внутри.

Скачать помощник EXE · 124,3 МиБ · устанавливается отдельно
+
1БРАУЗЕРv1.4.6

Расширение

Кнопки на YouTube, настройки и уведомления. Устанавливается распакованным.

Скачать расширение ZIP · Небольшой архив
+
2КОМПЬЮТЕРv1.3.2

Локальный помощник

Скачивает, соединяет и конвертирует. Все необходимые компоненты уже внутри.

Скачать помощник EXE · 124,3 МиБ · устанавливается отдельно

Оба файла размещены в релизах Gitea ↗. Помощник не встроен в ZIP. Проверка SHA256 и подробности.

    diff --git a/tests/site.test.mjs b/tests/site.test.mjs index ca8968e..8f01bb5 100644 --- a/tests/site.test.mjs +++ b/tests/site.test.mjs @@ -35,7 +35,7 @@ try { assert.equal(new URL(page.url()).hash,"#install"); assert.ok(await page.locator(".download-grid").isVisible()); assert.equal(await page.locator('[data-download="extension"]').getAttribute("href"),`https://git.lonarpgproxy.space/OwnerLink/YouTubeDL/releases/download/v${version}/YouTubeDL-${version}.zip`); - assert.equal(await page.locator('[data-download="helper"]').getAttribute("href"),"https://git.lonarpgproxy.space/OwnerLink/YouTubeDL/releases/download/v1.4.5/YouTubeDL-Helper-Setup.exe"); + assert.equal(await page.locator('[data-download="helper"]').getAttribute("href"),"https://git.lonarpgproxy.space/OwnerLink/YouTubeDL/releases/download/v1.4.6/YouTubeDL-Helper-Setup.exe"); await page.locator('[data-screenshot="light"]').click(); await page.locator("#menu-screenshot").evaluate(image => image.decode()); assert.match(await page.locator("#menu-screenshot").getAttribute("src"), /menu-light\.png$/); diff --git a/tests/thumbnail-placement.test.mjs b/tests/thumbnail-placement.test.mjs index 714f536..0ea77bb 100644 --- a/tests/thumbnail-placement.test.mjs +++ b/tests/thumbnail-placement.test.mjs @@ -8,7 +8,7 @@ const root = path.dirname(path.dirname(fileURLToPath(import.meta.url))); const artifacts = path.join(root, "test-artifacts"); await fs.mkdir(artifacts, { recursive: true }); const browser = await chromium.launch({ headless: true, executablePath: "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe" }); -const context = await browser.newContext({ viewport: { width: 1200, height: 800 }, reducedMotion: "reduce" }); +const context = await browser.newContext({ viewport: { width: 1200, height: 800 }, reducedMotion: "reduce", deviceScaleFactor: Number(process.env.YTDL_TEST_SCALE || 1) }); await context.addInitScript({ path: path.join(root, "tests/ui-fixture.js") }); const poster = 'data:image/svg+xml,' + encodeURIComponent(''); await context.route("https://www.youtube.com/**", route => route.fulfill({ contentType: "text/html", body: `