From cbc5f6e27e03625545f588c6d33ee12edc587279 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 20 May 2026 00:10:44 +0000 Subject: [PATCH 1/6] Initial plan From 73b70f6cde8809136410f15eb4d05511d8e38950 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 20 May 2026 00:16:33 +0000 Subject: [PATCH 2/6] Add subscription proxy add button Agent-Logs-Url: https://github.com/salarcode/SmartProxy/sessions/0ae21641-a397-4146-ab1b-fc58fd113911 Co-authored-by: salarcode <1272095+salarcode@users.noreply.github.com> --- src/_locales/en/messages.json | 3 ++ src/ui/code/settingsPage.ts | 64 ++++++++++++++++++++++++++++++++--- src/ui/settings.html | 4 +++ 3 files changed, 67 insertions(+), 4 deletions(-) diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index ae3b52fc..7b0903fc 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -462,6 +462,9 @@ "settingsAddServerButton": { "message": "Add Server" }, + "settingsAddActiveSubscriptionProxyServerButton": { + "message": "Add to My Servers" + }, "settingsRemoveMultipleServerButton": { "message": "Delete Multiple" }, diff --git a/src/ui/code/settingsPage.ts b/src/ui/code/settingsPage.ts index af3707c8..f767fdbc 100644 --- a/src/ui/code/settingsPage.ts +++ b/src/ui/code/settingsPage.ts @@ -207,6 +207,8 @@ export class settingsPage { jq("#btnAddProxyServer").click(settingsPage.uiEvents.onClickAddProxyServer); + jq("#btnAddActiveSubscriptionProxyServerToMyServers").click(settingsPage.uiEvents.onClickAddActiveSubscriptionProxyServerToMyServers); + jq("#btnRemoveMultipleProxyServer").click(settingsPage.uiEvents.onClickRemoveMultipleProxyServer); jq("#cmdServerProtocol").on("change", settingsPage.uiEvents.onChangeServerProtocol); @@ -1201,6 +1203,7 @@ export class settingsPage { // populate this.populateProxyServersToComboBox(cmbActiveProxyServer, defaultProxyServerId, proxyServers, serverSubscriptions); + this.updateActiveSubscriptionProxyServerAction(); } private static readServers(): ProxyServer[] { @@ -1318,6 +1321,35 @@ export class settingsPage { return null; } + private static findProxyServerSubscriptionByProxyServerId(proxyServerId: string): ProxyServerSubscription | null { + if (!proxyServerId) + return null; + + let serverSubscriptions = settingsPage.readServerSubscriptions(); + for (let subscription of serverSubscriptions) { + if (!subscription.enabled || !subscription.proxies) + continue; + + let proxy = subscription.proxies.find(item => item.id === proxyServerId); + if (proxy !== undefined) + return subscription; + } + return null; + } + + private static updateActiveSubscriptionProxyServerAction() { + let proxyServerId = jq("#cmbActiveProxyServer").val() as string; + let subscription = settingsPage.findProxyServerSubscriptionByProxyServerId(proxyServerId); + let button = jq("#btnAddActiveSubscriptionProxyServerToMyServers"); + + if (subscription) { + button.show().removeClass("d-none"); + } + else { + button.hide(); + } + } + private static exportServersListFormatted(): string { let proxyList = settingsPage.readServers(); let result = `[SmartProxy Servers]\r\n`; @@ -2640,6 +2672,7 @@ export class settingsPage { else { Debug.warn("Settings> Selected ActiveProxyServer ID not found!"); } + settingsPage.updateActiveSubscriptionProxyServerAction(); }, onClickAddProxyServer() { @@ -2651,6 +2684,29 @@ export class settingsPage { modal.modal("show"); modal.find("#txtServerAddress").focus(); }, + onClickAddActiveSubscriptionProxyServerToMyServers() { + let proxyServerId = jq("#cmbActiveProxyServer").val() as string; + let subscription = settingsPage.findProxyServerSubscriptionByProxyServerId(proxyServerId); + if (!subscription) + return; + + let server = subscription.proxies.find(item => item.id === proxyServerId); + if (!server) + return; + + let modal = jq("#modalModifyProxyServer"); + modal.data("editing", null); + + let serverToAdd = new ProxyServer(); + jQuery.extend(serverToAdd, server); + serverToAdd.order = 0; + serverToAdd.name = settingsPage.generateNewServerName(subscription.name); + + settingsPage.populateServerModal(modal, serverToAdd); + + modal.modal("show"); + modal.find("#txtServerAddress").focus(); + }, onClickRemoveMultipleProxyServer() { var rows = settingsPage.grdServers.rows({ selected: true }); if (!rows) @@ -4367,17 +4423,17 @@ export class settingsPage { //#endregion //#region Common functions --------------- - private static generateNewServerName(): string { + private static generateNewServerName(prefix: string = "Server"): string { // generates a unique name for proxy server let servers = this.readServers(); let serverNo = 1; - let result = `Server ${serverNo}`; + let result = `${prefix} ${serverNo}`; if (servers && servers.length > 0) { let exist; serverNo = servers.length + 1; - result = `Server ${serverNo}`; + result = `${prefix} ${serverNo}`; do { exist = false; @@ -4385,7 +4441,7 @@ export class settingsPage { if (servers[i].name === result) { exist = true; serverNo++; - result = `Server ${serverNo}`; + result = `${prefix} ${serverNo}`; break; } } diff --git a/src/ui/settings.html b/src/ui/settings.html index ac18f691..403b1827 100644 --- a/src/ui/settings.html +++ b/src/ui/settings.html @@ -599,6 +599,10 @@
+
+ +
Manage your proxy servers: From fad187a8399a33c97ebd5faca438149d9608a89d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 20 May 2026 00:18:06 +0000 Subject: [PATCH 3/6] Use Bootstrap class for add button visibility Agent-Logs-Url: https://github.com/salarcode/SmartProxy/sessions/0ae21641-a397-4146-ab1b-fc58fd113911 Co-authored-by: salarcode <1272095+salarcode@users.noreply.github.com> --- src/ui/code/settingsPage.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ui/code/settingsPage.ts b/src/ui/code/settingsPage.ts index f767fdbc..0f2970a2 100644 --- a/src/ui/code/settingsPage.ts +++ b/src/ui/code/settingsPage.ts @@ -1343,10 +1343,10 @@ export class settingsPage { let button = jq("#btnAddActiveSubscriptionProxyServerToMyServers"); if (subscription) { - button.show().removeClass("d-none"); + button.removeClass("d-none"); } else { - button.hide(); + button.addClass("d-none"); } } From 02f21ffed5148d688cb8361bb5c673bbed4153dc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 20 May 2026 00:19:30 +0000 Subject: [PATCH 4/6] Guard subscription proxy lookup Agent-Logs-Url: https://github.com/salarcode/SmartProxy/sessions/0ae21641-a397-4146-ab1b-fc58fd113911 Co-authored-by: salarcode <1272095+salarcode@users.noreply.github.com> --- src/ui/code/settingsPage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/code/settingsPage.ts b/src/ui/code/settingsPage.ts index 0f2970a2..b6044cf3 100644 --- a/src/ui/code/settingsPage.ts +++ b/src/ui/code/settingsPage.ts @@ -2687,7 +2687,7 @@ export class settingsPage { onClickAddActiveSubscriptionProxyServerToMyServers() { let proxyServerId = jq("#cmbActiveProxyServer").val() as string; let subscription = settingsPage.findProxyServerSubscriptionByProxyServerId(proxyServerId); - if (!subscription) + if (!subscription || !subscription.proxies) return; let server = subscription.proxies.find(item => item.id === proxyServerId); From 17ce4cce6ca4572098438f939fe7cfba8dc16232 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 20 May 2026 00:21:04 +0000 Subject: [PATCH 5/6] Set added subscription server order Agent-Logs-Url: https://github.com/salarcode/SmartProxy/sessions/0ae21641-a397-4146-ab1b-fc58fd113911 Co-authored-by: salarcode <1272095+salarcode@users.noreply.github.com> --- src/ui/code/settingsPage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/code/settingsPage.ts b/src/ui/code/settingsPage.ts index b6044cf3..7a6917c5 100644 --- a/src/ui/code/settingsPage.ts +++ b/src/ui/code/settingsPage.ts @@ -2699,7 +2699,7 @@ export class settingsPage { let serverToAdd = new ProxyServer(); jQuery.extend(serverToAdd, server); - serverToAdd.order = 0; + serverToAdd.order = settingsPage.readServers().reduce((order, item) => Math.max(order, item.order || 0), 0) + 1; serverToAdd.name = settingsPage.generateNewServerName(subscription.name); settingsPage.populateServerModal(modal, serverToAdd); From 682ef58a4b9df9cd8b4cf935d5a61c03e77c2356 Mon Sep 17 00:00:00 2001 From: salarcode Date: Mon, 17 Aug 2026 23:42:38 +1000 Subject: [PATCH 6/6] translations --- src/_locales/ar/messages.json | 3 +++ src/_locales/de/messages.json | 21 ++++++++++++--------- src/_locales/en/messages.json | 24 ++++++++++++------------ src/_locales/es/messages.json | 3 +++ src/_locales/fa/messages.json | 3 +++ src/_locales/fr/messages.json | 3 +++ src/_locales/id/messages.json | 3 +++ src/_locales/it/messages.json | 3 +++ src/_locales/nl/messages.json | 3 +++ src/_locales/pl/messages.json | 3 +++ src/_locales/ru/messages.json | 3 +++ src/_locales/tr/messages.json | 3 +++ src/_locales/zh-TW/messages.json | 3 +++ src/_locales/zh_CN/messages.json | 3 +++ 14 files changed, 60 insertions(+), 21 deletions(-) diff --git a/src/_locales/ar/messages.json b/src/_locales/ar/messages.json index bf55127a..980df0b8 100644 --- a/src/_locales/ar/messages.json +++ b/src/_locales/ar/messages.json @@ -462,6 +462,9 @@ "settingsAddServerButton": { "message": "إضافة خادم" }, + "settingsAddActiveSubscriptionProxyServerButton": { + "message": "أضف إلى خوادمي" + }, "settingsRemoveMultipleServerButton": { "message": "حذف متعدد" }, diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json index 743619b3..bab2579f 100644 --- a/src/_locales/de/messages.json +++ b/src/_locales/de/messages.json @@ -420,15 +420,15 @@ "settingsGeneralDisplayAppliedRulePatternOnBadge": { "message": "Angewandtes Regelmuster am Icon anzeigen" }, - "settingsGeneralRefreshTabOnConfigChanges": { - "message": "Aktiven Tab neu laden, wenn sich das Profil oder der Proxy ändert" - }, - "settingsGeneralDeleteRuleWhenDisabledFromPopup": { - "message": "Regel löschen, wenn sie im Popup-Menü deaktiviert/abgewählt wird" - }, - "settingsGeneralCancelButton": { - "message": "Abbrechen" - }, + "settingsGeneralRefreshTabOnConfigChanges": { + "message": "Aktiven Tab neu laden, wenn sich das Profil oder der Proxy ändert" + }, + "settingsGeneralDeleteRuleWhenDisabledFromPopup": { + "message": "Regel löschen, wenn sie im Popup-Menü deaktiviert/abgewählt wird" + }, + "settingsGeneralCancelButton": { + "message": "Abbrechen" + }, "settingsGeneralSaveChanges": { "message": "Änderungen speichern" }, @@ -462,6 +462,9 @@ "settingsAddServerButton": { "message": "Server hinzufügen" }, + "settingsAddActiveSubscriptionProxyServerButton": { + "message": "Zu meinen Servern hinzufügen" + }, "settingsRemoveMultipleServerButton": { "message": "Mehrere löschen" }, diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index 7b0903fc..947a5511 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -420,15 +420,15 @@ "settingsGeneralDisplayAppliedRulePatternOnBadge": { "message": "Display applied rule pattern on badge" }, - "settingsGeneralRefreshTabOnConfigChanges": { - "message": "Refresh active tab when profile or proxy changed" - }, - "settingsGeneralDeleteRuleWhenDisabledFromPopup": { - "message": "Delete rule when disabled/unchecked from popup menu" - }, - "settingsGeneralCancelButton": { - "message": "Cancel" - }, + "settingsGeneralRefreshTabOnConfigChanges": { + "message": "Refresh active tab when profile or proxy changed" + }, + "settingsGeneralDeleteRuleWhenDisabledFromPopup": { + "message": "Delete rule when disabled/unchecked from popup menu" + }, + "settingsGeneralCancelButton": { + "message": "Cancel" + }, "settingsGeneralSaveChanges": { "message": "Save Changes" }, @@ -462,9 +462,9 @@ "settingsAddServerButton": { "message": "Add Server" }, - "settingsAddActiveSubscriptionProxyServerButton": { - "message": "Add to My Servers" - }, + "settingsAddActiveSubscriptionProxyServerButton": { + "message": "Add to My Servers" + }, "settingsRemoveMultipleServerButton": { "message": "Delete Multiple" }, diff --git a/src/_locales/es/messages.json b/src/_locales/es/messages.json index 9436bcf4..3fb00b0e 100644 --- a/src/_locales/es/messages.json +++ b/src/_locales/es/messages.json @@ -462,6 +462,9 @@ "settingsAddServerButton": { "message": "Agregar servidor" }, + "settingsAddActiveSubscriptionProxyServerButton": { + "message": "Agregar a Mis Servidores" + }, "settingsRemoveMultipleServerButton": { "message": "Eliminar varios" }, diff --git a/src/_locales/fa/messages.json b/src/_locales/fa/messages.json index 96798f74..c91481ef 100644 --- a/src/_locales/fa/messages.json +++ b/src/_locales/fa/messages.json @@ -462,6 +462,9 @@ "settingsAddServerButton": { "message": "افزودن پراکسی سرور" }, + "settingsAddActiveSubscriptionProxyServerButton": { + "message": "افزودن به سرورهای من" + }, "settingsRemoveMultipleServerButton": { "message": "حذف چندتایی" }, diff --git a/src/_locales/fr/messages.json b/src/_locales/fr/messages.json index 645e69dd..5f0e948c 100644 --- a/src/_locales/fr/messages.json +++ b/src/_locales/fr/messages.json @@ -462,6 +462,9 @@ "settingsAddServerButton": { "message": "Ajouter serveur" }, + "settingsAddActiveSubscriptionProxyServerButton": { + "message": "Ajouter à mes serveurs" + }, "settingsRemoveMultipleServerButton": { "message": "Supprimer plusieurs" }, diff --git a/src/_locales/id/messages.json b/src/_locales/id/messages.json index ecaa2633..5fcbcbe6 100644 --- a/src/_locales/id/messages.json +++ b/src/_locales/id/messages.json @@ -462,6 +462,9 @@ "settingsAddServerButton": { "message": "Tambahkan Server" }, + "settingsAddActiveSubscriptionProxyServerButton": { + "message": "Tambahkan ke Server Saya" + }, "settingsRemoveMultipleServerButton": { "message": "Hapus Banyak" }, diff --git a/src/_locales/it/messages.json b/src/_locales/it/messages.json index 9a7efcf9..d9f8fdbc 100644 --- a/src/_locales/it/messages.json +++ b/src/_locales/it/messages.json @@ -462,6 +462,9 @@ "settingsAddServerButton": { "message": "Aggiungi Server" }, + "settingsAddActiveSubscriptionProxyServerButton": { + "message": "Aggiungi ai miei server" + }, "settingsRemoveMultipleServerButton": { "message": "Elimina Multipli" }, diff --git a/src/_locales/nl/messages.json b/src/_locales/nl/messages.json index 3169ee90..6845bb2d 100644 --- a/src/_locales/nl/messages.json +++ b/src/_locales/nl/messages.json @@ -462,6 +462,9 @@ "settingsAddServerButton": { "message": "Server toevoegen" }, + "settingsAddActiveSubscriptionProxyServerButton": { + "message": "Toevoegen aan Mijn servers" + }, "settingsRemoveMultipleServerButton": { "message": "Verwijder meerdere" }, diff --git a/src/_locales/pl/messages.json b/src/_locales/pl/messages.json index fef6edc6..af1ac346 100644 --- a/src/_locales/pl/messages.json +++ b/src/_locales/pl/messages.json @@ -462,6 +462,9 @@ "settingsAddServerButton": { "message": "Dodaj serwer" }, + "settingsAddActiveSubscriptionProxyServerButton": { + "message": "Dodaj do moich serwerów" + }, "settingsRemoveMultipleServerButton": { "message": "Usuń wiele" }, diff --git a/src/_locales/ru/messages.json b/src/_locales/ru/messages.json index bb3fa06a..d2dd8eb8 100644 --- a/src/_locales/ru/messages.json +++ b/src/_locales/ru/messages.json @@ -462,6 +462,9 @@ "settingsAddServerButton": { "message": "Добавить сервер" }, + "settingsAddActiveSubscriptionProxyServerButton": { + "message": "Добавить в мои серверы" + }, "settingsRemoveMultipleServerButton": { "message": "Удалить несколько" }, diff --git a/src/_locales/tr/messages.json b/src/_locales/tr/messages.json index 6a930e2d..261752c2 100644 --- a/src/_locales/tr/messages.json +++ b/src/_locales/tr/messages.json @@ -462,6 +462,9 @@ "settingsAddServerButton": { "message": "Sunucu ekle" }, + "settingsAddActiveSubscriptionProxyServerButton": { + "message": "Sunucularıma ekle" + }, "settingsRemoveMultipleServerButton": { "message": "Çoklu Sil" }, diff --git a/src/_locales/zh-TW/messages.json b/src/_locales/zh-TW/messages.json index a1717a84..d4bf734c 100644 --- a/src/_locales/zh-TW/messages.json +++ b/src/_locales/zh-TW/messages.json @@ -462,6 +462,9 @@ "settingsAddServerButton": { "message": "添加服務器" }, + "settingsAddActiveSubscriptionProxyServerButton": { + "message": "新增至我的伺服器" + }, "settingsRemoveMultipleServerButton": { "message": "刪除多個" }, diff --git a/src/_locales/zh_CN/messages.json b/src/_locales/zh_CN/messages.json index 57d1cf6a..71087f9d 100644 --- a/src/_locales/zh_CN/messages.json +++ b/src/_locales/zh_CN/messages.json @@ -462,6 +462,9 @@ "settingsAddServerButton": { "message": "添加服务器" }, + "settingsAddActiveSubscriptionProxyServerButton": { + "message": "添加到我的服务器" + }, "settingsRemoveMultipleServerButton": { "message": "删除多个" },