From 056079781b1e54fa9b8bbe7129c3167f3d8a1bff Mon Sep 17 00:00:00 2001 From: evmcod <214792911+EVMCOD@users.noreply.github.com> Date: Fri, 30 Oct 2026 11:11:51 +0100 Subject: [PATCH] fix(ui): say "this computer", not "this Mac", where it is true everywhere The first Linux and Windows smoke tests showed the welcome page telling users their key "is stored in the Keychain of this Mac". It now says the system keychain (the Keychain on a Mac) or an encrypted file, in English and Spanish. The other cross-platform "this Mac" / "este Mac" in the web UI (Connectors, Learning, feedback buttons, Servers, Media, the connectors guide) become "this computer" / "este ordenador". Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 1 + ops_dashboard/web/connectors-guide.js | 8 ++++---- ops_dashboard/web/connectors.html | 4 ++-- ops_dashboard/web/connectors.js | 8 ++++---- ops_dashboard/web/feedback-buttons.js | 8 ++++---- ops_dashboard/web/learning.html | 6 +++--- ops_dashboard/web/learning.js | 12 ++++++------ ops_dashboard/web/media.html | 2 +- ops_dashboard/web/servers.html | 4 ++-- ops_dashboard/web/welcome.html | 2 +- ops_dashboard/web/welcome.js | 2 +- 11 files changed, 29 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 10575c0..aced1af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ User-facing changes to ConductLoop (the desktop app and its local server), newes ## Unreleased +- **Copy that is true on every system.** The welcome page said the AI key "is stored in the Keychain of this Mac", also on Linux and Windows (seen in the first Linux and Windows smoke tests). It now says the system keychain (the Keychain on a Mac) or an encrypted file. The same for the other "this Mac" / "este Mac" in the interface (Connectors, Learning, the feedback buttons, Servers, Media): "this computer" / "este ordenador". Nothing changes on the Mac except the wording. - CI only: the Linux bundles workflow now **starts the AppImage and the .deb** it builds, on Ubuntu 22.04 (the build image) and on ubuntu-latest, on a virtual display with an empty HOME and no keyring. `scripts/linux-smoke.sh` checks that the local server answers, that `/api/platform` says Linux with the in-app browser off, that it is a first run with the welcome page, that a ConductLoop window is on screen, and that closing the app stops the server; screenshots and logs are kept for 3 days. Until now the Linux packages were only built, never run. The script also works by hand on a Linux machine. - CI only: a "Windows (compile and tests)" workflow checks on every relevant pull request that the desktop wrapper still compiles for Windows and that the Windows-safe part of the Python tests passes there. It builds no installer, signs nothing, publishes nothing and is not a required check. Windows is still not supported. - Windows: a CI workflow, "Windows bundles", builds the NSIS installer and the .msi on `windows-latest` and keeps them for 3 days as downloadable artifacts. It only runs when started by hand (it is not a check of pull requests), signs nothing and publishes nothing. CI only: the app does not change. diff --git a/ops_dashboard/web/connectors-guide.js b/ops_dashboard/web/connectors-guide.js index 63d1483..9efacaf 100644 --- a/ops_dashboard/web/connectors-guide.js +++ b/ops_dashboard/web/connectors-guide.js @@ -26,7 +26,7 @@ var UI = { es: { title: 'Guía: crea tu propia app OAuth (BYOK)', - intro: 'En esta versión cada conector usa el client ID de una app OAuth que creas tú en tu propia cuenta del proveedor. ConductLoop no tiene servidor ni app compartida: el token va del proveedor a este Mac y se guarda en el llavero.', + intro: 'En esta versión cada conector usa el client ID de una app OAuth que creas tú en tu propia cuenta del proveedor. ConductLoop no tiene servidor ni app compartida: el token va del proveedor a este ordenador y se guarda en el llavero.', legend: '⚠️ = paso que no se ha podido confirmar en la documentación oficial del proveedor. Compruébalo en su consola antes de fiarte.', steps: 'Pasos', redirect: 'Redirect (URI de redirección)', scopes: 'Permisos mínimos (scopes)', read: 'lectura', write: 'escritura (más adelante, siempre con confirmación)', warnings: 'Advertencias', @@ -34,7 +34,7 @@ }, en: { title: 'Guide: create your own OAuth app (BYOK)', - intro: 'In this version every connector uses the client ID of an OAuth app you create in your own provider account. ConductLoop has no server and no shared app: the token goes from the provider to this Mac and is stored in the keychain.', + intro: 'In this version every connector uses the client ID of an OAuth app you create in your own provider account. ConductLoop has no server and no shared app: the token goes from the provider to this computer and is stored in the keychain.', legend: '⚠️ = step that could not be confirmed in the provider\u2019s official documentation. Check it in their console before relying on it.', steps: 'Steps', redirect: 'Redirect URI', scopes: 'Minimal permissions (scopes)', read: 'read', write: 'write (later, always with confirmation)', warnings: 'Warnings', @@ -84,8 +84,8 @@ warnings: [ { es: 'Gmail: gmail.readonly (igual que gmail.compose, gmail.modify y gmail.metadata) es un scope RESTRINGIDO. Para publicar una app con él Google exige la verificación de scopes restringidos y, si los datos se guardan o transmiten en servidores, una evaluación de seguridad. Con tu propia app en «Testing» no hace falta verificarla, pero verás la pantalla de «app no verificada».', en: 'Gmail: gmail.readonly (like gmail.compose, gmail.modify and gmail.metadata) is a RESTRICTED scope. Publishing an app with it requires restricted-scope verification and, if data is stored or transmitted on servers, a security assessment. Your own app in "Testing" needs no verification, but you will see the "unverified app" screen.' }, - { es: 'ConductLoop no envía tus correos a ningún servidor (todo se queda en este Mac). Si eso basta para que Google no exija la evaluación de seguridad a una app 100 % local no está documentado.', - en: 'ConductLoop does not send your email to any server (everything stays on this Mac). Whether that exempts a 100 % local app from the security assessment is not documented.', unverified: true }, + { es: 'ConductLoop no envía tus correos a ningún servidor (todo se queda en este ordenador). Si eso basta para que Google no exija la evaluación de seguridad a una app 100 % local no está documentado.', + en: 'ConductLoop does not send your email to any server (everything stays on this computer). Whether that exempts a 100 % local app from the security assessment is not documented.', unverified: true }, { es: 'Tope de usuarios: en «Testing» caben como máximo 100 usuarios de prueba. Una app sin verificar que muestra la pantalla de «app no verificada» admite 100 usuarios nuevos en total durante toda la vida del proyecto, y ese tope no se puede reiniciar. Por eso cada usuario crea su propia app.', en: 'User cap: "Testing" allows at most 100 test users. An unverified app that shows the "unverified app" screen accepts 100 new users in total over the whole life of the project, and the cap cannot be reset. That is why every user creates their own app.' }, { es: 'En «Testing», la autorización (y el refresh token) caduca a los 7 días del consentimiento: tendrás que volver a pulsar «Conectar» cada semana.', diff --git a/ops_dashboard/web/connectors.html b/ops_dashboard/web/connectors.html index bbd787d..e8296fd 100644 --- a/ops_dashboard/web/connectors.html +++ b/ops_dashboard/web/connectors.html @@ -14,7 +14,7 @@

Conectores

-

Conecta tus servicios. Los tokens se guardan solo en el llavero de este Mac.

+

Conecta tus servicios. Los tokens se guardan solo en el llavero del sistema de este ordenador.