Skip to content

1.0.26: ShopSocks5 removed, ten more affiliate Dashboard links, AI rotation and WebRTC fixes, CatProxies and How many fixes, WEPROXY v1, Proxy pool at 375 px - #81

Merged
softglazee merged 11 commits into
mainfrom
fix/1.0.26-round9
Nov 10, 2026
Merged

softglazee merged 11 commits into
mainfrom
fix/1.0.26-round9

Conversation

@softglazee

Copy link
Copy Markdown
Owner

Round 9 for the 1.0.26 rebuild: the owner's two decisions of 10 Nov (ShopSocks5 out, ten more affiliate Dashboard links), the last open app items of the 1.0.27 backlog, the WEPROXY connector v1, and a check of items 1-13, 16-18 and 82-87 on main. No version bump, no schema change, no migration. No change to the Firefox add-on (src/firefox-extension is untouched). Based on origin/main 47e60d2.

What changed

Item Outcome Change
A1 Remove ShopSocks5 fixed here Gone from the provider list, PROXY_VENDORS, the adapter and its request helper, providerAccount's dashboard link, the panel's Plan / Proxy type / API URL fields, the logo, QuickGenerate, the Proxy pool and the en/es strings. Added to test/removed-vendors.test.js. See 1.
A2 Affiliate Dashboard links fixed here NOVADA, Coronium, CatProxies, PacketStream, Proxmint, RapidProxy, PROXY6, 2extract, Gsocks, Proxy-Solutions: referral set to the owner's links verbatim, as #73 did. The Owner can still override them in Settings, Monetization.
14 SoftGlaze AI tools fixed here See 2.
"Smartproxy" labels fixed here See 3.
Proxy pool sideways at 375 px fixed here The view tabs wrap inside their bar; stat cards wrap instead of cutting. See 5.
MarsProxies 404 / 409 fixed here Coded errors (MARSPROXIES_SUBUSER_NOT_FOUND, MARSPROXIES_MISMATCH) with clear text, shown in the window's language (en, es).
CatProxies ISP / Datacenter "Keep same IP" fixed here See 4.
"How many" placeholder 5 fixed here See 4.
Airproxy in_use_till fixed here Each row ends " • until YYYY-MM-DD", like ProxyBrazil, ProxyUDP, Zokol and MountProxies.
AnyIP "Get Proxy Details" fixed here Dashboard V2 wording: open a proxy profile and scroll to its proxy details (en, es).
15 Spanish in the Store package fixed earlier (#74) appx.languages: ['en-US', 'es'], en-US first. Checked against the electron-builder docs: languages lists the package languages, the first is the default. Nothing to change.
WEPROXY connector v1 new SPEC-weproxy.md section 3. See 6.

1. ShopSocks5 leftovers

  • Proxies already pulled from it keep their shopsocks5 tag and work as ordinary proxies. Nothing vendor-specific runs for the tag (no rotator, no adapter); an old row without a tag stays untagged.
  • No blank or raw label: the Proxy pool's provider chips and filter, Quick generate's proxy source and the vendor scoreboard name a tag no connector has any more by the vendor name its proxies were pulled with (the part of the row's name before " • ", so "ShopSocks5"); the tag itself is the last resort. This works for any removed provider (src/renderer/lib/providerTags.mjs, vendorScoreboard.js).
  • Saved credentials: readProxyProviderCredMap reads only providers in PROXY_VENDORS, so a saved ShopSocks5 key is never read or used; saveProxyProviderCreds refuses an unknown provider; the next save of any provider drops the old entry (cleanup on save, no migration).
  • The form's protocol default is plain http (proxy_sock_5 was ShopSocks5's value).
  • Kept: the example tag 'shopsocks5' in a prisma/schema.prisma comment (stored rows still carry it; touching the schema file was not worth a schema diff).

2. SoftGlaze AI tools (backlog 14)

3. "Smartproxy" labels

  • ProxyPoolPage, QuickGenerateModal: provider tags are named from the connector catalog, so smartproxy reads "Decodo (Smartproxy)" (key unchanged). Quick generate showed raw tags for every other connector; it now shows their names.
  • DEFAULT_IP_PROVIDERS is the Super Admin's list of resold proxy vendors, and its Smartproxy is the same vendor. Its name is the IpProvider table's unique key, so the row keeps "Smartproxy" (no duplicate row, keys kept); main adds a label shown on the card, "Decodo (Smartproxy)" (initials DC), and the row's old default dashboard link moves to dashboard.decodo.com (a link someone set is kept).
  • ProfilesPage: proxyProvider: 'Smartproxy' was an unused editor default that main never read or showed; removed with the equally unused proxyApiKey.

4. Pool-dependent fields and the How many placeholder

  • New geoSync lists, the same pattern as geoPools: stickyPools (pools that take Sticky session and Keep same IP), noCountryPools, listPools (pools that import what the account owns), listByUsername, countBlank (gatewayPull.mjs). What a pool does not take is hidden and not sent.
  • CatProxies: ISP and Datacenter hide Sticky session, Keep same IP, State and City; ISP also hides Country (Datacenter filters by it). The hint says so.
  • How many: the placeholder shows what main adds for a blank field: "All" for list pulls (incl. CatProxies ISP/Datacenter, Node4 Static Datacenter, Proxidize Per-Proxy), 5 for Apify and Proxy302 (their adapters default to 5), 1 for every other connector (rotating while Keep same IP and the session are blank, which that select already says). A test checks each connector against its adapter's default. The title says "blank adds N" (en, es).

5. Layout

  • Proxy pool at 375 px: the tabs pushed the page 37 px (en) / 132 px (es) sideways; they now wrap inside their bar. Stat card labels and lines wrap instead of "Total de pr…" / "Comprobación aut…" (also cut at 1440 in Spanish); below sm the decorative icon gives its room to the label.
  • IP provider settings at 375 px: names wrap before the status badge, and the Spanish header no longer pushes the card sideways.

6. WEPROXY v1 (SPEC-weproxy.md section 3)

  • Login built on gw.weproxy.com.tr:8989 (HTTP and SOCKS5, one port): <user>-package-residential[-country-<cc>][-city-<city>]; a pasted suffix from -package- on is dropped.
  • One rotating proxy per pull; State, Sticky session and Keep same IP are refused with the spec's message; a login email or empty password too. Host and port overridable.
  • Registry entry as in the spec, without count (v1 adds one rotating proxy, so a How many field would promise more); dashboard link my.weproxy.io (no account API); en/es hint from the spec; test/weproxy.test.js.
  • Not tested against WEPROXY: the trial quota is used up.

7. Items 1-13, 16-18, 82-87 checked on main

Item Outcome
1 uBlock Origin Lite fixed earlier (#71)
2 encryption text fixed earlier (#70)
3 member status log fixed earlier (#70)
4 Owner "Never active" fixed earlier (#70)
5 Smart Autofill fixed earlier (#71); Firefox gets it only with a re-signed add-on (version bump needed then; not this PR)
6 backup size fixed earlier (#74)
7 dead-proxy check fixed earlier (#74)
8 delete-proxy text fixed earlier (#74)
9 empty credentials fixed earlier (#73)
10 Dark mode switch fixed earlier (#74)
11 NOVADA fixed earlier (#73: a; #77: b-d)
12 DataImpulse fixed earlier (#77)
13 Apify hint fixed earlier (#77)
16 Gerente fixed earlier (#74)
17 English in Spanish fixed earlier (#74) + fixed here: a workspace that saved a setting before 1.0.7 stored that build's default footer (em dash), which still showed in English; the two older defaults now count as the default
18 mixed terms fixed earlier (#74) + fixed here: the Batch import page title "Creación de perfiles por lotes" → "Creación masiva de perfiles"; four texts called the app's pool "el pool" → "el grupo de proxies"; sidebar "Administracion" → "Administración"
82 Manager sees the Owner fixed earlier (#70)
83 Macro Record code fix in #71; needs a check by hand in a visible window
84 pass count dots fixed earlier (#71)
85 Google starter fixed earlier (#71)
86 stale download bar fixed earlier (#71)
87 Smart Autofill panel / Times used fixed earlier (#71)
19-22, 45, 46 (website), 23, 88 (videos) not app work, left alone

Behaviour changes per role (for the release notes)

Area Owner Admin Manager Operator
ShopSocks5 connector Gone; its proxies stay, labelled "ShopSocks5" Same Same Same
Dashboard buttons (10 providers) Affiliate links Same Same Same
AI rotate_proxy_ip by profile, token limited to groups Refused when the proxy is used outside them Same n/a n/a
AI rotate_proxy_ip by profile, Proxies hidden / Profiles visible Allowed (was refused) Same n/a n/a
AI update_profile webrtc-safe on Firefox Not applied, said so Same n/a n/a
CatProxies ISP / Datacenter form Fields that do not apply hidden Same Same Same
How many placeholder 1 (5 Apify/Proxy302, All for lists) Same Same Same
WEPROXY New connector (one rotating proxy) Same Same Same
IP provider settings "Decodo (Smartproxy)" n/a (Super Admin) n/a n/a

How it was verified

  • npm test: before 2069 / 2069 (origin/main 47e60d2); after 2095 / 2095, 0 fail.
    • New: test/round9.test.js (16), test/weproxy.test.js (5), test/removed-vendors.test.js (+8: ShopSocks5 in every listed source, logo, registry, labels for leftover proxies, saved-key cleanup).
    • Updated for intended changes: connectorsShared (affiliate links; cred harness reads PROXY_VENDORS), gatewayVendorPulls, connectorsVendors1, connector-review-fixes, providerAccount, dataimpulse (protocol default), batchAddProvider, vendorScoreboard, connectorsVendors2 and panel-fixes (placeholder / country rule), permissionsRound3 (feature by args), profileRedaction, spanishRound8 (canRotate via main's rule, footer rule).
  • CI steps run locally: npm run check:deps, a full vite build, node --check on every file in src/main and src/preload. All pass.
  • UI, rendered alone in headless Chrome (throwaway profile, fake preload API, AppShell's frame), 1440 and 375 px, light and dark, English and Spanish: the Proxy pool (list and Groups view), the Proxy providers page for CatProxies (Residential, ISP, Datacenter), WEPROXY, Airproxy, AnyIP, MarsProxies, NOVADA / Apify / Node4 Static with How many blank, Quick generate, IP provider settings (108 shots).
  • Not done: pulls against real vendors (WEPROXY, MarsProxies 404/409, Airproxy dates); the packaged app.

The owner's decision (10 Nov): drop ShopSocks5 the way LumiProxy, Smartproxy.org and kookeey were
dropped. It leaves the provider list, the vendor registry, the adapter and its request helper, the
dashboard link, the panel's Plan and Proxy type fields, the logo and the en/es strings. The unused
API URL block (ShopSocks5 text only) goes with it, and the form's protocol default is plain http.

Proxies already pulled from it stay ordinary proxies: their tag is kept, and the pool's provider
chips, Quick generate's proxy source and the vendor scoreboard name a tag no connector has any more
by the vendor name its proxies were pulled with, never blank. Saved ShopSocks5 credentials are no
longer read for any provider that is not in PROXY_VENDORS, a save for one is refused, and the next
save of any provider drops the old entry. The removed-vendors test covers it.
The owner's decision (10 Nov): NOVADA, Coronium, CatProxies, PacketStream, Proxmint, RapidProxy,
PROXY6, 2extract, Gsocks and Proxy-Solutions open his affiliate links, set as the connector's
referral the way #73 set the first five. The Owner can still override any of them in Settings,
Monetization.
The Proxy pool's provider chips and filter and Quick generate's proxy source name a provider tag
from the connector catalog, so smartproxy reads "Decodo (Smartproxy)" (the key stays smartproxy).
Quick generate showed the raw tag for every other connector; it now shows their names too.

DEFAULT_IP_PROVIDERS is the Super Admin's list of resold proxy vendors, and its Smartproxy is the
same vendor. Its name is the table's unique key, so the row keeps it; main adds a label shown on the
card ("Decodo (Smartproxy)", initials DC), and the row's old default dashboard link moves to
dashboard.decodo.com (a link someone set is kept).

The profile editor's proxyProvider: 'Smartproxy' default was never read by main or shown, so it
goes, with the equally unused proxyApiKey.
…_proxy_ip within a token's limits

Backlog 14, the parts #74 left:
- canRotate in list_proxies, get_proxy_health and every profile view comes from main's own
  proxyCanRotate (handed to the tools as ctx.deps.proxyCanRotate), so it covers the provider-API
  rotators from #73 (DataImpulse sticky ports, ProxyUDP, SimplyNode, MountProxies) as well as links.
  The AI layer's copy of the DataImpulse rule is gone. A profile's proxy summary carries canRotate
  too, so the AI knows a profile shared "use only" can rotate by profileId.
- The profile view already showed Firefox WebRTC as off (#74). update_profile no longer applies
  webrtc-safe to a Firefox profile and reports it as a fix: it is left out and the reply says so.
- rotate_proxy_ip by profile: a token limited to some groups may not rotate a proxy that profiles
  outside them use (the rule it already had by proxy id), and Visible features follow the window
  (a profile row's Rotate IP is a Profiles action, the pool's a Proxies one). By proxy id, a refusal
  for a shared profile's proxy names the profileId to use.
- The legacy rotation-link pass stays once per run (an import puts its link on the proxy since
  1.0.26, and a restore runs the pass again). A pass still running when a restore swaps the
  database now stops without writing the old database's record into the restored one.
generate-proxy-list answers 404 when the sub-user's username or password is wrong and 409 when the
location segment, username or password do not match. Both showed the raw API text. marsCall now
throws a coded error for each (MARSPROXIES_SUBUSER_NOT_FOUND, MARSPROXIES_MISMATCH) with a clear
English message, and the connector form shows it in the window's language (en and es). Other
replies are unchanged.
…How many adds

CatProxies' Dedicated or Custom ISP and Datacenter plans have fixed IPs and import as a list, but the
form still showed Sticky session, Keep same IP, State and City there (and Country on ISP), which main
then refused. Like geoPools does for State and City, the connector now lists the pools that take a
session (stickyPools) and the pools without a country (noCountryPools): the form hides those fields
on the other pools, and the pull sends none of them.

The How many placeholder showed 5 on every gateway connector, while a blank How many adds one proxy
(a rotating one while Keep same IP and the session are blank too). countBlankFor says what main adds:
"All" where the pull imports what the account owns (list connectors, and the listPools / Per-Proxy
cases: CatProxies ISP and Datacenter, Node4 Static Datacenter, Proxidize with a username), 5 for
Apify and Proxy302, whose adapters default to 5, and 1 for the rest. The title says it too (en/es),
and the CatProxies hint no longer asks to blank fields the form now hides.
…ashboard V2

Airproxy's list returns in_use_till, the date each proxy is paid until, which the connector ignored.
Its rows now end " • until YYYY-MM-DD", the way ProxyBrazil, ProxyUDP, Zokol and MountProxies show
their expiry in the Proxy pool.

The AnyIP note sent users to "Get Proxy Details", which AnyIP's Dashboard V2 no longer has: the
credentials are in each proxy profile's proxy details (en and es).
Built from SPEC-weproxy.md section 3 (v1). WEPROXY has no customer API, so the login is built on its
published gateway, gw.weproxy.com.tr:8989 (HTTP and SOCKS5 on one port), from the panel's proxy user:
<user>-package-residential[-country-<cc>][-city-<city>], the one template WEPROXY publishes. A pasted
suffix from -package- on is dropped. Each pull adds one rotating proxy; State, Sticky session and Keep
same IP are refused with the spec's message until WEPROXY publishes those tokens, and so is a login
email or an empty password. The host and port can be overridden.

Registry entry as in the spec (no How many: one rotating proxy per pull), PROXY_VENDORS, the
adapter, a dashboard link (no account API), the en/es hint from the spec, and test/weproxy.test.js.
Not tested against WEPROXY: the trial quota is used up.
…xy pool

Leftovers of 17 and 18 found while checking round 8 on main:
- 17: setGlobalSettings stores the defaults with any saved setting, so a workspace that saved one
  before 1.0.7 keeps that build's default footer (with an em dash) and the Spanish window still showed
  it in English. Those two older defaults now count as the default and read in the window's language.
- 18: the Batch import page title said "Creación de perfiles por lotes" while the sidebar says
  "Importación masiva"; it is "Creación masiva de perfiles". Four connector texts called the app's
  proxy pool "el pool"; they say "el grupo de proxies" (a vendor's own pools stay "pools").
- The sidebar's "Administracion" section is "Administración".
At 375 px the view tabs (Custom Proxies, Check history, Groups & countries) pushed the page 37 px
past the window in English and 132 px in Spanish. The tab bar now wraps inside itself (max-w-full),
with slightly smaller tab padding below sm. The stat cards cut their labels and lines ("Total de
pr...", "7 verificados · 0 si...", "Comprobación aut..." even at 1440): they wrap now, and below sm
the decorative icon gives its room to the label. Rendered at 1440 and 375, light and dark, en and es.
"Decodo (Smartproxy)" (and already "Bright Data" and "Oxylabs") was cut in the Super Admin's IP
provider cards at 375 px, and the Spanish header's "1/4 activados" pushed the card sideways. The
name wraps before its status badge, and the header row wraps.
@softglazee
softglazee merged commit 474d13b into main Nov 10, 2026
6 checks passed
@softglazee
softglazee deleted the fix/1.0.26-round9 branch November 10, 2026 19:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant