Skip to content

1.0.26: one Spanish name for each role and page, no English in the Spanish window, Spanish in the Store package, delete-proxy and backup texts, faster dead-proxy check, Dark mode switch, AI rotation by profile - #74

Merged
softglazee merged 4 commits into
mainfrom
fix/1.0.26-round8-spanish
Nov 10, 2026

Conversation

@softglazee

Copy link
Copy Markdown
Owner

Fixes the Spanish, Store-language and small-text items from the 1.0.26 bug list: 16, 17, 18, 15, 8, 6, 7, 10 and 14. No version bump, no schema change. Based on origin/main c5a50c8. It merges cleanly with #70 and #71 in any order; all three merged together pass 1838/1838 tests and build.

What changed

# Item Change
16 The Manager role had 3 Spanish names "Gerente" everywhere, as in the Store listing.
17 English text in the Spanish window The profile editor's choice buttons and summary, the permission list, the Browsers page's engine card, every AI client's "where" line, and the default footer are translated.
18 Mixed Spanish terms "Configuración", "Importación masiva", "Grupo de proxies" (the Store listing's terms).
15 The Store package declared only English languages: ['en-US', 'es']; the build script prints the package languages.
8 Delete-proxy dialogs said profiles "keep working" They say the profiles lose the proxy and do not launch until they get another one.
6 Backup line said 308 KB for a 414 KiB file It shows the saved file's size.
7 Check network on a dead proxy took ~30 s A proxy that accepts no connection fails within 8 s.
10 "Dark mode" showed its switch off in the dark theme One label, "Dark mode"; the switch is on while dark mode is on.
14 SoftGlaze AI tools (round 7 notes) canRotate for DataImpulse sticky proxies; Firefox WebRTC shown as off; rotate_proxy_ip by profile ("use only" shares); the legacy link pass after a restore.

16 and 18. Spanish terms

  • Role (16):
    • Members page: "Responsable" became "Gerente" (role, role description, the limits row "Gerentes", "Puede invitar gerentes").
    • AI token dialog: "Gestor" became "Gerente".
    • "Gestor de cookies" (the cookie manager) is unchanged.
  • Settings (18): every "Ajustes"/"ajustes" that names settings (page, tab or generic) is now "Configuración"/"configuración", with the grammar adjusted (40 strings in 13 files). Kept: "{{count}} ajuste(s)" in the backup message, which counts saved settings rows.
  • Batch import: the command palette and the Members feature list said "Importación por lotes". Both now say "Importación masiva", like the sidebar.
  • Proxy pool:
    • Now "Grupo de proxies" in the sidebar (was "Proxies"; English says "Proxy pool"), the Members feature list (was "Conjunto de proxies"), the palette, the page title and the dashboard. The Store listing and the Spanish screenshots' page title use it too.
    • To keep a group inside the pool from reading like the pool itself, the group dialog says "Nuevo grupo" / "Editar grupo", and the reassign source says "Solo un grupo".

17. English in the Spanish window

  • Profile editor:
    • The stored values stay English (saved profiles and main read them).
    • src/renderer/lib/profileOptionLabels.mjs maps each value to a label (profiles opt.*). Its English labels are the values themselves, so the English editor is pixel-identical apart from one row (below).
    • Spanish examples: Reenviar / Reemplazar / Real / Desactivado, Según la IP, Personalizado, Bloquear, Según el idioma.
    • The environment summary uses the same labels. "Windows All Windows" now reads "Windows (todas las versiones)", and in English "Windows (all versions)": the only English change in the editor.
    • The help text "Como Forward" now names the Spanish mode.
  • Permissions on Members:
    • Labels and sections are translated by action key (members actionLabels.* and actionCategories.*), for example "Cambiar la configuración del espacio de trabajo" and "Ver las credenciales de proxy sin ocultar".
    • permissions.js keeps the English catalog, which is the English text and the fallback. A test keeps every action in both languages.
  • Browsers page: the fingerprint engine card (heading, Installed / Not installed, description, progress and Download) moved to browsers engine.*.
  • AI "where" lines:
    • Every client's line was English, not only Cursor's, because main builds them.
    • The window now shows ai connect.clients.<client>.where, filling in the values main passes (whereVars: the extension URL, the server URL).
    • The English templates reproduce main's text exactly (tested for every client). Main's English stays, for the website guide.
  • Footer:
    • While the workspace keeps the default footer, the window shows it in its own language: "© 2026 SoftGlaze - Creado por el equipo de SoftGlaze · Desarrollado por Azhar Ali".
    • A footer the Super Admin wrote is shown as written.
    • Settings' read-only preview follows the same rule.

15. Store package languages

  • electron-builder.store.js: languages: ['en-US', 'es']. electron-builder writes one <Resource Language> per entry, and en-US stays the default.
  • scripts/build-store.js: its manifest fix-up only rewrites the TargetDeviceFamily versions, so both resources pass through. After a build it now prints Languages: en-US, es with the identity to check.
  • Not run: a Store package build (needs the signing vendor tools and an hour). The next release build will show the line.

8. Delete proxies

"Delete N selected proxies?" and "Delete all N filtered proxies?" now say: "…profiles that use them lose their proxy and will not launch until you assign them another one." That is what main does (detachProfilesFromProxies), and what the notice after a single delete already said. English and Spanish.

6. Backup size

workspaceBackup returns fileBytes (fs.stat of the saved file). The message shows that size, in KB as Explorer shows it (1024 bytes, rounded up), for example 414 KB instead of the 308 KB database inside. An older main falls back to the database size.

7. Check network on a dead proxy

  • Before: the check raced two HTTPS IP services (15 s), then tried plain HTTP (15 s more). A proxy that never answers took about 30 s.
  • Now: a plain TCP connection to the proxy itself (opened and closed at once) runs alongside.
    • If the proxy refuses, cannot be found, or does not answer within 8 s, the check stops with that reason: "The proxy did not answer at host:port within 8 s." / "…refused the connection…" / "The proxy host … could not be found (DNS)."
    • A reachable proxy is checked exactly as before, plain-HTTP fallback included.
  • The Quick generate gate and the health checks use the same function, so they gain the same early stop.

10. Dark mode switch

The row always says "Dark mode", and the switch is on (blue, knob right) while the dark theme is on. It is now a role="switch" with aria-checked. English and Spanish.

14. SoftGlaze AI tools

  • canRotate: compactProxy also reports it for DataImpulse sticky proxies, which rotate_proxy_ip already rotated through the vendor's API. It uses the same rule as main's isDataImpulseSticky; a test keeps the two equal.
  • Firefox WebRTC: the profile view says "Off (Firefox profiles always run with WebRTC off; saved setting X applies on Chromium)" instead of the setting.
  • Rotate by profile: rotate_proxy_ip takes profileId as well as proxyId.
    • By profile, the registry checks access to the profile (a "use only" share is enough) and names it in the approval.
    • The rotation then runs through the window's Rotate IP on a profile row (rotateProfileProxyIp: profiles.launch, profile access, rotateProxyIp's gates, logged on the profile).
    • By proxy id, the pool rule is unchanged.
    • rotateProfileProxyIp is added to the AI layer's dependency whitelist.
  • Legacy rotation links: a workspace restore now runs the one-time pass on the restored database in the same run. Its Setting still keeps it to once per link.

