diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 9528c23..f70fa39 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -13,8 +13,8 @@ android { minSdk = 26 targetSdk = 35 // versionCode = major*1_000_000 + minor*10_000 + patch*100 + build - versionCode = 4_000_101 - versionName = "4.0.1+1" + versionCode = 4_010_101 + versionName = "4.1.1+1" vectorDrawables.useSupportLibrary = true ndk { abiFilters += listOf("arm64-v8a", "armeabi-v7a", "x86_64") diff --git a/dist/navis-release/update.json b/dist/navis-release/update.json index c4d65ce..2aa0cf5 100644 --- a/dist/navis-release/update.json +++ b/dist/navis-release/update.json @@ -1,16 +1,16 @@ { - "version": "4.1.0", - "notes": "4.1.0: новый интерфейс для Microsoft Store — вкладки Защита / Мои серверы / Статистика / Помощь, экран выбора провайдера, активация ключа, человекочитаемые имена серверов", + "version": "4.1.1", + "notes": "4.1.1: исправлено отображение трафика, улучшены карточки провайдеров и список серверов", "platform": "windows-amd64", "os": "windows", "arch": "amd64", "url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe", - "sha256": "6a6a0e80327e6aa87dd4c75b3fdb0795f0b7faf4d54481a73a99c31358cf492f", + "sha256": "362be966c08b95991deb3d7f47c839493fa1ef4cbc0f0325fb50f3d40b1f6225", "mandatory": false, "platforms": { "windows-amd64": { "url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe", - "sha256": "6a6a0e80327e6aa87dd4c75b3fdb0795f0b7faf4d54481a73a99c31358cf492f", + "sha256": "362be966c08b95991deb3d7f47c839493fa1ef4cbc0f0325fb50f3d40b1f6225", "os": "windows", "arch": "amd64" }, diff --git a/dist/navis-release/windows/EvilFox.exe b/dist/navis-release/windows/EvilFox.exe index fae48ab..c4e0425 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 fae48ab..c4e0425 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 3f575d9..0b94c52 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 3f575d9..0b94c52 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 c4d65ce..2aa0cf5 100644 --- a/dist/update.json +++ b/dist/update.json @@ -1,16 +1,16 @@ { - "version": "4.1.0", - "notes": "4.1.0: новый интерфейс для Microsoft Store — вкладки Защита / Мои серверы / Статистика / Помощь, экран выбора провайдера, активация ключа, человекочитаемые имена серверов", + "version": "4.1.1", + "notes": "4.1.1: исправлено отображение трафика, улучшены карточки провайдеров и список серверов", "platform": "windows-amd64", "os": "windows", "arch": "amd64", "url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe", - "sha256": "6a6a0e80327e6aa87dd4c75b3fdb0795f0b7faf4d54481a73a99c31358cf492f", + "sha256": "362be966c08b95991deb3d7f47c839493fa1ef4cbc0f0325fb50f3d40b1f6225", "mandatory": false, "platforms": { "windows-amd64": { "url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe", - "sha256": "6a6a0e80327e6aa87dd4c75b3fdb0795f0b7faf4d54481a73a99c31358cf492f", + "sha256": "362be966c08b95991deb3d7f47c839493fa1ef4cbc0f0325fb50f3d40b1f6225", "os": "windows", "arch": "amd64" }, diff --git a/internal/appui/index.html b/internal/appui/index.html index 07daa5b..7625625 100644 --- a/internal/appui/index.html +++ b/internal/appui/index.html @@ -136,6 +136,8 @@ --log-bg: rgba(2, 6, 14, 0.6); } * { box-sizing: border-box; } + /* Атрибут hidden должен побеждать классовые display:grid/flex (иначе пустые карточки видны). */ + [hidden] { display: none !important; } html, body { margin: 0; height: 100%; @@ -180,6 +182,7 @@ place-items: center; } .logo svg { width: 26px; height: 26px; } + .logo .fox { font-size: 1.35rem; line-height: 1; } .brand { font-family: Outfit, sans-serif; font-size: 1.35rem; @@ -529,6 +532,13 @@ text-transform: uppercase; color: var(--muted); } + .section-title .count-note { + font-size: .68rem; + font-weight: 600; + text-transform: none; + letter-spacing: 0; + opacity: .75; + } label.field { display: block; @@ -839,22 +849,39 @@ text-overflow: ellipsis; } .server-row .right { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; flex: 0 0 auto; } - .server-row .proto { - font-size: .62rem; + .server-row .name-row { display: flex; align-items: center; gap: 6px; min-width: 0; } + /* Пилюля «АКТИВЕН» вместо строчного текста «активный сервер» */ + .badge-active { + flex: 0 0 auto; + font-size: .58rem; font-weight: 800; - letter-spacing: .04em; - text-transform: uppercase; + letter-spacing: .06em; color: var(--accent-deep); background: var(--accent-soft); + border: 1px solid rgba(8,145,178,.35); border-radius: 999px; - padding: 2px 6px; + padding: 2px 7px; + line-height: 1.2; } + html[data-theme="dark"] .badge-active { color: var(--accent); } .server-row .ms { font-size: .78rem; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--muted); } + .server-row .ms::before { + content: ""; + display: inline-block; + width: 7px; height: 7px; + border-radius: 50%; + margin-right: 5px; + vertical-align: 1px; + background: var(--dot-off); + } + .server-row .ms.good::before, .server-row .ms.ok::before { background: var(--ms-good); } + .server-row .ms.mid::before { background: var(--ms-mid); } + .server-row .ms.bad::before { background: var(--danger); } .server-row .ms.ok { color: var(--ok); } .server-row .ms.good { color: var(--ms-good); } .server-row .ms.mid { color: var(--ms-mid); } @@ -1017,6 +1044,7 @@ transition: width .4s var(--ease); } .traffic-fill.warn { background: linear-gradient(90deg, #d97706, #f59e0b); } + .traffic-sub { font-size: .74rem; color: var(--muted); } /* ==== Провайдеры (вкладка «Защита») ==== */ .prov-grid { @@ -1050,9 +1078,10 @@ html[data-theme="dark"] .prov-card.ours { background: linear-gradient(150deg, rgba(34,211,238,.16), var(--surface-2) 70%); } + /* Бейдж «Рекомендуем» лежит НА карточке EvilFox (верхний угол), а не между карточками. */ .prov-badge { position: absolute; - top: -9px; + top: 10px; right: 10px; font-size: .64rem; font-weight: 800; @@ -1064,6 +1093,16 @@ padding: 3px 9px; box-shadow: 0 4px 10px rgba(251, 191, 36, .35); } + .prov-card.ours .prov-name { padding-right: 96px; } + /* Приглушённая подпись «Сторонний сервис» на карточках конкурентов */ + .prov-tag { + font-size: .62rem; + font-weight: 700; + letter-spacing: .05em; + text-transform: uppercase; + color: var(--muted); + opacity: .8; + } .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; } @@ -1150,6 +1189,7 @@ } .about-card .logo { margin: 0 auto 10px; width: 56px; height: 56px; border-radius: 16px; } .about-card .logo svg { width: 34px; height: 34px; } + .about-card .logo .fox { font-size: 1.9rem; } .about-card h2 { font-family: Outfit, sans-serif; margin: 0 0 4px; letter-spacing: -.03em; } .about-card p { margin: 0; color: var(--muted); font-size: .84rem; line-height: 1.45; } @@ -1191,14 +1231,9 @@