Compare commits

..
12 Commits
Author SHA1 Message Date
AlastorFox 07d771220a Clean 2026-10-12 02:06:41 +03:00
AlastorFox e3445ab15d BASE 1.2.2.1 Fix 2026-10-12 00:05:53 +03:00
AlastorFox 4b80e75a0e BASE 1.2.2 2026-10-11 23:56:50 +03:00
AlastorFox d1337b4d8f BASE Temp 1.2.2 2026-10-11 23:49:55 +03:00
AlastorFox fc96f5a927 BASE 1.2.1 2026-10-02 00:44:14 +03:00
AlastorFox 4d916207a4 Changed how the built-in extensions work and fixed tab loading 2026-10-01 22:36:17 +03:00
AlastorFox 79c1d88b58 Change icon and name 2026-10-01 22:18:11 +03:00
AlastorFox 81d1ed8379 Fix BASE 1.1 2026-10-01 18:31:02 +03:00
AlastorFox 9e684ec067 BASE 1.1 2026-10-01 04:38:11 +03:00
AlastorFox c3e1117b97 Finally install extension on local folder 2026-10-01 02:53:02 +03:00
AlastorFox a602512ca3 Temp install extension 2026-10-01 02:41:50 +03:00
AlastorFox fd6bc3459f BASE changed interface 2026-10-01 01:46:18 +03:00
-77
View File
@@ -1,77 +0,0 @@
# FoxBrowser
<img width="1174" height="757" alt="FoxBrowser_biC8dmC1Y2" src="https://github.com/user-attachments/assets/dca5f580-bd7e-4a8b-aa2f-864eaa017bfe" />
FoxBrowser — Windows-first браузерний shell на **C# / .NET 8 WPF / WebView2**, оптимізований під фонову роботу з мінімальною кількістю живих renderer-ів.
Правила прихованих елементів зберігаються у `blocked-elements.json` поруч із `FoxBrowser.exe`, щоб portable-версія не створювала для них окремі файли в профілі користувача.
## Завантаження
Готовий portable-білд лежить у **[Releases](https://github.com/FoxAlastor/FoxBrowser/releases/latest)**:
1. Завантажте `.zip` з останнього релізу.
2. Розпакуйте в будь-яку теку.
3. Запустіть `FoxBrowser.exe`.
Інсталятор не потрібен. Налаштування (наприклад, `blocked-elements.json`) зберігаються поруч з `.exe`, тож теку можна переносити разом із ними.
**Вимоги:** Windows 10 версії 1809 або новіше та Microsoft Edge WebView2 Runtime (Evergreen). У Windows 11 він уже встановлений, у Windows 10 зазвичай теж.
## Поточна архітектура пам'яті
FoxBrowser використовує **один WebView2 на весь застосунок**. Логічні вкладки є лише metadata-об'єктами: URL, назва, scroll position, позиція медіа і прапор Audio Mode.
```text
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 10 версії 1809 або новіше, .NET 8 SDK та Microsoft Edge WebView2 Runtime Evergreen.
```powershell
git clone https://github.com/FoxAlastor/FoxBrowser.git
cd FoxBrowser
dotnet restore
dotnet build -c Debug
dotnet run --project .\FoxBrowser.csproj
```
Або відкрийте `FoxBrowser.sln` у Visual Studio.
## Як вимірювати результат
Порівнювати потрібно однаковий сценарій: однакові URL, однакова тривалість роботи, однаковий WebView2 Runtime. Зафіксуйте Working Set процесу FoxBrowser через 1, 5 і 20 хвилин у трьох режимах: звичайний, Audio Mode, Audio Mode зі згорнутим вікном. Окремо перевірте, чи не переривається звук після soft-reload.