diff --git a/dist/navis-release/update.json b/dist/navis-release/update.json index 1128258..c4d65ce 100644 --- a/dist/navis-release/update.json +++ b/dist/navis-release/update.json @@ -1,16 +1,16 @@ { - "version": "4.0.1", - "notes": "4.0.1: убрана привязка аккаунта, конфиги — через вашу подписку; добавлен блок рекомендуемых сервисов", + "version": "4.1.0", + "notes": "4.1.0: новый интерфейс для Microsoft Store — вкладки Защита / Мои серверы / Статистика / Помощь, экран выбора провайдера, активация ключа, человекочитаемые имена серверов", "platform": "windows-amd64", "os": "windows", "arch": "amd64", "url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe", - "sha256": "c9551072d2b6206cd9323ae4eaf2d4dd20377237e837becc785b69539ec79939", + "sha256": "6a6a0e80327e6aa87dd4c75b3fdb0795f0b7faf4d54481a73a99c31358cf492f", "mandatory": false, "platforms": { "windows-amd64": { "url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe", - "sha256": "c9551072d2b6206cd9323ae4eaf2d4dd20377237e837becc785b69539ec79939", + "sha256": "6a6a0e80327e6aa87dd4c75b3fdb0795f0b7faf4d54481a73a99c31358cf492f", "os": "windows", "arch": "amd64" }, diff --git a/dist/navis-release/windows/EvilFox.exe b/dist/navis-release/windows/EvilFox.exe index 8025bcb..fae48ab 100644 Binary files a/dist/navis-release/windows/EvilFox.exe and b/dist/navis-release/windows/EvilFox.exe differ diff --git a/dist/navis-release/windows/Navis.exe b/dist/navis-release/windows/Navis.exe index 8025bcb..fae48ab 100644 Binary files a/dist/navis-release/windows/Navis.exe and b/dist/navis-release/windows/Navis.exe differ diff --git a/dist/navis-release/windows/evilfox-cli.exe b/dist/navis-release/windows/evilfox-cli.exe index 383f669..3f575d9 100644 Binary files a/dist/navis-release/windows/evilfox-cli.exe and b/dist/navis-release/windows/evilfox-cli.exe differ diff --git a/dist/navis-release/windows/vpnclient.exe b/dist/navis-release/windows/vpnclient.exe index 383f669..3f575d9 100644 Binary files a/dist/navis-release/windows/vpnclient.exe and b/dist/navis-release/windows/vpnclient.exe differ diff --git a/dist/update.json b/dist/update.json index 1128258..c4d65ce 100644 --- a/dist/update.json +++ b/dist/update.json @@ -1,16 +1,16 @@ { - "version": "4.0.1", - "notes": "4.0.1: убрана привязка аккаунта, конфиги — через вашу подписку; добавлен блок рекомендуемых сервисов", + "version": "4.1.0", + "notes": "4.1.0: новый интерфейс для Microsoft Store — вкладки Защита / Мои серверы / Статистика / Помощь, экран выбора провайдера, активация ключа, человекочитаемые имена серверов", "platform": "windows-amd64", "os": "windows", "arch": "amd64", "url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe", - "sha256": "c9551072d2b6206cd9323ae4eaf2d4dd20377237e837becc785b69539ec79939", + "sha256": "6a6a0e80327e6aa87dd4c75b3fdb0795f0b7faf4d54481a73a99c31358cf492f", "mandatory": false, "platforms": { "windows-amd64": { "url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe", - "sha256": "c9551072d2b6206cd9323ae4eaf2d4dd20377237e837becc785b69539ec79939", + "sha256": "6a6a0e80327e6aa87dd4c75b3fdb0795f0b7faf4d54481a73a99c31358cf492f", "os": "windows", "arch": "amd64" }, diff --git a/internal/apphost/app.go b/internal/apphost/app.go index 7d183ce..14fa87d 100644 --- a/internal/apphost/app.go +++ b/internal/apphost/app.go @@ -419,12 +419,16 @@ func (a *App) AutoCheckUpdate() { } // allowedLinkHosts are the only hosts the UI may open in the default browser -// (shop button + «Рекомендуемые сервисы» block in index.html). +// (shop button, «Рекомендуемые сервисы» and provider cards in index.html). +// Competitor links are plain URLs without referral codes (Store policy). var allowedLinkHosts = map[string]bool{ - "evilfox.win": true, - "t.me": true, - "de4ima.uk": true, - "git.de4ima.uk": true, + "evilfox.win": true, + "t.me": true, + "de4ima.uk": true, + "git.de4ima.uk": true, + "nordvpn.com": true, + "expressvpn.com": true, + "surfshark.com": true, } // LinkAllowed validates that raw is an http(s) URL pointing at one of the diff --git a/internal/appui/index.html b/internal/appui/index.html index c06abae..07daa5b 100644 --- a/internal/appui/index.html +++ b/internal/appui/index.html @@ -355,6 +355,17 @@ 0% { transform: scale(.96); opacity: .9; } 100% { transform: scale(1.12); opacity: 0; } } + /* Состояние «подключение…» — вращающаяся дуга вокруг кнопки */ + .power-btn.busy::after { + content: ""; + position: absolute; + inset: -9px; + border-radius: 50%; + border: 3px solid transparent; + border-top-color: var(--accent); + animation: spin 0.9s linear infinite; + } + @keyframes spin { to { transform: rotate(360deg); } } .status-line { display: flex; align-items: center; @@ -973,6 +984,162 @@ .svc-link:hover { color: var(--accent-deep); border-color: rgba(13,138,102,.45); } .svc-link .ic { font-size: .85rem; line-height: 1; } + /* ==== Traffic progress (главный экран + Статистика) ==== */ + .traffic { + border: 1px solid var(--line); + border-radius: var(--radius); + background: var(--row-bg); + padding: 12px 14px; + margin-bottom: 12px; + display: grid; + gap: 8px; + } + .traffic-row { + display: flex; + align-items: baseline; + justify-content: space-between; + gap: 10px; + font-size: .84rem; + font-weight: 700; + } + .traffic-row .pct { color: var(--muted); font-weight: 600; font-size: .78rem; } + .traffic-bar { + height: 9px; + border-radius: 999px; + background: var(--meta-bg); + overflow: hidden; + } + .traffic-fill { + height: 100%; + width: 0%; + border-radius: 999px; + background: linear-gradient(90deg, var(--accent-deep), var(--accent)); + transition: width .4s var(--ease); + } + .traffic-fill.warn { background: linear-gradient(90deg, #d97706, #f59e0b); } + + /* ==== Провайдеры (вкладка «Защита») ==== */ + .prov-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 10px; + margin-bottom: 12px; + } + .prov-card { + position: relative; + border: 1px solid var(--line); + border-radius: var(--radius); + background: var(--surface-2); + padding: 14px; + display: flex; + flex-direction: column; + gap: 8px; + } + .prov-card .prov-name { + font-family: Outfit, sans-serif; + font-weight: 800; + font-size: 1rem; + letter-spacing: -.02em; + } + .prov-card .prov-sub { font-size: .76rem; color: var(--muted); line-height: 1.35; flex: 1; } + .prov-card.ours { + border-color: rgba(8,145,178,.5); + background: linear-gradient(150deg, rgba(8,145,178,.16), var(--surface-2) 70%); + box-shadow: 0 12px 30px rgba(8,145,178,.16); + } + html[data-theme="dark"] .prov-card.ours { + background: linear-gradient(150deg, rgba(34,211,238,.16), var(--surface-2) 70%); + } + .prov-badge { + position: absolute; + top: -9px; + right: 10px; + font-size: .64rem; + font-weight: 800; + letter-spacing: .03em; + color: #7c5b00; + background: linear-gradient(180deg, #fde68a, #fbbf24); + border: 1px solid rgba(124, 91, 0, .25); + border-radius: 999px; + padding: 3px 9px; + box-shadow: 0 4px 10px rgba(251, 191, 36, .35); + } + .prov-gift { font-size: .72rem; font-weight: 700; color: var(--accent-deep); } + html[data-theme="dark"] .prov-gift { color: var(--accent); } + .prov-card .action { padding: 10px 12px; font-size: .84rem; } + .prov-go { + appearance: none; + border: 1px solid var(--line); + background: transparent; + color: var(--muted); + font: inherit; + font-size: .8rem; + font-weight: 700; + border-radius: 12px; + padding: 9px 12px; + cursor: pointer; + transition: color .15s, border-color .15s; + } + .prov-go:hover { color: var(--ink); border-color: var(--muted); } + .prov-ping { + appearance: none; + border: 0; + background: transparent; + color: var(--muted); + font: inherit; + font-size: .74rem; + font-weight: 700; + padding: 2px 0; + cursor: pointer; + text-align: center; + } + .prov-ping:hover { color: var(--accent-deep); } + .prov-ping:disabled { cursor: default; color: var(--muted); } + .prov-ping .val { font-variant-numeric: tabular-nums; } + .prov-ping.good .val { color: var(--ms-good); } + .prov-ping.mid .val { color: var(--ms-mid); } + @media (max-width: 560px) { .prov-grid { grid-template-columns: 1fr; } } + + /* ==== Активация ключа ==== */ + .key-box { + border: 1px solid var(--shop-border); + border-radius: var(--radius); + background: var(--shop-bg); + padding: 13px 14px; + margin-bottom: 12px; + display: grid; + gap: 8px; + } + .key-box h3 { font-family: Outfit, sans-serif; font-size: .95rem; letter-spacing: -.02em; margin: 0; } + .key-hint { margin: 0; font-size: .76rem; color: var(--muted); line-height: 1.4; } + .key-link { + border: 0; + background: transparent; + padding: 0; + font: inherit; + font-size: .76rem; + font-weight: 600; + color: var(--accent); + cursor: pointer; + text-align: center; + } + .key-link:hover { text-decoration: underline; } + + /* Технические строки (параметры прокси, адрес сервера) */ + .adv-line { + margin: 4px 0 0; + font-size: .74rem; + color: var(--muted); + font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; + } + .host-line { + margin: 6px 0 2px; + font-size: .72rem; + color: var(--muted); + font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; + word-break: break-all; + } + .about-card { border: 1px solid var(--line); border-radius: var(--radius); @@ -1031,28 +1198,28 @@

EvilFox

- 4.0.0 + 4.1.0 -
@@ -1082,8 +1249,8 @@
- -
+ +
-

Выберите профиль и нажмите на кнопку

+

Нажмите на кнопку, чтобы включить защиту

- - +
-

Профили

+

Мои серверы

+ +
+

Ключ доступа

+ + +

Введите ваучер для получения доступа

+ +
+
Серверы
@@ -1146,9 +1346,26 @@
+ +
- Редактировать / подписка + Свойства сервера
+

Адрес сервера:

@@ -1157,13 +1374,6 @@
-
- -
- - -
-
@@ -1275,21 +1485,56 @@
+ +
+ Расширенные настройки +
+
Параметры прокси
+

HTTP:

+

SOCKS:

+

Локальные адреса прокси на этом компьютере — нужны только для ручной настройки отдельных программ. Обычным пользователям менять ничего не требуется.

+
+
- +
-

Логи

-
Пусто — подключитесь, чтобы увидеть логи ядра.
+

Статистика

+ + + +
Журнал подключения
+ +
Пусто — подключитесь, чтобы увидеть журнал.
- +
-

О программе

+

Помощь

+ +
+ Как подключиться? +

Активируйте ключ на вкладке «Мои серверы», затем на вкладке «Защита» нажмите большую круглую кнопку. Приложение само выберет оптимальный сервер.

+
+
+ Где купить ключ? +

Ключи и тарифы — на сайте evilfox.win (кнопка ниже). После оплаты вставьте полученный ключ на вкладке «Мои серверы».

+
+
+ Не подключается — что делать? +

Проверьте, что ключ активирован и не истёк («Мои серверы» → «Информация об аккаунте»). Попробуйте другой сервер (кнопка «Лучший»). Подробности — в журнале на вкладке «Статистика».

+
+