Release 4.2.6+1: fix sidebar RU/EN and theme toggles — applyTheme param shadowed i18n t(), so init threw and click listeners never bound. Windows 4.2.6.1.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -13,8 +13,8 @@ android {
|
|||||||
minSdk = 26
|
minSdk = 26
|
||||||
targetSdk = 35
|
targetSdk = 35
|
||||||
// versionCode = major*1_000_000 + minor*10_000 + patch*100 + build
|
// versionCode = major*1_000_000 + minor*10_000 + patch*100 + build
|
||||||
versionCode = 4_025_001
|
versionCode = 4_026_001
|
||||||
versionName = "4.2.5+1"
|
versionName = "4.2.6+1"
|
||||||
vectorDrawables.useSupportLibrary = true
|
vectorDrawables.useSupportLibrary = true
|
||||||
ndk {
|
ndk {
|
||||||
abiFilters += listOf("arm64-v8a", "armeabi-v7a", "x86_64")
|
abiFilters += listOf("arm64-v8a", "armeabi-v7a", "x86_64")
|
||||||
|
|||||||
Vendored
+4
-4
@@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"version": "4.2.5",
|
"version": "4.2.6",
|
||||||
"notes": "4.2.5: переключатель языка Русский / English (localStorage navis.lang, по умолчанию RU); все строки UI и динамические подписи серверов",
|
"notes": "4.2.6: fix sidebar RU/EN and theme toggles — applyTheme param shadowed i18n t(), so init threw and click listeners never bound",
|
||||||
"platform": "windows-amd64",
|
"platform": "windows-amd64",
|
||||||
"os": "windows",
|
"os": "windows",
|
||||||
"arch": "amd64",
|
"arch": "amd64",
|
||||||
"url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe",
|
"url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe",
|
||||||
"sha256": "fb8bf0fb98662601235ca6e33ba51f9aaf2a1602f3177c602adb8023161bcd90",
|
"sha256": "843fd62f7fe0ae09261322fb90d7f281a48472b78e6a9c543b6a9637fe1cc83e",
|
||||||
"mandatory": false,
|
"mandatory": false,
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"android": {
|
"android": {
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
},
|
},
|
||||||
"windows-amd64": {
|
"windows-amd64": {
|
||||||
"url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe",
|
"url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe",
|
||||||
"sha256": "fb8bf0fb98662601235ca6e33ba51f9aaf2a1602f3177c602adb8023161bcd90",
|
"sha256": "843fd62f7fe0ae09261322fb90d7f281a48472b78e6a9c543b6a9637fe1cc83e",
|
||||||
"os": "windows",
|
"os": "windows",
|
||||||
"arch": "amd64"
|
"arch": "amd64"
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Vendored
+4
-4
@@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"version": "4.2.5",
|
"version": "4.2.6",
|
||||||
"notes": "4.2.5: переключатель языка Русский / English (localStorage navis.lang, по умолчанию RU); все строки UI и динамические подписи серверов",
|
"notes": "4.2.6: fix sidebar RU/EN and theme toggles — applyTheme param shadowed i18n t(), so init threw and click listeners never bound",
|
||||||
"platform": "windows-amd64",
|
"platform": "windows-amd64",
|
||||||
"os": "windows",
|
"os": "windows",
|
||||||
"arch": "amd64",
|
"arch": "amd64",
|
||||||
"url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe",
|
"url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe",
|
||||||
"sha256": "fb8bf0fb98662601235ca6e33ba51f9aaf2a1602f3177c602adb8023161bcd90",
|
"sha256": "843fd62f7fe0ae09261322fb90d7f281a48472b78e6a9c543b6a9637fe1cc83e",
|
||||||
"mandatory": false,
|
"mandatory": false,
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"android": {
|
"android": {
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
},
|
},
|
||||||
"windows-amd64": {
|
"windows-amd64": {
|
||||||
"url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe",
|
"url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe",
|
||||||
"sha256": "fb8bf0fb98662601235ca6e33ba51f9aaf2a1602f3177c602adb8023161bcd90",
|
"sha256": "843fd62f7fe0ae09261322fb90d7f281a48472b78e6a9c543b6a9637fe1cc83e",
|
||||||
"os": "windows",
|
"os": "windows",
|
||||||
"arch": "amd64"
|
"arch": "amd64"
|
||||||
}
|
}
|
||||||
|
|||||||
+23
-11
@@ -2440,8 +2440,10 @@
|
|||||||
} catch (_) {}
|
} catch (_) {}
|
||||||
return "light";
|
return "light";
|
||||||
}
|
}
|
||||||
function applyTheme(t) {
|
// Param must not be named `t` — that shadows the i18n helper and throws on title update,
|
||||||
const theme = t === "dark" ? "dark" : "light";
|
// aborting script init so theme/lang click listeners never bind (4.2.5 regression).
|
||||||
|
function applyTheme(next) {
|
||||||
|
const theme = next === "dark" ? "dark" : "light";
|
||||||
document.documentElement.setAttribute("data-theme", theme);
|
document.documentElement.setAttribute("data-theme", theme);
|
||||||
try { localStorage.setItem(THEME_KEY, theme); } catch (_) {}
|
try { localStorage.setItem(THEME_KEY, theme); } catch (_) {}
|
||||||
if (themeToggle) {
|
if (themeToggle) {
|
||||||
@@ -2451,24 +2453,34 @@
|
|||||||
if (themeSwitch) themeSwitch.checked = theme === "dark";
|
if (themeSwitch) themeSwitch.checked = theme === "dark";
|
||||||
}
|
}
|
||||||
applyTheme(document.documentElement.getAttribute("data-theme") || readTheme());
|
applyTheme(document.documentElement.getAttribute("data-theme") || readTheme());
|
||||||
if (themeToggle) {
|
// Event delegation on stable parents (survives future re-renders; not disabled by busy).
|
||||||
themeToggle.addEventListener("click", () => {
|
const sideFoot = document.querySelector(".side-foot");
|
||||||
|
if (sideFoot) {
|
||||||
|
sideFoot.addEventListener("click", (e) => {
|
||||||
|
const langBtn = e.target.closest("button[data-lang]");
|
||||||
|
if (langBtn && sideFoot.contains(langBtn)) {
|
||||||
|
setLang(langBtn.getAttribute("data-lang"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const themeBtn = e.target.closest("#themeToggle, .theme-toggle");
|
||||||
|
if (themeBtn && sideFoot.contains(themeBtn)) {
|
||||||
const cur = document.documentElement.getAttribute("data-theme") === "dark" ? "dark" : "light";
|
const cur = document.documentElement.getAttribute("data-theme") === "dark" ? "dark" : "light";
|
||||||
applyTheme(cur === "dark" ? "light" : "dark");
|
applyTheme(cur === "dark" ? "light" : "dark");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (themeSwitch) {
|
if (themeSwitch) {
|
||||||
themeSwitch.addEventListener("change", () => applyTheme(themeSwitch.checked ? "dark" : "light"));
|
themeSwitch.addEventListener("change", () => applyTheme(themeSwitch.checked ? "dark" : "light"));
|
||||||
}
|
}
|
||||||
|
const langSegSettings = $("langSegSettings");
|
||||||
function wireLangSeg(root) {
|
if (langSegSettings) {
|
||||||
if (!root) return;
|
langSegSettings.addEventListener("click", (e) => {
|
||||||
root.querySelectorAll("button[data-lang]").forEach((b) => {
|
const langBtn = e.target.closest("button[data-lang]");
|
||||||
b.addEventListener("click", () => setLang(b.getAttribute("data-lang")));
|
if (langBtn && langSegSettings.contains(langBtn)) {
|
||||||
|
setLang(langBtn.getAttribute("data-lang"));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
wireLangSeg($("langSeg"));
|
|
||||||
wireLangSeg($("langSegSettings"));
|
|
||||||
applyTranslations();
|
applyTranslations();
|
||||||
|
|
||||||
function skippedVersion() {
|
function skippedVersion() {
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import (
|
|||||||
|
|
||||||
// CurrentVersion is the product/semver used for update eligibility (feed "version").
|
// CurrentVersion is the product/semver used for update eligibility (feed "version").
|
||||||
// Keep major.minor.patch only — no build suffix here.
|
// Keep major.minor.patch only — no build suffix here.
|
||||||
const CurrentVersion = "4.2.5"
|
const CurrentVersion = "4.2.6"
|
||||||
|
|
||||||
// BuildNumber is the monotonic build within CurrentVersion (Windows FileVersion 4th part,
|
// BuildNumber is the monotonic build within CurrentVersion (Windows FileVersion 4th part,
|
||||||
// macOS CFBundleVersion suffix, Android versionCode low digits). Bump on every release build.
|
// macOS CFBundleVersion suffix, Android versionCode low digits). Bump on every release build.
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
<Identity
|
<Identity
|
||||||
Name="EvilFox.EvilFox"
|
Name="EvilFox.EvilFox"
|
||||||
Publisher="CN=EvilFox"
|
Publisher="CN=EvilFox"
|
||||||
Version="4.2.5.1"
|
Version="4.2.6.1"
|
||||||
ProcessorArchitecture="x64" />
|
ProcessorArchitecture="x64" />
|
||||||
|
|
||||||
<Properties>
|
<Properties>
|
||||||
|
|||||||
+4
-4
@@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"version": "4.2.5",
|
"version": "4.2.6",
|
||||||
"notes": "4.2.5: переключатель языка Русский / English (localStorage navis.lang, по умолчанию RU); все строки UI и динамические подписи серверов",
|
"notes": "4.2.6: fix sidebar RU/EN and theme toggles — applyTheme param shadowed i18n t(), so init threw and click listeners never bound",
|
||||||
"platform": "windows-amd64",
|
"platform": "windows-amd64",
|
||||||
"os": "windows",
|
"os": "windows",
|
||||||
"arch": "amd64",
|
"arch": "amd64",
|
||||||
"url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe",
|
"url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe",
|
||||||
"sha256": "fb8bf0fb98662601235ca6e33ba51f9aaf2a1602f3177c602adb8023161bcd90",
|
"sha256": "843fd62f7fe0ae09261322fb90d7f281a48472b78e6a9c543b6a9637fe1cc83e",
|
||||||
"mandatory": false,
|
"mandatory": false,
|
||||||
"platforms": {
|
"platforms": {
|
||||||
"android": {
|
"android": {
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
},
|
},
|
||||||
"windows-amd64": {
|
"windows-amd64": {
|
||||||
"url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe",
|
"url": "https://git.de4ima.uk/Evilfox/navi/raw/branch/Windows/dist/navis-release/windows/EvilFox.exe",
|
||||||
"sha256": "fb8bf0fb98662601235ca6e33ba51f9aaf2a1602f3177c602adb8023161bcd90",
|
"sha256": "843fd62f7fe0ae09261322fb90d7f281a48472b78e6a9c543b6a9637fe1cc83e",
|
||||||
"os": "windows",
|
"os": "windows",
|
||||||
"arch": "amd64"
|
"arch": "amd64"
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"FixedFileInfo": {
|
"FixedFileInfo": {
|
||||||
"FileVersion": { "Major": 4, "Minor": 2, "Patch": 5, "Build": 1 },
|
"FileVersion": { "Major": 4, "Minor": 2, "Patch": 6, "Build": 1 },
|
||||||
"ProductVersion": { "Major": 4, "Minor": 2, "Patch": 5, "Build": 1 },
|
"ProductVersion": { "Major": 4, "Minor": 2, "Patch": 6, "Build": 1 },
|
||||||
"FileFlagsMask": "3f",
|
"FileFlagsMask": "3f",
|
||||||
"FileFlags": "00",
|
"FileFlags": "00",
|
||||||
"FileOS": "40004",
|
"FileOS": "40004",
|
||||||
@@ -11,12 +11,12 @@
|
|||||||
"StringFileInfo": {
|
"StringFileInfo": {
|
||||||
"CompanyName": "EvilFox",
|
"CompanyName": "EvilFox",
|
||||||
"FileDescription": "EvilFox — VPN client (Naive / Hy2 / AWG / VLESS / VMess / Trojan)",
|
"FileDescription": "EvilFox — VPN client (Naive / Hy2 / AWG / VLESS / VMess / Trojan)",
|
||||||
"FileVersion": "4.2.5.1",
|
"FileVersion": "4.2.6.1",
|
||||||
"InternalName": "EvilFox",
|
"InternalName": "EvilFox",
|
||||||
"LegalCopyright": "Copyright (c) EvilFox",
|
"LegalCopyright": "Copyright (c) EvilFox",
|
||||||
"OriginalFilename": "EvilFox.exe",
|
"OriginalFilename": "EvilFox.exe",
|
||||||
"ProductName": "EvilFox",
|
"ProductName": "EvilFox",
|
||||||
"ProductVersion": "4.2.5.1",
|
"ProductVersion": "4.2.6.1",
|
||||||
"Comments": "Open-source VPN/proxy client. https://evilfox.win/"
|
"Comments": "Open-source VPN/proxy client. https://evilfox.win/"
|
||||||
},
|
},
|
||||||
"VarFileInfo": {
|
"VarFileInfo": {
|
||||||
|
|||||||
Reference in New Issue
Block a user