fix: resolve Discord Cloudflare voice ports #55, smart detect proxy sections #56, and UI enhancements
This commit is contained in:
@@ -1361,7 +1361,7 @@ const dictionary = {
|
||||
"Auto (cooperative with SQM/CAKE)": "Авто (кооперация с SQM/CAKE)",
|
||||
"QoS Priority Engine (DSCP)": "Движок приоритета QoS (DSCP)",
|
||||
"Strategy applied successfully and service reloaded!": "Стратегия успешно применена, сервис перезапущен!",
|
||||
"Subnet %s is a Cloudflare Anycast range used by Discord Voice. Only UDP voice traffic (ports 50000-65535, 3478, 19302, 5000-5020) is routed through this section; web traffic (TCP 80/443) goes direct.": "Подсеть %s — диапазон Cloudflare Anycast, используемый Discord Voice. Только голосовой UDP-трафик (порты 50000-65535, 3478, 19302, 5000-5020) направляется через этот раздел; веб-трафик (TCP 80/443) идет напрямую.",
|
||||
"Subnet %s is a Cloudflare Anycast range used by Discord Voice. Only UDP voice traffic (ports 50000-65535, 3478, 19294-19344, 5000-5020) is routed through this section; web traffic (TCP 80/443) goes direct.": "Подсеть %s — диапазон Cloudflare Anycast, используемый Discord Voice. Только голосовой UDP-трафик (порты 50000-65535, 3478, 19294-19344, 5000-5020) направляется через этот раздел; веб-трафик (TCP 80/443) идет напрямую.",
|
||||
"Add URLs or local paths to .lst / .txt lists containing domains and subnets.": "Добавьте URL или локальные пути к спискам .lst / .txt, содержащим домены и подсети.",
|
||||
"Add URLs or local paths to .lst / .txt lists containing domains. IP entries are ignored.": "Добавьте URL или локальные пути к спискам .lst / .txt, содержащим домены. IP-записи игнорируются.",
|
||||
};
|
||||
|
||||
@@ -12644,8 +12644,8 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Subnet %s is a Cloudflare Anycast range used by Discord Voice. Only UDP voice traffic (ports 50000-65535, 3478, 19302, 5000-5020) is routed through this section; web traffic (TCP 80/443) goes direct.",
|
||||
"key": "Subnet %s is a Cloudflare Anycast range used by Discord Voice. Only UDP voice traffic (ports 50000-65535, 3478, 19302, 5000-5020) is routed through this section; web traffic (TCP 80/443) goes direct.",
|
||||
"call": "Subnet %s is a Cloudflare Anycast range used by Discord Voice. Only UDP voice traffic (ports 50000-65535, 3478, 19294-19344, 5000-5020) is routed through this section; web traffic (TCP 80/443) goes direct.",
|
||||
"key": "Subnet %s is a Cloudflare Anycast range used by Discord Voice. Only UDP voice traffic (ports 50000-65535, 3478, 19294-19344, 5000-5020) is routed through this section; web traffic (TCP 80/443) goes direct.",
|
||||
"places": [
|
||||
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:11896"
|
||||
]
|
||||
|
||||
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: TACHYON\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-15 12:05+0300\n"
|
||||
"PO-Revision-Date: 2026-09-15 12:05+0300\n"
|
||||
"POT-Creation-Date: 2026-09-15 12:34+0300\n"
|
||||
"PO-Revision-Date: 2026-09-15 12:34+0300\n"
|
||||
"Last-Translator: Dushnilin <dushnilin@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
@@ -7810,7 +7810,7 @@ msgid "Subnet %s belongs to a shared Anycast/CDN range (%s). Third-party website
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:11896
|
||||
msgid "Subnet %s is a Cloudflare Anycast range used by Discord Voice. Only UDP voice traffic (ports 50000-65535, 3478, 19302, 5000-5020) is routed through this section; web traffic (TCP 80/443) goes direct."
|
||||
msgid "Subnet %s is a Cloudflare Anycast range used by Discord Voice. Only UDP voice traffic (ports 50000-65535, 3478, 19294-19344, 5000-5020) is routed through this section; web traffic (TCP 80/443) goes direct."
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:11387
|
||||
|
||||
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: TACHYON\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-09-15 15:05+0300\n"
|
||||
"PO-Revision-Date: 2026-09-15 15:05+0300\n"
|
||||
"POT-Creation-Date: 2026-09-15 15:34+0300\n"
|
||||
"PO-Revision-Date: 2026-09-15 15:34+0300\n"
|
||||
"Last-Translator: Dushnilin\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: ru\n"
|
||||
@@ -4868,8 +4868,8 @@ msgstr "STUN (P2P-звонки)"
|
||||
msgid "Subnet %s belongs to a shared Anycast/CDN range (%s). Third-party websites hosted on this CDN will also be routed through this section."
|
||||
msgstr "Подсеть %s входит в публичный Anycast/CDN-диапазон (%s). Сторонние сайты, размещенные на этом CDN, также будут направляться через эту секцию."
|
||||
|
||||
msgid "Subnet %s is a Cloudflare Anycast range used by Discord Voice. Only UDP voice traffic (ports 50000-65535, 3478, 19302, 5000-5020) is routed through this section; web traffic (TCP 80/443) goes direct."
|
||||
msgstr "Подсеть %s — диапазон Cloudflare Anycast, используемый Discord Voice. Только голосовой UDP-трафик (порты 50000-65535, 3478, 19302, 5000-5020) направляется через этот раздел; веб-трафик (TCP 80/443) идет напрямую."
|
||||
msgid "Subnet %s is a Cloudflare Anycast range used by Discord Voice. Only UDP voice traffic (ports 50000-65535, 3478, 19294-19344, 5000-5020) is routed through this section; web traffic (TCP 80/443) goes direct."
|
||||
msgstr "Подсеть %s — диапазон Cloudflare Anycast, используемый Discord Voice. Только голосовой UDP-трафик (порты 50000-65535, 3478, 19294-19344, 5000-5020) направляется через этот раздел; веб-трафик (TCP 80/443) идет напрямую."
|
||||
|
||||
msgid "Subnet %s is a shared Anycast/CDN range (%s). Third-party websites hosted on this CDN will also be routed through this section."
|
||||
msgstr "Подсеть %s является публичным Anycast/CDN-диапазоном (%s). Сторонние сайты, размещенные на этом CDN, также будут направляться через эту секцию."
|
||||
|
||||
@@ -125,7 +125,7 @@ interface ComponentActionButton {
|
||||
|
||||
interface ComponentCard {
|
||||
component: Tachyon.ComponentName;
|
||||
column: 0 | 1;
|
||||
column: 0 | 1 | 2;
|
||||
title: string;
|
||||
version: string;
|
||||
latestVersion?: string;
|
||||
@@ -1545,7 +1545,7 @@ function getComponentCards(): ComponentCard[] {
|
||||
},
|
||||
{
|
||||
component: 'wdtt',
|
||||
column: 1,
|
||||
column: 2,
|
||||
title: 'WDTT',
|
||||
version: systemInfoLoading
|
||||
? _('Loading...')
|
||||
@@ -1560,7 +1560,7 @@ function getComponentCards(): ComponentCard[] {
|
||||
},
|
||||
{
|
||||
component: 'olcrtc',
|
||||
column: 1,
|
||||
column: 2,
|
||||
title: 'OlcRTC',
|
||||
version: systemInfoLoading
|
||||
? _('Loading...')
|
||||
@@ -1575,7 +1575,7 @@ function getComponentCards(): ComponentCard[] {
|
||||
},
|
||||
{
|
||||
component: 'fptn',
|
||||
column: 1,
|
||||
column: 2,
|
||||
title: 'FPTN',
|
||||
version: systemInfoLoading
|
||||
? _('Loading...')
|
||||
@@ -1590,7 +1590,7 @@ function getComponentCards(): ComponentCard[] {
|
||||
},
|
||||
{
|
||||
component: 'tailscale',
|
||||
column: 1,
|
||||
column: 2,
|
||||
title: 'Tailscale',
|
||||
version: systemInfoLoading
|
||||
? _('Loading...')
|
||||
@@ -2036,22 +2036,19 @@ function renderUpdatesComponents() {
|
||||
return;
|
||||
}
|
||||
|
||||
const columns = [[], []] as Node[][];
|
||||
const columns: Node[][] = [[], [], []];
|
||||
getComponentCards().forEach((card) => {
|
||||
columns[card.column].push(renderComponentCard(card));
|
||||
columns[card.column]?.push(renderComponentCard(card));
|
||||
});
|
||||
|
||||
return preserveScrollForPage(() => {
|
||||
container.replaceChildren(
|
||||
E(
|
||||
'div',
|
||||
{ class: 'tachyon_updates-page__components-column' },
|
||||
columns[0],
|
||||
),
|
||||
E(
|
||||
'div',
|
||||
{ class: 'tachyon_updates-page__components-column' },
|
||||
columns[1],
|
||||
...columns.map((columnNodes) =>
|
||||
E(
|
||||
'div',
|
||||
{ class: 'tachyon_updates-page__components-column' },
|
||||
columnNodes,
|
||||
),
|
||||
),
|
||||
);
|
||||
});
|
||||
|
||||
@@ -24,10 +24,10 @@ export const styles = `
|
||||
|
||||
.tachyon_updates-page__components-column {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
flex: 1 1 0;
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
min-width: max-content;
|
||||
min-width: 280px;
|
||||
}
|
||||
|
||||
@media (max-width: 760px) {
|
||||
@@ -172,7 +172,7 @@ export const styles = `
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
flex-wrap: nowrap;
|
||||
flex-wrap: wrap;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
@@ -191,7 +191,7 @@ export const styles = `
|
||||
|
||||
.tachyon_updates-page__component__variants-buttons {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
flex-wrap: wrap;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user