Behaviour changes per role (for the release notes)

Area Owner Admin Manager Operator
Spanish: role name "Gerente" for Managers everywhere Same Same Same
Spanish: editor choices, summary, permissions, Browsers, AI lines, footer Spanish (were English) Same Same Same
Spanish: Settings / Batch import / pool names One term each Same Same Same
English editor summary OS row "Windows (all versions)" (was "Windows All Windows") Same Same Same
Delete proxies confirmation Says profiles wait for a proxy Same Same (proxies.manage) Same
Backup message File size n/a (Owner only) n/a n/a
Check network / health check on a dead proxy Fails within 8 s (was ~30 s) Same Same Same
Sidebar "Dark mode" switch On in the dark theme Same Same Same
SoftGlaze AI rotate_proxy_ip by profile New New n/a (AI tokens are Admin and up) n/a
SoftGlaze AI after a workspace restore Legacy links adopted in the same run n/a n/a n/a
Microsoft Store page Lists Spanish as a package language n/a n/a n/a

How it was verified

  • npm test:
    • Before: 1799 tests, 1799 pass (origin/main c5a50c8).
    • After: 1817 tests, 1817 pass, 0 fail.
    • New tests: 18 in test/spanishRound8.test.js:
      • en/es key parity for every namespace;
      • the Spanish terms, and every editor choice having a label equal to its value in English;
      • every permission action in both languages, and the English AI "where" templates equal to main's text for every client;
      • the footer default being the one main seeds, the theme switch, and the delete texts against main's behaviour;
      • backupKb, testProxyConnectivity with real loopback TCP (a refused port, a silent server, a stood-in failed probe; the dead case returns in under 1 s);
      • compactProxy against main's isDataImpulseSticky, detailedProfile, rotate_proxy_ip's handler and targets;
      • workspaceRestore adopting a legacy link on the restored database after the startup pass already ran;
      • the Store config.
    • Against origin/main: 17 of the 18 fail. The en/es key-parity guard passes on both.
    • Existing test kept passing by a whitelist entry: aiEngine's whitelist check (rotateProfileProxyIp added to ALLOWED_DEPS).
  • All three round 8 branches merged together (1.0.26: a Manager sees only their own subtree, member status log, Owner active from sign-up, encryption text with Keep me signed in #70, 1.0.26: uBlock Origin Lite installs, Macro Record captures clicks and typing, pass count, Wikipedia starter, stale download bars, autofill passwords and Mark as used, Data Vault at 1440 px #71, this one): 1838 tests, 1838 pass; vite build and check:deps pass.
  • CI steps run locally: npm run check:deps, a full vite build, node --check on every main and preload file. All pass.
  • UI, rendered alone in headless Chrome (fake preload API) at 1440 and 375 px, light and dark, English and Spanish:
    • English against origin/main:
      • 0 differing pixels: the Browsers page, the app shell at 1440 (collapsed sidebar), the AI client panel (Cursor), the Members page with a member's permission editor open, and the profile editor's Fingerprint tab at 375.
      • Differences only where intended:
        • the profile editor at 1440: only the summary's OS row (rows 254-264);
        • the expanded sidebar at 375: only the Dark mode switch.
    • Spanish:
      • the editor's buttons read Reenviar / Reemplazar / Real / Desactivado, Según la IP…;
      • the summary shows "Windows (todas las versiones)";
      • Members shows "Gerente" and the permission list in Spanish ("Abrir perfiles"…, sections "PERFILES"…);
      • the features list shows "Grupo de proxies", "Importación masiva" and "Configuración";
      • the Browsers card shows "Motor de huella digital";
      • the footer shows "Creado por el equipo de SoftGlaze";
      • Cursor's line starts "~/.cursor/mcp.json (todos los proyectos)…".
    • No page scrolls sideways in either language.
  • No Prisma client was generated (no schema change).

Before releasing

  • Re-record:
    • Spanish videos, if any are made: their screens change.
    • English: chapter 03-first-profile-part-1 / 04-first-profile-part-2 if they show the environment summary's OS row, and every chapter showing the expanded sidebar's Dark mode switch (it is now on in the dark theme).
    • Chapter 24 (AI connect) only if it shows the rotate_proxy_ip input.
  • Spanish Store screenshots: the sidebar now reads "Grupo de proxies" instead of "Proxies", and Members says "Gerente". The 10 uploaded Spanish screenshots show the old sidebar label (and some show the English editor buttons this fixes), so retake them with this build before submitting.
  • Release-note lines:
    • The Spanish app uses one name for each role and page and no longer shows English in the profile editor, permissions, Browsers page, AI connect lines or footer.
    • The Microsoft Store lists Spanish.
    • Deleting proxies says their profiles need a new one.
    • The backup message shows the file's size.
    • Check network fails within 8 s on a proxy that does not answer.
    • The Dark mode switch shows its real state.
    • SoftGlaze AI can rotate the proxy of a profile shared with you and sees DataImpulse sticky proxies as rotatable.
  • No new dependencies. Nothing in licensing-server/, tenant config, .env, keys or certificates was touched.

Noticed, not fixed

  • Check network: when the probe stops the check early, the two HTTPS requests already sent through the proxy end on their own timeouts (≤15 s) in the background. Nothing waits for them.
  • shell.lightMode is no longer used (the row always says "Dark mode"); the key is kept in both languages.
  • Third-party menu names (Cursor's, VS Code's and Cline's own settings paths) stay in English in the Spanish "where" lines, because those apps show them in English.

…oxy, the backup file's size, SoftGlaze AI rotation by profile

- Store package: electron-builder.store.js declares en-US and es, so the Store lists Spanish next to
  the Spanish listing. build-store.js's manifest fix-up rewrites only the TargetDeviceFamily versions,
  so both <Resource Language> lines pass through; it now prints the package languages after a build.
- Check network: a plain TCP probe of the proxy runs alongside the IP services. A proxy that does not
  accept a connection fails within 8 s (refused, not found or no answer, named as such) instead of
  waiting out both 15 s stages, about 30 s. A reachable proxy is checked exactly as before, plain-HTTP
  fallback included.
- Workspace backup returns the saved file's size (fileBytes); the message showed the database inside it.
- SoftGlaze AI:
  - compactProxy reports canRotate for DataImpulse sticky proxies too (rotate_proxy_ip already
    rotated them through the vendor's API), with main's isDataImpulseSticky rule.
  - The profile view says WebRTC is off for Firefox profiles, with the saved setting for Chromium.
  - rotate_proxy_ip takes a profileId as well as a proxyId: by profile it rotates the proxy that
    profile uses, a "use only" share included, through the window's Rotate IP on a profile row
    (profiles.launch, profile access, logged on the profile). By proxy id the pool rule is unchanged.
  - A workspace restore runs the one-time pass for rotation links imported before 1.0.26 on the
    restored database in the same run (its Setting still keeps it once per link).
- The AI client snippets pass the values their "where" line needs (whereVars), so the window can show
  that line in its own language; the English text main builds is unchanged.
…port and the proxy pool, no English left in the Spanish window, honest delete-proxy text, the Dark mode switch

- Spanish: the Manager role is "Gerente" everywhere (the Members page said "Responsable", the AI token
  dialog "Gestor"), as in the Store listing. Settings is "Configuración" (no "Ajustes"), Batch import
  "Importación masiva" (no "por lotes"), the proxy pool "Grupo de proxies" (no "Conjunto de proxies",
  and the sidebar no longer says just "Proxies"); a group inside the pool is a "grupo".
- English left in the Spanish window, now translated:
  - the profile editor's choice buttons (Forward / Replace / Real / Disabled, Based on IP, Custom,
    Block, Based on Language...) and the environment summary. The stored values stay English; English
    labels equal them, so the English editor is unchanged except the summary's OS row, which reads
    "Windows (all versions)" instead of "Windows All Windows";
  - the permission list and its sections on the Members page, by action key (main's catalog labels
    are the English text);
  - the Browsers page's fingerprint engine card;
  - each AI client's "where" line (Cursor's was reported; all were English);
  - the default footer, while the workspace keeps it (a footer the Super Admin wrote is shown as is).
- Delete proxies (selected, or all filtered): the confirmation said linked profiles keep working; since
  1.0.26 they lose the proxy and do not launch until they get another one, which it now says.
- Backup: the saved message shows the file's own size, in KB as Explorer shows it.
- Sidebar: the theme row always says "Dark mode", and its switch is on while the dark theme is on (it
  read "Dark mode" with the switch off). It is a role="switch" with aria-checked.
…nish

# Conflicts:
#	src/renderer/i18n/locales/es/cmpSettingsC.json
@softglazee
softglazee merged commit 47e60d2 into main Nov 10, 2026
6 checks passed
@softglazee
softglazee deleted the fix/1.0.26-round8-spanish branch November 10, 2026 17:18
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