CodeNomad/docs/help/fr/remote-control.md
Pascal André 1dabb5110f
docs(help): bring the user guide back in line with the current app (#1079)
docs(help): bring the user guide back in line with the current app

The help was written on 2026-10-14 and about forty user-visible changes merged since without touching it, so several pages described controls that no longer exist: Missions still listed four playbooks and a Save step for preferences that now save on each change, the depth editor kept its old names, notifications still had their former switches, and voice input pointed to a microphone button that is not in the composer.

Every English page was re-checked claim by claim against the current labels (English UI messages) and behaviour, then the nine translations were updated to match, using each locale's own UI labels. Notable corrections: Missions (Compare two models, autosaving defaults with Apply to / Global / Reset, Subsession nesting depth, prepared hand-offs, retired-task interrupts, the named causes of "Mission Control is unavailable", standalone server support); conversations and history (reasoning/tool durations, token lines adding up the cleanup selection, presets including Nothing, timeline markers following Message content, in-place reveal of long text, Open in session, focus after send, Queue message / Steer now, Retrying); settings (notification routing table and defaults, Stats, Mode, info tips, Server setting badge, localized native menus); shortcuts (72 actions, Clear shortcut, Ctrl/Cmd+K); voice (More actions entries, Save status); files (live Workspace refresh, Show 200 more); OpenCode, install, server and updates (2.1.1 recommended, OpenCode 2 beside an older installation, version card first, private loopback listener for Missions, preview releases offered once all builds are published); providers, integrations, browser, SideCars, desktop and remote pages. Translations also repaired older drift, mainly the project-tab closing passages.

The Chat settings table header (Default state, its title, item column, the thinking row and its accessible label) was still English in eight locales; it is now translated so the help can cite what users see. AGENTS.md now asks every PR changing user-visible behavior to update the affected help pages in the same PR, since CI validates structure and links but not whether the text still matches the UI; it also corrects the needs-input notification default. USER_HELP.md no longer claims native menus stay English.

Validation: npm run test:help (all ten locales, 25 pages, heading ids unchanged), a full help build, and the i18n and transcript-visibility unit tests.
2026-10-21 14:38:29 +02:00

8.7 KiB
Raw Permalink Blame History

Contrôle à distance

Le Contrôle à distance permet à un navigateur ou client de bureau appairé d’utiliser votre backend CodeNomad actif sans ouvrir de port réseau entrant. Il ne nécessite ni mot de passe serveur, ni --host hors boucle locale, ni VPN. C’est un chemin d’accès distinct des connexions directes.

Démarrer et appairer

  1. Sur l’hôte, ouvrez Paramètres → Accès distant.
  2. Choisissez Démarrer le contrôle à distance. Attendez Prêt pour les connexions distantes ; la première utilisation peut demander du temps pour provisionner l’identité de tunnel et le certificat.
  3. Sous Connecter un autre appareil, scannez le QR code ou choisissez Copier le lien, puis ouvrez ce lien à usage unique sur l’appareil voulu.
  4. Conservez les données de site du navigateur appairé. Rouvrez l’adresse du tunnel pour vous reconnecter tant que le backend est actif.

Le lien est valable cinq minutes et réussit une seule fois. Traitez-le comme un identifiant : quiconque le consomme peut devenir un appareil appairé. Le code se trouve dans le fragment d’URL, pas dans la chaîne de requête. Créer un nouveau lien d’appairage invalide immédiatement le lien inutilisé précédent. L’arrêt, la fermeture du backend et une panne du tunnel annulent les liens d’appairage en attente.

Pour appairer un autre CodeNomad de bureau, choisissez Se connecter au serveur CodeNomad sur son accueil, collez le lien dans URL du serveur, puis choisissez Se connecter. Un lien d’appairage ouvre sa fenêtre même depuis Enregistrer, car l’ouvrir consomme le code. Seule l’origine du tunnel est enregistrée comme favori ; le code n’est pas conservé. La vérification TLS reste activée pour les liens d’appairage.

Gérer les appareils appairés

  1. Sur l’hôte, revenez à Paramètres → Accès distant → Contrôle à distance.
  2. Vérifiez Appareils appairés et leur heure Dernière activité. Chaque appareil porte le nom de la plateforme et du navigateur qui l’ont appairé, par exemple iPhone · Safari.
  3. Choisissez Révoquer pour un appareil qui ne doit plus se connecter.

La révocation termine les connexions HTTP/SSE actuelles de cet appareil ainsi que son accès futur. Appairez-le à nouveau avec un nouveau lien pour rétablir l’accès. Un appareil expire après 30 jours sans utilisation. À la limite de 32 appareils, un nouvel appairage remplace l’appareil vu le moins récemment et ferme ses connexions.

Le backend conserve des hachages d’identifiants, pas les identifiants d’appareil bruts, dans remote-control-devices.json sous sa base de configuration. Le client détient un cookie d’appareil limité à l’hôte, Secure, HttpOnly, SameSite=Lax. Sa durée côté navigateur peut dépasser la limite serveur de 30 jours d’inactivité ; le registre fait autorité. Effacer les données de site, changer de profil navigateur ou utiliser la navigation privée peut nécessiter un nouvel appairage.

Changer le mot de passe d’accès direct ne révoque pas les appareils. Arrêter le contrôle à distance déconnecte le tunnel mais conserve la liste des appareils ; utilisez Révoquer pour retirer une autorisation.

Réappairer sans perdre sa place

  1. Si le client affiche Appairer à nouveau cet appareil, laissez cette page ouverte.
  2. Sur l’hôte, choisissez Créer un nouveau lien d’appairage et ouvrez-le dans le même navigateur/profil client. Pour un serveur de bureau enregistré, reconnectez-vous avec le lien récent afin de réutiliser le stockage existant de sa fenêtre distante.
  3. Revenez à la page en attente et choisissez Vérifier la connexion ; la vérification se refait aussi quand la page reprend le focus.

La récupération préserve la page ouverte et les brouillons ; elle ne rejoue pas une action échouée. Vérifiez si un envoi, une réponse ou une suppression a pris effet avant de réessayer. Un mot de passe d’accès direct ne peut pas récupérer un appairage de Contrôle à distance.

Disponibilité et durée de vie

Action/état Effet
Démarrer le contrôle à distance Connecte ce backend et mémorise le choix pour les prochains lancements.
Fermer le navigateur distant N’arrête pas le backend hôte et ne révoque pas l’appareil.
Arrêter le contrôle à distance Déconnecte l’accès et efface la reprise automatique au lancement ; conserve les appareils enregistrés.
Arrêt du backend / fermeture de la dernière fenêtre de bureau et sortie de l’application Le Contrôle à distance passe hors ligne. Le service OpenCode partagé peut rester actif, mais ne peut pas servir cette interface via un backend arrêté.
Lancement après avoir laissé le Contrôle à distance démarré Reconnecte en arrière-plan sans émettre de nouveau lien. Les installations jamais démarrées ne s’activent pas d’elles-mêmes.
Reprise échouée ou erreur fatale du tunnel Le choix mémorisé reste et l’hôte affiche l’erreur ; l’icône d’actualisation de la carte Contrôle à distance relit son état. Démarrer le contrôle à distance réessaie aussitôt ; Arrêter le contrôle à distance efface le choix. Sinon, un lancement ultérieur réessaie.

La reprise automatique au lancement se limite à un backend par répertoire de configuration. Ne démarrez pas d’hôtes concurrents avec la même configuration pour obtenir une capacité de tunnel supplémentaire. Pour un hôte devant rester accessible après la fermeture du bureau, déployez un serveur autonome géré séparément ; le Contrôle à distance n’est pas un démon indépendant.

Surfaces disponibles et indisponibles

Les appareils appairés peuvent utiliser les API ordinaires de projet/conversation, envoyer des prompts, inspecter les fichiers et répondre aux permissions/Forms sous les mêmes contrôles de propriété. L’appairage donne un accès puissant, pas un lien de partage en lecture seule. Il n’accorde jamais les privilèges de boucle locale, même si le tunnel transfère le trafic en interne sur l’hôte.

Surface Via le Contrôle à distance
Interface authentifiée normale, espaces de travail, conversations et SSE Disponible à un appareil appairé.
Connexion/déconnexion par mot de passe, changements de mot de passe, initialisation locale par jeton Indisponibles ; les identifiants d’appareil sont requis même si l’authentification directe est désactivée.
État du Contrôle à distance Lisible par un appareil appairé ; la gestion est indisponible. Démarrage/arrêt, création d’appairage, liste et révocation des appareils restent sur le chemin d’accès de l’hôte.
Gestion des fenêtres distantes/serveurs de bureau et routes proxy Indisponibles (/api/remote-servers/, /api/remote-proxy/).
Proxy de contenu SideCar Indisponible (/sidecars/). Cela ne signifie pas que toutes les API SideCar sont bloquées : les clients appairés peuvent toujours accéder aux API d’enregistrement /api/sidecars.
Contenu d’aperçu et pont d’automatisation Indisponibles (/previews/, /api/opencode-plugin/). Les capacités natives de bureau ne deviennent pas des capacités navigateur.
Mises à niveau WebSocket Indisponibles sur l’entrée du Contrôle à distance.

Utilisez une connexion directe convenablement protégée si un parcours nécessite une surface proxy/WebSocket bloquée. Le Contrôle à distance ne bascule pas automatiquement vers ce chemin.

Relais et confidentialité

CodeNomad utilise OpenTunnel et réserve une route aléatoire sur l’identité de tunnel par défaut partagée de la machine. L’arrêt libère le pont CodeNomad, pas l’identité partagée utilisée par d’autres applications.

TLS se termine dans le backend CodeNomad. Le relais transfère du texte chiffré et ne peut pas lire le contenu applicatif, mais peut observer les noms d’hôte, horaires de connexion et volumes de trafic. Le certificat/la clé privée du tunnel restent sur l’hôte. Protégez le stockage du tunnel et la configuration CodeNomad comme des identifiants ; une adresse impossible à deviner n’est pas une autorisation.

CODENOMAD_REMOTE_CONTROL_API sélectionne une API OpenTunnel auto-hébergée ; non définie, elle utilise le service hébergé. Cela change le déploiement du tunnel, pas les exigences d’appairage ni les surfaces bloquées. Voir Sécurité pour le traitement des identifiants et diagnostics.