2026-10-12 02:33:15 +03:00
2026-10-12 00:05:53 +03:00
2026-10-01 04:38:11 +03:00
2026-10-11 23:49:55 +03:00
2026-10-12 02:06:41 +03:00
2026-10-01 01:46:18 +03:00
2026-10-01 04:38:11 +03:00
2026-10-01 01:46:18 +03:00
2026-10-01 01:46:18 +03:00
2026-10-01 01:46:18 +03:00
2026-10-01 01:46:18 +03:00
2026-10-11 23:56:50 +03:00
2026-10-12 00:05:53 +03:00
2026-10-12 02:33:15 +03:00
2026-10-01 04:38:11 +03:00

FoxBrowser

FoxBrowser_biC8dmC1Y2

FoxBrowser — Windows-first браузерний shell на C# / .NET 8 WPF / WebView2, оптимізований під фонову роботу з мінімальною кількістю живих renderer-ів.

Правила прихованих елементів зберігаються у blocked-elements.json поруч із FoxBrowser.exe, щоб portable-версія не створювала для них окремі файли в профілі користувача.

Поточна архітектура пам'яті

FoxBrowser використовує один WebView2 на весь застосунок. Логічні вкладки є лише metadata-об'єктами: URL, назва, scroll position, позиція медіа і прапор Audio Mode.

20 логічних вкладок = 1 живий WebView2 + 19 записів стану

При перемиканні вкладки поточний документ зберігає базовий стан, а єдиний WebView2 переходить на URL нової вкладки. Це свідомий компроміс: вкладка відновлюється через навігацію, зате не тримає окремий renderer у пам'яті.

Реалізовані оптимізації

  • один спільний WebView2 замість WebView2 на кожну вкладку;
  • ресурсний firewall через WebResourceRequested;
  • блокування відомих рекламних і аналітичних доменів;
  • Audio/Minimized режим блокує images і fonts;
  • у Audio/Minimized режимі блокуються сторонні iframe;
  • прибираються preload, prefetch і next посилання;
  • невидимі зображення, canvas та відеовізуалізація прибираються CSS-ін'єкцією;
  • при згортанні у трей нові навігації блокуються, а візуальний шар стискається;
  • watchdog кожні 30 секунд перевіряє Working Set процесу;
  • якщо процес перевищує 850 МБ, виконується soft-reload активної сторінки зі збереженням URL, scroll position і позиції медіа;
  • стан активного відео/аудіо відновлюється після reload настільки, наскільки це дозволяє сам сайт.

YouTube Minimal Mode

Кнопка ♫ Audio вмикає режим, який додатково ховає непотрібний YouTube UI: рекомендації, коментарі, chat, Shorts, зайві полиці та engagement-панелі. Video element залишається для відтворення аудіо, але його візуальний шар стискається до невидимого розміру.

Це зменшує трафік, GPU і кількість зайвих DOM-вузлів, але не може видалити базовий JavaScript runtime YouTube або audio/video decoder. Для цього потрібен окремий аудіоплеєр.

Native audio backend

Винесення YouTube у native player залишено окремим наступним модулем. WPF/Windows Media Foundation може відтворювати прямий URL аудіопотоку, але FoxBrowser не вбудовує нестабільний універсальний YouTube extractor у core браузера: YouTube змінює внутрішні протоколи, частина потоків має DRM, а авторизовані потоки потребують обережної роботи з cookies.

Реалістичний порядок для цього модуля:

  1. додати INativeAudioSession для прямого audio URL;
  2. підключити обраний користувачем extractor як окремий optional-компонент;
  3. після отримання audio URL закривати YouTube WebView2;
  4. відтворювати звук через Windows Media Foundation, залишаючи вкладку лише як metadata.

Запуск у Windows

Потрібні Windows 10 версії 1809 або новіше, .NET 8 SDK та Microsoft Edge WebView2 Runtime Evergreen. У Visual Studio відкрийте FoxBrowser.sln і виконайте:

dotnet restore
dotnet build -c Debug
dotnet run --project .\\FoxBrowser.csproj

Поточне Linux-середовище агента не має Windows/.NET SDK, тому фінальну компіляцію і вимірювання RAM потрібно виконати на Windows-машині.

Як вимірювати результат

Порівнювати потрібно однаковий сценарій: однакові URL, однакова тривалість роботи, однаковий WebView2 Runtime. Зафіксуйте Working Set процесу FoxBrowser через 1, 5 і 20 хвилин у трьох режимах: звичайний, Audio Mode, Audio Mode зі згорнутим вікном. Окремо перевірте, чи не переривається звук після soft-reload.

S
Description
No description provided
Readme
259 KiB
0 Stars 1 Watchers 0 Forks
2026-10-12 02:39:22 +03:00
Languages
C# 100%