cmux/web/messages/fr.json
Lawrence Chen 84af32c56e
Add cmux omo command for oh-my-openagent integration (#2087)
* Add `cmux omo` command for OpenCode + oh-my-openagent integration

Same pattern as `cmux claude-teams`: creates a tmux shim so
oh-my-openagent's TmuxSessionManager spawns agents as native cmux
splits instead of tmux panes. Sets TMUX/TMUX_PANE env vars, prepends
shim to PATH, and execs into opencode.

Closes https://github.com/manaflow-ai/cmux/issues/2085

* Auto-install oh-my-opencode plugin when running cmux omo

Before launching opencode, cmux omo now:
- Checks if oh-my-opencode is registered in ~/.config/opencode/opencode.json
- If not, creates/updates the config with the plugin entry
- Checks if the npm package is installed in node_modules
- If not, runs bun add (or npm install) to install it
- Then proceeds with tmux shim setup and exec

* Use shadow config dir to avoid modifying user's opencode setup

Instead of writing directly to ~/.config/opencode/opencode.json,
cmux omo now creates a shadow config at ~/.cmuxterm/omo-config/ that
layers oh-my-opencode on top of the user's existing config. Symlinks
node_modules, package.json, bun.lock, and plugin config from the
original dir. Sets OPENCODE_CONFIG_DIR to the shadow directory.

Running plain `opencode` remains unaffected.

* Add Agent Integrations docs section with Claude Code Teams and oh-my-opencode pages

Adds sectioned sidebar navigation to the docs site. The new Agent
Integrations section contains separate pages for cmux claude-teams and
cmux omo, documenting usage, tmux shim mechanics, directory layout,
environment variables, and the shadow config approach. Both pages
include a nightly-only warning. Full English and Japanese translations,
nav item keys added to all 19 locales.

* Remove uppercase from sidebar section headers

* Add more spacing above and below sidebar section headers

* Enable tmux mode in oh-my-opencode config, improve docs

- cmux omo now writes tmux.enabled=true to the shadow oh-my-opencode.json
  config. Without this, oh-my-openagent's TmuxSessionManager won't spawn
  visual panes even though $TMUX is set (the config defaults to false).
- Nightly warnings now link to /nightly instead of generic text.
- Added "What you get" section to oh-my-opencode docs explaining the
  visual pane behavior (auto-layout, idle cleanup, queueing).
- Added tmux.enabled step to first-run and how-it-works sections.

* Add terminal-notifier shim to route oh-my-openagent notifications to cmux

oh-my-openagent sends macOS notifications via terminal-notifier
(args: -title <t> -message <m> [-activate <id>]). The shim in
~/.cmuxterm/omo-bin/terminal-notifier intercepts these calls and
routes them through cmux notify, so notifications appear in cmux's
sidebar panel instead of as raw macOS notifications.

* Add pane geometry to tmux-compat for oh-my-openagent grid planning

oh-my-openagent's TmuxSessionManager needs pane geometry (columns,
rows, position, window dimensions) to decide where to spawn agent
panes. Without this data, agents run headlessly.

Server side:
- pane.list v2 response now includes pixel_frame, cell_size, columns,
  rows per pane, plus container_frame at the top level
- Uses BonsplitController.layoutSnapshot() for pixel geometry and
  ghostty_surface_size() for terminal grid dimensions

CLI side:
- tmuxEnrichContextWithGeometry() computes character-cell positions
  from pixel frames and cell dimensions for tmux format variables
  (pane_width, pane_height, pane_left, pane_top, pane_active,
  window_width, window_height)
- list-panes now resolves pane targets (%uuid) via tmuxResolvePaneTarget
  instead of failing with "Workspace not found"
- display-message enriched with geometry for format strings like
  #{pane_width},#{window_width}
- tmux -V now returns "tmux 3.4" (needed by oh-my-openagent's
  tmux-path-resolver verification)

* Add socket tests for tmux-compat pane geometry

6 tests verifying the geometry enrichment works end-to-end:
- pane.list returns pixel_frame, columns, rows, cell_size, container_frame
- tmux -V returns version string
- list-panes -F renders geometry format variables as integers
- list-panes -t %<uuid> resolves pane targets
- display -p renders pane_width and window_width
- After split, two panes have different positions and halved widths

All 6 pass on macmini (cmux-macmini).

* Handle tmux -V in shim script directly (no socket needed)

oh-my-openagent's tmux-path-resolver runs tmux -V to verify the binary
works. The __tmux-compat handler requires a socket connection, which
may not be established at verification time. Handle -V in the bash
shim directly to avoid the socket dependency.

* Lower default tmux pane min widths for cmux omo

oh-my-openagent defaults: main_pane_min_width=120, agent_pane_min_width=40,
requiring 161+ columns. Most terminal windows are narrower, causing
decideSpawnActions to return canSpawn=false and defer agents forever.

cmux omo now sets: main_pane_min_width=60, agent_pane_min_width=30,
main_pane_size=50, requiring only 91 columns. Also moved tmux -V
handling into the bash shim to avoid needing a socket connection for
the version check.

* Resolve merge conflicts with main (main-vertical layout, focus param)

- Keep upstream main-vertical layout anchoring from #2119
- Keep upstream focus param (v2Bool) instead of no_focus
- Combine with our -d flag handling: -d sets focus=false
- Include customCommands nav item from main

* Implement select-layout equalize and resize-pane absolute width

When oh-my-openagent spawns agent panes, it calls select-layout
main-vertical after each split to redistribute panes evenly, then
resize-pane -x <columns> to set the main pane width. Both were
previously no-ops, causing cascading uneven splits.

Server side:
- Add workspace.equalize_splits v2 API that calls the existing
  TabManager.equalizeSplits (sets all dividers to 0.5)

CLI side:
- select-layout now calls workspace.equalize_splits before tracking
  main-vertical state
- resize-pane -x <columns> without directional flags now computes
  the pixel delta from current to desired width and resizes accordingly

* Fix equalize to use proportional divider positions

The previous equalize set all dividers to 0.5, which in a right-
recursive binary tree (from successive splits) gives 50/25/12.5/6.25%
instead of equal sizes.

New algorithm counts leaf panes on each side of each split and sets
the divider to N_left / (N_left + N_right). For 5 panes in a chain:
1/5, 1/4, 1/3, 1/2, giving each pane exactly 20%.

* Fix select-layout main-vertical to only equalize vertical splits

The proportional equalize was treating the top-level horizontal split
(main vs agent column) the same as vertical splits, setting the main
pane to 1/6 of the window with 5 agents.

For main-vertical layout, only equalize vertical splits (the agent
column), leaving the horizontal main/agent divider untouched. The
subsequent resize-pane -x handles the main pane width.

workspace.equalize_splits now accepts an optional orientation filter
("vertical" or "horizontal") to scope which splits get equalized.

* Re-equalize agent column after kill-pane

* Address PR review comments

- Fix cmux omo --help: remove omo from the help-bypass guard so
  --help shows usage text instead of trying to launch opencode
- Don't overwrite unreadable opencode.json: fail with an error
  instead of silently resetting to empty config
- Drain installer pipes concurrently before waitUntilExit to
  prevent deadlock from full pipe buffers during bun/npm install

---------

Co-authored-by: Lawrence Chen <lawrencecchen@users.noreply.github.com>
2026-03-26 16:07:59 -07:00

670 lines
50 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"meta": {
"title": "cmux — Le terminal conçu pour le multitâche",
"description": "Terminal macOS natif basé sur Ghostty. Fonctionne avec Claude Code, Codex, OpenCode, Gemini CLI, Kiro, Aider et tout outil CLI. Onglets verticaux, anneaux de notification, panneaux divisés et une API socket.",
"ogDescription": "Terminal macOS natif pour les agents de code IA. Fonctionne avec Claude Code, Codex, OpenCode, Gemini CLI, Kiro, Aider et tout outil CLI."
},
"common": {
"downloadForMac": "Télécharger pour Mac",
"viewOnGitHub": "Voir sur GitHub",
"closeMenu": "Fermer le menu",
"openMenu": "Ouvrir le menu",
"toggleTheme": "Changer de thème",
"backToBlog": "Retour au blog",
"readTheDocs": "Lire la documentation",
"viewChangelog": "Voir le changelog"
},
"nav": {
"docs": "Docs",
"blog": "Blog",
"changelog": "Changelog",
"community": "Communauté",
"github": "GitHub"
},
"footer": {
"product": "Produit",
"resources": "Ressources",
"legal": "Mentions légales",
"social": "Réseaux sociaux",
"blog": "Blog",
"community": "Communauté",
"docs": "Docs",
"changelog": "Changelog",
"privacy": "Confidentialité",
"terms": "Conditions",
"eula": "EULA",
"github": "GitHub",
"twitter": "X / Twitter",
"discord": "Discord",
"contact": "Contact",
"nightly": "Nightly",
"copyright": "© {year} Manaflow",
"language": "Langue"
},
"home": {
"taglinePrefix": "Le terminal conçu pour ",
"typingCodingAgents": "agents de code",
"typingMultitasking": "multitâche",
"subtitle": "Application macOS native basée sur Ghostty. Onglets verticaux, notifications quand les agents ont besoin d'attention, panneaux divisés et une API socket pour l'automatisation.",
"features": "Fonctionnalités",
"faq": "FAQ",
"communitySection": "Communauté",
"feature": {
"verticalTabs": "Onglets verticaux",
"verticalTabsDesc": " : la barre latérale affiche la branche git, le répertoire de travail, les ports et le texte de notification",
"notificationRings": "Anneaux de notification",
"notificationRingsDesc": " : les panneaux s'illuminent quand les agents ont besoin d'attention",
"inAppBrowser": "Navigateur intégré",
"inAppBrowserDesc": " : ouvrez un navigateur à côté de votre terminal avec une API scriptable",
"splitPanes": "Panneaux divisés",
"splitPanesDesc": " : divisions horizontales et verticales dans chaque onglet",
"scriptable": "Scriptable",
"scriptableDesc": " : CLI et API socket pour l'automatisation et le scripting",
"gpuAccelerated": "Accélération GPU",
"gpuAcceleratedDesc": " : propulsé par libghostty pour un rendu fluide",
"lightweight": "Léger",
"lightweightDesc": " : Swift + AppKit natif, sans Electron",
"keyboardShortcuts": "Raccourcis clavier",
"keyboardShortcutsDesc": " : <link>raccourcis complets</link> pour les espaces de travail, les divisions, le navigateur et plus"
},
"faqGhosttyQ": "Quel est le lien entre cmux et Ghostty ?",
"faqGhosttyA": "cmux n'est pas un fork de Ghostty. Il utilise <link>libghostty</link> comme bibliothèque pour le rendu du terminal, de la même manière que les applications utilisent WebKit pour les vues web. Ghostty est un terminal autonome ; cmux est une application différente construite sur son moteur de rendu.",
"faqPlatformQ": "Quelles plateformes sont supportées ?",
"faqPlatformA": "macOS uniquement, pour le moment. cmux est une application native Swift + AppKit.",
"faqAgentsQ": "Avec quels agents de code cmux fonctionne-t-il ?",
"faqAgentsA": "Tous. cmux est un terminal, donc tout agent qui fonctionne dans un terminal marche directement : Claude Code, Codex, OpenCode, Gemini CLI, Kiro, Aider, Goose, Amp, Cline, Cursor Agent, et tout ce que vous pouvez lancer depuis la ligne de commande.",
"faqNotificationsQ": "Comment fonctionnent les notifications ?",
"faqNotificationsA": "Quand un processus a besoin d'attention, cmux affiche des anneaux de notification autour des panneaux, des badges non lus dans la barre latérale, un popover de notification et une notification bureau macOS. Ceux-ci se déclenchent automatiquement via les séquences d'échappement standard du terminal (OSC 9/99/777), ou vous pouvez les déclencher avec le <cliLink>CLI cmux</cliLink> et les <hooksLink>hooks Claude Code</hooksLink>.",
"faqShortcutsQ": "Puis-je personnaliser les raccourcis clavier ?",
"faqShortcutsA": "Les raccourcis du terminal sont lus depuis votre fichier de configuration Ghostty (<configPath>~/.config/ghostty/config</configPath>). Les raccourcis spécifiques à cmux (espaces de travail, divisions, navigateur, notifications) peuvent être personnalisés dans les Réglages. Voir les <link>raccourcis par défaut</link> pour la liste complète.",
"faqTmuxQ": "Comment se compare-t-il à tmux ?",
"faqTmuxA": "tmux est un multiplexeur de terminaux qui fonctionne dans n'importe quel terminal. cmux est une application macOS native avec une interface graphique : onglets verticaux, panneaux divisés, navigateur intégré et API socket sont tous intégrés. Pas besoin de fichiers de configuration ou de touches préfixes.",
"faqFreeQ": "cmux est-il gratuit ?",
"faqFreeA": "Oui, cmux est gratuit. Le code source est disponible sur <link>GitHub</link>."
},
"community": {
"title": "Communauté",
"description": "Échangez avec d'autres utilisateurs de cmux et l'équipe derrière le projet.",
"discord": "Discord",
"discordAction": "Rejoindre notre Discord",
"discordDesc": "Discutez avec la communauté, obtenez de l'aide et partagez vos retours",
"githubAction": "Voir sur GitHub",
"githubDesc": "Mettez une étoile, signalez des problèmes et contribuez",
"twitter": "Twitter",
"twitterAction": "Suivre sur X",
"twitterDesc": "Mises à jour, annonces et astuces",
"youtube": "YouTube",
"youtubeAction": "S'abonner",
"youtubeDesc": "Démos, tutoriels et présentations",
"linkedin": "LinkedIn",
"linkedinAction": "Nous suivre",
"linkedinDesc": "Actualités de l'entreprise et mises à jour techniques",
"metaTitle": "Communauté — cmux",
"metaDescription": "Rejoignez la communauté cmux sur Discord, Twitter, GitHub et plus"
},
"blog": {
"title": "Blog",
"layoutTitle": "cmux blog",
"metaTitle": "Blog",
"metaDescription": "Actualités et mises à jour de l'équipe cmux",
"description": "Actualités et mises à jour de l'équipe cmux",
"posts": {
"cmdShiftU": {
"title": "Cmd+Shift+U",
"summary": "Comment Cmd+Shift+U permet de naviguer entre les agents terminés dans les différents espaces de travail de cmux.",
"date": "4 mars 2026",
"p1": "Ma fonctionnalité cmux préférée est Cmd+Shift+U. J'ai 17 espaces de travail ouverts en ce moment, chacun exécutant un agent. Avant, je cliquais à travers les onglets et le panneau de notifications pour savoir ce qui était terminé. Taper est plus rapide.",
"p2": "Cmd+Shift+U saute à la <link>notification</link> non lue la plus récente. En pratique, cela signifie le dernier agent qui a terminé. Il bascule vers le bon espace de travail, met le focus sur le panneau exact, le fait clignoter pour que vous voyiez où regarder, et le marque comme lu. Si la notification vient d'une autre fenêtre, cette fenêtre passe au premier plan."
},
"zenOfCmux": {
"title": "La philosophie de cmux",
"summary": "cmux est une brique de base, pas une solution. Il vous donne des éléments composables et votre workflow vous appartient.",
"date": "27 février 2026",
"p1": "cmux n'impose pas aux développeurs comment utiliser leurs outils. C'est un terminal et un navigateur avec un CLI, le reste dépend de vous.",
"p2": "cmux est une brique de base, pas une solution. Il vous donne un terminal, un navigateur, des notifications, des espaces de travail, des divisions, des onglets et un CLI pour tout contrôler. cmux ne vous impose pas une manière rigide d'utiliser les agents de code. Ce que vous construisez avec ces briques vous appartient.",
"p3": "Les meilleurs développeurs ont toujours construit leurs propres outils. Personne n'a encore trouvé la meilleure façon de travailler avec les agents, et les équipes qui construisent des produits fermés ne l'ont certainement pas trouvée non plus. Les développeurs les plus proches de leurs propres codebases la trouveront en premier.",
"p4": "Donnez à un million de développeurs des briques composables et ils trouveront collectivement les workflows les plus efficaces plus vite que n'importe quelle équipe produit ne pourrait les concevoir."
},
"showHnLaunch": {
"title": "Lancement de cmux sur Show HN",
"summary": "cmux a atteint la 2e place sur Hacker News, a été partagé par Mitchell Hashimoto et est devenu viral au Japon.",
"date": "21 février 2026",
"intro": "Nous avons publié cmux sur <link>Show HN</link> le 19 février :",
"blockquote1": "Je lance beaucoup de sessions Claude Code et Codex en parallèle. J'utilisais Ghostty avec plusieurs panneaux divisés, et je comptais sur les notifications macOS natives pour savoir quand un agent avait besoin de moi. Mais le corps de la notification de Claude Code dit toujours juste « Claude is waiting for your input » sans contexte, et avec assez d'onglets ouverts, je ne pouvais même plus lire les titres.",
"blockquote2": "J'ai essayé quelques orchestrateurs de code mais la plupart étaient des apps Electron/Tauri et les performances me gênaient. Je préfère aussi simplement le terminal puisque les orchestrateurs GUI vous enferment dans leur workflow. J'ai donc construit cmux comme une application macOS native en Swift/AppKit. Il utilise libghostty pour le rendu du terminal et lit votre configuration Ghostty existante pour les thèmes, polices, couleurs et plus.",
"blockquote3": "Les principaux ajouts sont la barre latérale et le système de notifications. La barre latérale a des onglets verticaux qui affichent la branche git, le répertoire de travail, les ports en écoute et le dernier texte de notification pour chaque espace de travail. Le système de notifications capte les séquences du terminal (OSC 9/99/777) et dispose d'un CLI (cmux notify) que vous pouvez connecter aux hooks d'agents pour Claude Code, OpenCode, etc. Quand un agent attend, son panneau reçoit un anneau bleu et l'onglet s'allume dans la barre latérale, pour que je puisse voir lequel a besoin de moi parmi les divisions et les onglets. Cmd+Shift+U saute au plus récent non lu.",
"blockquote4": "Le navigateur intégré a une API scriptable. Les agents peuvent capturer l'arbre d'accessibilité, obtenir des références d'éléments, cliquer, remplir des formulaires, exécuter du JS et lire les logs de la console. Vous pouvez diviser un panneau navigateur à côté de votre terminal et faire interagir Claude Code directement avec votre serveur de développement.",
"blockquote5": "Tout est scriptable via le CLI et l'API socket : créer des espaces de travail/onglets, diviser des panneaux, envoyer des frappes, ouvrir des URLs dans le navigateur.",
"hitNumber2": "Au pic, il a atteint la 2e place sur Hacker News. Mitchell Hashimoto l'a partagé :",
"favoriteComment": "Mon commentaire préféré du <link>fil HN</link> :",
"viralJapan": "Étonnamment, cmux est devenu viral au Japon :",
"translation": "Traduction : « Ça a l'air bien. Une application terminal basée sur Ghostty conçue pour ne pas se perdre quand on exécute plusieurs CLI comme Claude Code en parallèle. Le panneau en attente d'input reçoit un cadre bleu, et il a son propre système de notifications. »",
"viralChina": "Et semi-viral en Chine :",
"extensions": "Une autre chose enthousiasmante a été de voir des gens construire par-dessus le CLI cmux. sasha a créé une extension pi-cmux qui affiche les infos du modèle, l'utilisation des tokens et l'état de l'agent dans la barre latérale :",
"scriptable": "Tout dans cmux est scriptable via le CLI : créer des espaces de travail, envoyer des frappes, contrôler le navigateur, lire les notifications. La philosophie de cmux est d'être programmable et composable, pour que les gens puissent personnaliser leur façon de travailler avec les agents de code. L'état de l'art des agents de code évolue rapidement, et vous ne voulez pas être enfermé dans un orchestrateur GUI rigide qui ne peut pas suivre.",
"cta": "Si vous exécutez plusieurs agents de code, <link>essayez cmux</link>."
},
"introducingCmux": {
"title": "Présentation de cmux",
"summary": "Un terminal macOS natif basé sur Ghostty, conçu pour exécuter plusieurs agents de code IA côte à côte.",
"date": "12 février 2026",
"p1": "cmux est une application terminal macOS native construite sur Ghostty, conçue dès le départ pour les développeurs qui exécutent plusieurs agents de code IA simultanément.",
"whyTitle": "Pourquoi cmux ?",
"whyP": "Les workflows de développement modernes impliquent souvent l'exécution de plusieurs agents à la fois. Claude Code, Codex et d'autres outils, chacun dans leur propre terminal. Suivre lesquels ont besoin d'attention et basculer rapidement entre eux est le problème que cmux résout.",
"featuresTitle": "Fonctionnalités clés",
"getStartedTitle": "Commencer",
"getStartedP": "Installez cmux via Homebrew ou téléchargez le DMG depuis le <link>guide de démarrage</link>.",
"featureVerticalTabsLabel": "Onglets verticaux",
"featureVerticalTabsDesc": "voir tous vos terminaux d'un coup d'œil dans une barre latérale",
"featureNotificationsLabel": "Anneaux de notification",
"featureNotificationsDesc": "les onglets clignotent quand un agent a besoin de votre attention",
"featureSplitPanesLabel": "Panneaux divisés",
"featureSplitPanesDesc": "divisions horizontales et verticales dans chaque espace de travail",
"featureSocketApiLabel": "API socket",
"featureSocketApiDesc": "contrôle programmatique pour créer des onglets et envoyer des entrées",
"featureGpuLabel": "Accélération GPU",
"featureGpuDesc": "propulsé par libghostty pour un rendu fluide"
}
},
"zenOfCmux": {
"metaTitle": "Le Zen de cmux",
"metaDescription": "cmux est une primitive, pas une solution. Il vous donne des pièces composables et votre workflow est entre vos mains."
},
"cmdShiftU": {
"metaTitle": "Cmd+Shift+U",
"metaDescription": "Le nouveau raccourci clavier qui change votre interaction avec cmux."
},
"showHnLaunch": {
"metaTitle": "Lancement de cmux sur Show HN",
"metaDescription": "L histoire du lancement de cmux sur Hacker News."
},
"introducingCmux": {
"metaTitle": "Présentation de cmux",
"metaDescription": "Pourquoi nous avons créé cmux, un nouveau terminal pour macOS."
}
},
"docs": {
"layoutTitle": "cmux docs",
"gettingStarted": {
"title": "Premiers pas",
"metaDescription": "Installez cmux, le terminal macOS natif pour les agents de code IA. Homebrew, téléchargement DMG, configuration du CLI et mises à jour automatiques via Sparkle.",
"intro": "cmux est un terminal macOS natif et léger basé sur Ghostty pour gérer plusieurs agents de code IA. Il propose des onglets verticaux, un panneau de notifications et une API de contrôle par socket.",
"install": "Installation",
"dmgRecommended": "DMG (recommandé)",
"dmgDesc": "Ouvrez le .dmg et faites glisser cmux dans votre dossier Applications. cmux se met à jour automatiquement via Sparkle, vous n'avez besoin de télécharger qu'une seule fois.",
"homebrew": "Homebrew",
"updateLater": "Pour mettre à jour plus tard :",
"firstLaunchCallout": "Au premier lancement, macOS peut vous demander de confirmer l'ouverture d'une application d'un développeur identifié. Cliquez sur <strong>Ouvrir</strong> pour continuer.",
"verifyTitle": "Vérifier l'installation",
"verifyDesc": "Ouvrez cmux et vous devriez voir :",
"verifyItem1": "Une fenêtre terminal avec une barre latérale d'onglets verticaux à gauche",
"verifyItem2": "Un espace de travail initial déjà ouvert",
"verifyItem3": "Le terminal Ghostty prêt pour la saisie",
"cliSetup": "Configuration du CLI",
"cliDesc": "cmux inclut un outil en ligne de commande pour l'automatisation. Dans les terminaux cmux, il fonctionne automatiquement. Pour utiliser le CLI en dehors de cmux, créez un lien symbolique :",
"cliThen": "Ensuite vous pouvez exécuter des commandes comme :",
"autoUpdates": "Mises à jour automatiques",
"autoUpdatesDesc": "cmux vérifie les mises à jour automatiquement via Sparkle. Quand une mise à jour est disponible, vous verrez une pastille de mise à jour dans la barre de titre. Vous pouvez aussi vérifier manuellement via cmux > Rechercher des mises à jour dans la barre de menus.",
"sessionRestore": "Restauration de session (comportement actuel)",
"sessionRestoreDesc": "Après un redémarrage, cmux restaure uniquement la disposition et les métadonnées :",
"sessionItem1": "Disposition des fenêtres, espaces de travail et panneaux",
"sessionItem2": "Répertoires de travail",
"sessionItem3": "Historique du terminal (au mieux)",
"sessionItem4": "URL du navigateur et historique de navigation",
"sessionCallout": "cmux ne restaure pas encore l'état des processus en cours. Les sessions d'applications terminales actives comme Claude Code, tmux et vim ne sont pas reprises après un redémarrage de l'application.",
"requirements": "Configuration requise",
"reqItem1": "macOS 14.0 ou ultérieur",
"reqItem2": "Mac Apple Silicon ou Intel",
"metaTitle": "Démarrage"
},
"concepts": {
"title": "Concepts",
"metaDescription": "Comment cmux organise les terminaux : fenêtres, espaces de travail, panneaux et surfaces. La hiérarchie derrière la barre latérale, les divisions et l'API socket.",
"intro": "cmux organise vos terminaux selon une hiérarchie à quatre niveaux. Comprendre ces niveaux aide lors de l'utilisation de l'API socket, du CLI et des raccourcis clavier.",
"hierarchy": "Hiérarchie",
"windowTitle": "Fenêtre",
"windowDesc": "Une fenêtre macOS. Ouvrez plusieurs fenêtres avec {shortcut}. Chaque fenêtre a sa propre barre latérale avec des espaces de travail indépendants.",
"workspaceTitle": "Espace de travail",
"workspaceDesc": "Une entrée dans la barre latérale. Chaque espace de travail contient un ou plusieurs panneaux divisés. Les espaces de travail sont ce que vous voyez listé dans la barre latérale gauche.",
"workspaceNote": "Dans l'interface et les raccourcis clavier, les espaces de travail sont souvent appelés « onglets » car ils se comportent comme des onglets dans la barre latérale. L'API socket et les variables d'environnement utilisent le terme « workspace ».",
"contextHeader": "Contexte",
"termUsedHeader": "Terme utilisé",
"sidebarUI": "Interface de la barre latérale",
"tab": "Onglet",
"keyboardShortcuts": "Raccourcis clavier",
"workspaceOrTab": "Workspace ou onglet",
"socketAPI": "API socket",
"environmentVariable": "Variable d'environnement",
"workspaceShortcuts": "Raccourcis : {new} (nouveau), {jump} (aller à), {close} (fermer), {prevNext} (précédent/suivant)",
"paneTitle": "Panneau",
"paneDesc": "Une région divisée dans un espace de travail. Créée en divisant avec {right} (droite) ou {down} (bas). Naviguez entre les panneaux avec {nav} + touches fléchées.",
"paneNote": "Chaque panneau peut contenir plusieurs surfaces (onglets dans le panneau).",
"surfaceTitle": "Surface",
"surfaceDesc": "Un onglet dans un panneau. Chaque panneau a sa propre barre d'onglets et peut contenir plusieurs surfaces. Créée avec {new}, navigation avec {prev} / {next} ou {jump}.",
"surfaceNote": "Les surfaces sont les sessions individuelles de terminal ou de navigateur avec lesquelles vous interagissez. Chaque surface a sa propre variable d'environnement CMUX_SURFACE_ID.",
"panelTitle": "Panel",
"panelDesc": "Le contenu à l'intérieur d'une surface. Actuellement deux types :",
"panelTerminal": "Terminal : une session terminal Ghostty",
"panelBrowser": "Navigateur : une vue web intégrée",
"panelNote": "Panel est principalement un concept interne. Dans l'API socket et le CLI, vous interagissez avec les surfaces plutôt qu'avec les panels directement.",
"visualExample": "Exemple visuel",
"visualExampleDesc": "Dans cet exemple :",
"visualItem1": "La fenêtre contient une barre latérale avec trois espaces de travail (dev, server, logs)",
"visualItem2": "L'espace de travail « dev » est sélectionné, montrant deux panneaux côte à côte",
"visualItem3": "Le panneau 1 a deux surfaces ([S1] et [S2] dans la barre d'onglets), S1 étant actif",
"visualItem4": "Le panneau 2 a une surface",
"visualItem5": "Chaque surface contient un panel (un terminal dans ce cas)",
"summary": "Résumé",
"levelHeader": "Niveau",
"whatItIsHeader": "Description",
"createdByHeader": "Créé par",
"identifiedByHeader": "Identifié par",
"macosWindow": "Fenêtre macOS",
"sidebarEntry": "Entrée de la barre latérale",
"splitRegion": "Région divisée",
"tabWithinPane": "Onglet dans un panneau",
"terminalOrBrowser": "Terminal ou navigateur",
"automatic": "Automatique",
"paneIdSocket": "ID du panneau (API socket)",
"panelIdInternal": "ID du panel (interne)",
"metaTitle": "Concepts"
},
"configuration": {
"title": "Configuration",
"metaDescription": "Configurez cmux via les fichiers de configuration Ghostty. Police, thème, couleurs, style des panneaux divisés, historique et paramètres de l'application pour le mode automatisation.",
"intro": "cmux lit la configuration depuis les fichiers de configuration Ghostty, vous offrant des options familières si vous venez de Ghostty.",
"configLocations": "Emplacements des fichiers de configuration",
"configLocationsDesc": "cmux cherche la configuration dans ces emplacements (dans l'ordre) :",
"createConfig": "Créez le fichier de configuration s'il n'existe pas :",
"appearance": "Apparence",
"font": "Police",
"colors": "Couleurs",
"splitPanes": "Panneaux divisés",
"behavior": "Comportement",
"scrollback": "Historique",
"workingDirectory": "Répertoire de travail",
"appSettings": "Paramètres de l'application",
"appSettingsDesc": "Les paramètres de l'application sont accessibles via cmux > Réglages ({shortcut}) :",
"themeMode": "Mode de thème",
"themeSystem": "Système : suivre l'apparence macOS",
"themeLight": "Clair : toujours en mode clair",
"themeDark": "Sombre : toujours en mode sombre",
"automationMode": "Mode automatisation",
"automationModeDesc": "Niveau d'accès au socket de contrôle :",
"automationOff": "Désactivé : pas d'accès au socket (le plus sécurisé)",
"automationCmux": "Processus cmux uniquement : seuls les processus démarrés dans les terminaux cmux peuvent se connecter",
"automationAll": "allowAll : autoriser tout processus local à se connecter (CMUX_SOCKET_MODE=allowAll, remplacement par variable d'environnement uniquement)",
"automationCallout": "Sur les machines partagées, envisagez d'utiliser le mode « Désactivé » ou « Processus cmux uniquement ».",
"browserLinkBehavior": "Comportement des liens du navigateur",
"browserLinkDesc": "Dans Réglages > Navigateur, cmux expose deux listes d'hôtes avec des objectifs différents :",
"browserHostsEmbed": "Hôtes à ouvrir dans le navigateur intégré : s'applique aux liens cliqués depuis la sortie du terminal. Les hôtes de cette liste s'ouvrent dans cmux ; les autres hôtes s'ouvrent dans votre navigateur par défaut. Supporte un hôte ou un joker par ligne (par exemple : example.com, *.internal.example).",
"browserHostsHttp": "Hôtes HTTP autorisés dans le navigateur intégré : s'applique uniquement aux URLs HTTP (non-HTTPS). Les hôtes de cette liste peuvent s'ouvrir dans cmux sans avertissement. Les valeurs par défaut incluent localhost, 127.0.0.1, ::1, 0.0.0.0 et *.localtest.me.",
"exampleConfig": "Exemple de configuration",
"metaTitle": "Configuration"
},
"customCommands": {
"title": "Commandes personnalisées",
"metaTitle": "Commandes personnalisées",
"metaDescription": "Définissez des commandes personnalisées et des mises en page d'espace de travail dans cmux.json. Configuration par projet et globale avec surveillance en direct des fichiers.",
"intro": "Définissez des commandes personnalisées et des mises en page d'espace de travail en ajoutant un fichier cmux.json à la racine de votre projet ou ~/.config/cmux/. Les commandes apparaissent dans la palette de commandes.",
"fileLocations": "Emplacements des fichiers",
"fileLocationsDesc": "cmux recherche la configuration à deux endroits :",
"localConfig": "Par projet :",
"localConfigDesc": "se trouve dans votre répertoire de projet, a la priorité",
"globalConfig": "Global :",
"globalConfigDesc": "s'applique à tous les projets, complète les commandes non définies localement",
"precedenceNote": "Les commandes locales remplacent les commandes globales du même nom.",
"liveReload": "Les modifications sont prises en compte automatiquement — aucun redémarrage nécessaire.",
"schema": "Schéma",
"schemaDesc": "Un fichier cmux.json contient un tableau commands. Chaque commande est soit une commande shell simple, soit une définition complète d'espace de travail :",
"simpleCommands": "Commandes simples",
"simpleCommandsDesc": "Une commande simple exécute une commande shell dans le terminal actuellement focalisé :",
"simpleCommandFields": "Champs",
"fieldName": "Affiché dans la palette de commandes (requis)",
"fieldDescription": "Description optionnelle",
"fieldKeywords": "Termes de recherche supplémentaires pour la palette de commandes",
"fieldCommand": "Commande shell à exécuter dans le terminal focalisé",
"fieldConfirm": "Afficher une boîte de dialogue de confirmation avant l'exécution",
"simpleCommandCwdNote": "Les commandes simples s'exécutent dans le répertoire de travail actuel du terminal ciblé. Si votre commande utilise des chemins relatifs au projet, préfixez avec",
"simpleCommandCwdRepoRoot": "pour exécuter depuis la racine du dépôt, ou",
"simpleCommandCwdCustomPath": "pour n'importe quel répertoire spécifique.",
"workspaceCommands": "Commandes d'espace de travail",
"workspaceCommandsDesc": "Une commande d'espace de travail crée un nouvel espace de travail avec une mise en page personnalisée de divisions, terminaux et panneaux de navigateur :",
"workspaceFields": "Champs de l'espace de travail",
"wsFieldName": "Nom de l'onglet de l'espace de travail (par défaut, nom de la commande)",
"wsFieldCwd": "Répertoire de travail de l'espace de travail",
"wsFieldColor": "Couleur de l'onglet de l'espace de travail",
"wsFieldLayout": "Arbre de mise en page définissant les divisions et panneaux",
"restartBehavior": "Comportement au redémarrage",
"restartBehaviorDesc": "Contrôle ce qui se passe lorsqu'un espace de travail du même nom existe déjà :",
"restartIgnore": "Basculer vers l'espace de travail existant (par défaut)",
"restartRecreate": "Fermer et recréer sans demander",
"restartConfirm": "Demander à l'utilisateur avant de recréer",
"layoutTree": "Arbre de mise en page",
"layoutTreeDesc": "L'arbre de mise en page définit comment les panneaux sont disposés à l'aide de nœuds de division récursifs :",
"splitNode": "Nœud de division",
"splitNodeDesc": "Divise l'espace en deux enfants :",
"or": "ou",
"splitPosition": "Position du séparateur de 0.1 à 0.9 (par défaut 0.5)",
"splitChildren": "Exactement deux nœuds enfants (division ou panneau)",
"paneNode": "Nœud de panneau",
"paneNodeDesc": "Un nœud feuille contenant une ou plusieurs surfaces (onglets dans le panneau).",
"surfaceDefinition": "Définition de surface",
"surfaceDefinitionDesc": "Chaque surface dans un panneau peut être un terminal ou un navigateur :",
"surfaceName": "Titre d'onglet personnalisé",
"surfaceCommand": "Commande shell à exécuter automatiquement à la création (terminal uniquement)",
"surfaceCwd": "Répertoire de travail pour cette surface",
"surfaceEnv": "Variables d'environnement sous forme de paires clé-valeur",
"surfaceUrl": "URL à ouvrir (navigateur uniquement)",
"surfaceFocus": "Focaliser cette surface après la création",
"cwdResolution": "Résolution du répertoire de travail",
"omitted": "omis",
"cwdRelative": "répertoire de travail de l'espace de travail",
"cwdSubdir": "relatif au répertoire de travail de l'espace de travail",
"cwdHome": "développé vers le répertoire personnel",
"absolutePath": "Chemin absolu",
"cwdAbsolute": "utilisé tel quel",
"fullExample": "Exemple complet"
},
"keyboardShortcuts": {
"title": "Raccourcis clavier",
"description": "Tous les raccourcis clavier disponibles dans cmux, classés par catégorie.",
"metaDescription": "Tous les raccourcis clavier cmux pour les espaces de travail, surfaces, panneaux divisés, navigateur, notifications, recherche et gestion des fenêtres sur macOS.",
"searchPlaceholder": "Rechercher des raccourcis...",
"searchLabel": "Rechercher les raccourcis clavier",
"noResults": "Aucun raccourci trouvé",
"noResultsHint": "Essayez un autre terme de recherche",
"cat": {
"workspaces": "Espaces de travail",
"workspacesBlurb": "Les espaces de travail se trouvent dans la barre latérale. Chaque espace de travail a ses propres panneaux et surfaces.",
"surfaces": "Surfaces",
"surfacesBlurb": "Les surfaces sont des onglets à l'intérieur d'un panneau.",
"splitPanes": "Panneaux divisés",
"browser": "Navigateur",
"notifications": "Notifications",
"find": "Recherche",
"terminal": "Terminal",
"window": "Fenêtre"
},
"sc": {
"ws-new": "Nouvel espace de travail",
"ws-prev": "Espace de travail précédent",
"ws-next": "Espace de travail suivant",
"ws-jump-1-8": "Aller à l'espace de travail 18",
"ws-jump-last": "Aller au dernier espace de travail",
"ws-close": "Fermer l'espace de travail",
"ws-rename": "Renommer l'espace de travail",
"sf-new": "Nouvelle surface",
"sf-prev-1": "Surface précédente",
"sf-prev-2": "Surface précédente",
"sf-jump-1-8": "Aller à la surface 18",
"sf-jump-last": "Aller à la dernière surface",
"sf-close": "Fermer la surface",
"sp-right": "Diviser à droite",
"sp-down": "Diviser en bas",
"sp-focus": "Cibler le panneau par direction",
"sp-browser-right": "Diviser le navigateur à droite",
"sp-browser-down": "Diviser le navigateur en bas",
"br-open": "Ouvrir une surface navigateur",
"br-addr": "Cibler la barre d'adresse",
"br-forward": "Avancer",
"br-reload": "Recharger la page",
"br-devtools": "Ouvrir les outils de développement",
"nt-panel": "Afficher le panneau de notifications",
"nt-latest": "Aller à la plus récente non lue",
"nt-flash": "Déclencher le flash",
"fd-find": "Rechercher",
"fd-next-prev": "Résultat suivant / précédent",
"fd-hide": "Masquer la barre de recherche",
"fd-selection": "Utiliser la sélection pour la recherche",
"tm-clear": "Effacer l'historique",
"tm-copy": "Copier (avec sélection)",
"tm-paste": "Coller",
"tm-font": "Augmenter / diminuer la taille de police",
"tm-reset": "Réinitialiser la taille de police",
"wn-new": "Nouvelle fenêtre",
"wn-settings": "Réglages",
"wn-reload": "Recharger la configuration",
"wn-quit": "Quitter"
},
"metaTitle": "Raccourcis clavier"
},
"api": {
"title": "Référence API",
"metaDescription": "Référence de l'API CLI et socket Unix de cmux. Gestion des espaces de travail, panneaux divisés, contrôle des entrées, notifications, métadonnées de la barre latérale, variables d'environnement et méthodes de détection.",
"intro": "cmux fournit à la fois un outil CLI et un socket Unix pour le contrôle programmatique. Chaque commande est disponible via les deux interfaces.",
"socket": "Socket",
"buildHeader": "Build",
"pathHeader": "Chemin",
"release": "Release",
"debug": "Debug",
"taggedDebug": "Build debug tagué",
"socketOverride": "Remplacez avec la variable d'environnement CMUX_SOCKET_PATH. Envoyez une requête JSON terminée par un retour à la ligne par appel :",
"socketCallout": "Les requêtes JSON du socket doivent utiliser method et params. Les anciens payloads JSON v1 comme <legacy>'{'\"command\":\"...\"'}'</legacy> ne sont pas supportés.",
"accessModes": "Modes d'accès",
"modeHeader": "Mode",
"descriptionHeader": "Description",
"howToEnableHeader": "Comment activer",
"offMode": "Socket désactivé",
"offEnable": "Interface Réglages ou CMUX_SOCKET_MODE=off",
"cmuxOnlyMode": "Seuls les processus démarrés dans les terminaux cmux peuvent se connecter.",
"cmuxOnlyEnable": "Mode par défaut dans l'interface Réglages",
"allowAllMode": "Autoriser tout processus local à se connecter (pas de vérification d'ascendance).",
"allowAllEnable": "Remplacement par variable d'environnement uniquement : CMUX_SOCKET_MODE=allowAll",
"accessCallout": "Sur les machines partagées, utilisez Désactivé ou Processus cmux uniquement.",
"cliOptions": "Options du CLI",
"flagHeader": "Option",
"customSocketPath": "Chemin de socket personnalisé",
"outputJson": "Sortie au format JSON",
"targetWindow": "Cibler une fenêtre spécifique",
"targetWorkspace": "Cibler un espace de travail spécifique",
"targetSurface": "Cibler une surface spécifique",
"idFormat": "Format d'identifiant de contrôle dans la sortie JSON",
"workspaceCommands": "Commandes d'espace de travail",
"listWorkspacesDesc": "Lister tous les espaces de travail ouverts.",
"newWorkspaceDesc": "Créer un nouvel espace de travail.",
"selectWorkspaceDesc": "Basculer vers un espace de travail spécifique.",
"currentWorkspaceDesc": "Obtenir l'espace de travail actuellement actif.",
"closeWorkspaceDesc": "Fermer un espace de travail.",
"splitCommands": "Commandes de division",
"newSplitDesc": "Créer un nouveau panneau divisé. Directions : left, right, up, down.",
"listSurfacesDesc": "Lister toutes les surfaces dans l'espace de travail actuel.",
"focusSurfaceDesc": "Mettre le focus sur une surface spécifique.",
"inputCommands": "Commandes de saisie",
"sendDesc": "Envoyer du texte au terminal actif.",
"sendKeyDesc": "Envoyer une touche. Touches : enter, tab, escape, backspace, delete, up, down, left, right.",
"sendSurfaceDesc": "Envoyer du texte à une surface spécifique.",
"sendKeySurfaceDesc": "Envoyer une touche à une surface spécifique.",
"notificationCommands": "Commandes de notification",
"notifyDesc": "Envoyer une notification.",
"listNotificationsDesc": "Lister toutes les notifications.",
"clearNotificationsDesc": "Effacer toutes les notifications.",
"sidebarMetadata": "Commandes de métadonnées de la barre latérale",
"sidebarMetadataDesc": "Définir des pastilles de statut, barres de progression et entrées de journal dans la barre latérale pour n'importe quel espace de travail. Utile pour les scripts de build, intégrations CI et agents de code IA qui souhaitent afficher l'état en un coup d'œil.",
"setStatusDesc": "Définir une pastille de statut dans la barre latérale. Utilisez une clé unique pour que différents outils puissent gérer leurs propres entrées.",
"clearStatusDesc": "Supprimer une entrée de statut de la barre latérale par clé.",
"listStatusDesc": "Lister toutes les entrées de statut de la barre latérale pour un espace de travail.",
"setProgressDesc": "Définir une barre de progression dans la barre latérale (0.0 à 1.0).",
"clearProgressDesc": "Effacer la barre de progression de la barre latérale.",
"logDesc": "Ajouter une entrée de journal à la barre latérale. Niveaux : info, progress, success, warning, error.",
"clearLogDesc": "Effacer toutes les entrées de journal de la barre latérale.",
"listLogDesc": "Lister les entrées de journal de la barre latérale.",
"sidebarStateDesc": "Afficher toutes les métadonnées de la barre latérale (cwd, branche git, ports, statut, progression, journaux).",
"utilityCommands": "Commandes utilitaires",
"pingDesc": "Vérifier si cmux fonctionne et répond.",
"capabilitiesDesc": "Lister les méthodes socket disponibles et le mode d'accès actuel.",
"identifyDesc": "Afficher le contexte fenêtre/espace de travail/panneau/surface actif.",
"envVariables": "Variables d'environnement",
"variableHeader": "Variable",
"socketPathDesc": "Remplacer le chemin du socket utilisé par le CLI et les intégrations",
"socketEnableDesc": "Forcer l'activation/désactivation du socket (1/0, true/false, on/off)",
"socketModeDesc": "Remplacer le mode d'accès (cmuxOnly, allowAll, off). Accepte aussi cmux-only/cmux_only et allow-all/allow_all",
"workspaceIdDesc": "Auto-défini : ID de l'espace de travail actuel",
"surfaceIdDesc": "Auto-défini : ID de la surface actuelle",
"termProgramDesc": "Défini à ghostty",
"termDesc": "Défini à xterm-ghostty",
"envCallout": "Les anciennes valeurs CMUX_SOCKET_MODE full et notifications sont toujours acceptées pour compatibilité.",
"detectingCmux": "Détecter cmux",
"examples": "Exemples",
"pythonClient": "Client Python",
"shellScript": "Script shell",
"buildScriptNotification": "Script de build avec notification",
"metaTitle": "Référence API"
},
"notifications": {
"title": "Notifications",
"metaDescription": "Envoyez des notifications bureau depuis les agents IA et scripts dans cmux. CLI, séquences d'échappement OSC 99/777 et intégration des hooks Claude Code.",
"intro": "cmux supporte les notifications bureau, permettant aux agents IA et aux scripts de vous alerter quand ils ont besoin d'attention.",
"lifecycle": "Cycle de vie",
"received": "Reçue : la notification apparaît dans le panneau, l'alerte bureau se déclenche (si non supprimée)",
"unread": "Non lue : badge affiché sur l'onglet de l'espace de travail",
"read": "Lue : effacée quand vous consultez cet espace de travail",
"cleared": "Effacée : supprimée du panneau",
"suppression": "Suppression",
"suppressionDesc": "Les alertes bureau sont supprimées quand :",
"suppressItem1": "La fenêtre cmux est active",
"suppressItem2": "L'espace de travail spécifique qui envoie la notification est actif",
"suppressItem3": "Le panneau de notifications est ouvert",
"notificationPanel": "Panneau de notifications",
"notificationPanelDesc": "Appuyez sur <openShortcut>⌘⇧I</openShortcut> pour ouvrir le panneau de notifications. Cliquez sur une notification pour aller à cet espace de travail. Appuyez sur <jumpShortcut>⌘⇧U</jumpShortcut> pour aller directement à l'espace de travail avec la notification non lue la plus récente.",
"customCommand": "Commande personnalisée",
"customCommandDesc": "Exécutez une commande shell à chaque fois qu'une notification est planifiée. Définissez-la dans Réglages > App > Commande de notification. La commande s'exécute via /bin/sh -c avec ces variables d'environnement :",
"customCommandNote": "La commande s'exécute indépendamment du sélecteur de son système. Définissez le sélecteur sur « Aucun » pour utiliser uniquement la commande personnalisée, ou gardez les deux pour un son système plus une action personnalisée.",
"sending": "Envoyer des notifications",
"cli": "CLI",
"osc777Title": "OSC 777 (simple)",
"osc777Desc": "Le protocole RXVT utilise un format fixe avec titre et corps :",
"osc99Title": "OSC 99 (riche)",
"osc99Desc": "Le protocole Kitty supporte les sous-titres et les IDs de notification :",
"variableHeader": "Variable",
"descriptionHeader": "Description",
"envTitle": "Titre de la notification (nom de l'espace de travail ou nom de l'app)",
"envSubtitle": "Sous-titre de la notification",
"envBody": "Texte du corps de la notification",
"cmpTitleBody": "Titre + corps",
"cmpSubtitle": "Sous-titre",
"cmpNotificationId": "ID de notification",
"cmpComplexity": "Complexité",
"cmpYes": "Oui",
"cmpNo": "Non",
"cmpHigher": "Plus élevée",
"cmpLower": "Plus basse",
"featureHeader": "Fonctionnalité",
"comparisonCallout": "Utilisez OSC 777 pour les notifications simples. Utilisez OSC 99 quand vous avez besoin de sous-titres ou d'IDs de notification. Utilisez le CLI (cmux notify) pour l'intégration la plus simple.",
"claudeCodeHooks": "Hooks Claude Code",
"claudeCodeHooksDesc": "cmux s'intègre avec <link>Claude Code</link> via des hooks pour vous notifier quand les tâches sont terminées.",
"createHookScript": "1. Créer le script de hook",
"configureClaude": "2. Configurer Claude Code",
"restartNote": "Redémarrez Claude Code pour appliquer les hooks.",
"copilotCliHooks": "GitHub Copilot CLI",
"copilotCliHooksDesc": "Copilot CLI prend en charge les <link>hooks</link> qui exécutent des commandes shell lors d'événements du cycle de vie comme la soumission de prompts, l'arrêt de l'agent et les erreurs.",
"copilotCliRepoHooks": "Pour les hooks au niveau du dépôt, créez un fichier .github/hooks/notify.json avec la même structure :",
"integrationExamples": "Exemples d'intégration",
"notifyAfterLong": "Notifier après une longue commande",
"python": "Python",
"nodejs": "Node.js",
"tmuxPassthrough": "Passthrough tmux",
"tmuxDesc": "Si vous utilisez tmux dans cmux, activez le passthrough :",
"metaTitle": "Notifications"
},
"browserAutomation": {
"title": "Automatisation du navigateur",
"metaDescription": "Référence des commandes du navigateur cmux pour la navigation, l'interaction DOM, l'attente, l'inspection, l'évaluation JavaScript, les onglets, les dialogues, les frames, les téléchargements et l'état du navigateur.",
"intro": "Le groupe de commandes cmux browser fournit l'automatisation du navigateur pour les surfaces navigateur de cmux. Utilisez-le pour naviguer, interagir avec les éléments DOM, inspecter l'état de la page, évaluer du JavaScript et gérer les données de session du navigateur.",
"commandIndex": "Index des commandes",
"categoryHeader": "Catégorie",
"subcommandsHeader": "Sous-commandes",
"navAndTargeting": "Navigation et ciblage",
"waiting": "Attente",
"domInteraction": "Interaction DOM",
"inspection": "Inspection",
"jsAndInjection": "JavaScript et injection",
"framesDialogsDownloads": "Frames, dialogues, téléchargements",
"stateAndSession": "État et données de session",
"tabsAndLogs": "Onglets et journaux",
"targetingSurface": "Cibler une surface navigateur",
"targetingDesc": "La plupart des sous-commandes nécessitent une surface cible. Vous pouvez la passer en position ou avec --surface.",
"navigation": "Navigation",
"waitingSection": "Attente",
"waitingDesc": "Utilisez wait pour bloquer jusqu'à ce que des sélecteurs, du texte, des fragments d'URL, l'état de chargement ou une condition JavaScript soient satisfaits.",
"domSection": "Interaction DOM",
"domDesc": "Les actions de mutation supportent --snapshot-after pour une vérification rapide dans les scripts.",
"inspectionSection": "Inspection",
"inspectionDesc": "Utilisez les getters structurés pour les scripts et les snapshots/captures d'écran pour la revue humaine.",
"jsSection": "Évaluation et injection JavaScript",
"stateSection": "État",
"stateDesc": "Les commandes de données de session couvrent les cookies, le stockage local/session et les snapshots complets de l'état du navigateur.",
"tabsSection": "Onglets",
"tabsDesc": "Les opérations sur les onglets du navigateur correspondent aux surfaces navigateur dans le groupe d'onglets navigateur actif.",
"consoleSection": "Console et erreurs",
"dialogsSection": "Dialogues",
"framesSection": "Frames",
"downloadsSection": "Téléchargements",
"commonPatterns": "Patterns courants",
"patternNavigate": "Naviguer, attendre, inspecter",
"patternForm": "Remplir un formulaire et vérifier le texte de succès",
"patternDebug": "Capturer les artefacts de debug en cas d'échec",
"patternSession": "Persister et restaurer la session du navigateur",
"metaTitle": "Automatisation du navigateur"
},
"changelog": {
"title": "Changelog",
"metaDescription": "Notes de version et historique des versions de cmux. Nouvelles fonctionnalités, corrections de bugs et changements pour le terminal macOS natif.",
"metaTitle": "Journal des modifications"
},
"navItems": {
"gettingStarted": "Premiers pas",
"concepts": "Concepts",
"configuration": "Configuration",
"customCommands": "Commandes personnalisées",
"keyboardShortcuts": "Raccourcis clavier",
"apiReference": "Référence API",
"browserAutomation": "Automatisation du navigateur",
"notifications": "Notifications",
"agentIntegrations": "Agent Integrations",
"claudeCodeTeams": "Claude Code Teams",
"ohMyOpenCode": "oh-my-opencode",
"changelog": "Changelog"
}
},
"legal": {
"privacyPolicy": "Politique de confidentialité",
"termsOfService": "Conditions d'utilisation",
"eula": "EULA"
},
"wallOfLove": {
"title": "Wall of Love",
"description": "Ce que les gens disent de cmux."
},
"testimonials": {
"mitchellh": "Encore un projet base sur libghostty, cette fois un terminal macOS avec des onglets verticaux, une meilleure organisation/notifications, un navigateur integre/scriptable, specifiquement destine aux gens qui utilisent beaucoup de workflows d'agents en terminal.",
"schrockn": "C'est exactement le produit que je cherchais. Apres deux heures ce matin, je suis conquis.",
"egrefen": "Je l'utilise depuis tout le week-end et c'est genial.",
"max4c": "c'est mon outil prefere depuis deux semaines",
"asaza": "cmux a l'air tellement bien que c'est peut-etre le moment de dire adieu a VSCode",
"johnthedebs": "Hey, ca a l'air vraiment genial. J'adore les idees, en particulier : la programmabilite, l'UI en couches, le navigateur avec API. J'ai hate d'essayer. Je tiens aussi a remercier Mitchell Hashimoto pour avoir cree libghostty ; c'est une periode passionnante pour etre utilisateur de terminal.",
"joeriddles": "Des onglets verticaux dans mon terminal ! Je n'y avais jamais pense. J'utilise et j'adore les onglets verticaux de Firefox.",
"dchu17": "Je l'ai essaye et c'etait assez intuitif. Beau travail !",
"afruth": "J'aime bien. Je l'ai utilise hier sur trois projets en parallele, chacun avec plusieurs worktrees. En combinaison avec lazygit et yazi/nvim, j'etais un peu plus productif que d'habitude sans avoir a jongler entre plusieurs instances ghostty/iTerm. Ca semble aussi plus naturel que tmux.",
"northprint": "J'ai essaye cmux parce que ca avait l'air bien, et c'est bien",
"indykish": "cmux est plutot bon.",
"kataring": "Je suis passe a cmux.dev",
"scottw": "C'est une decouverte tellement utile. Je ne peux que le recommander.",
"johnblythe": "Installe ce week-end et j'adore. J'attendais quelque chose comme ca.",
"bchris91": "C'est exactement ce que je voulais. Travail incroyable, merci !",
"connorelsea": "Je l'utilise depuis une semaine et c'est fantastique. Un onglet vertical par tache en cours. A l'interieur, Claude d'un cote et le navigateur avec la PR et les ressources de l'autre. Basculer entre les taches en restant organise. En combinant avec les skills pour que Claude surveille le CI recursivement, etc. Franchement, je me sens eclaire.",
"tonkotsuboy": "J'etais passe de Warp a Ghostty en debut d'annee, mais maintenant je suis passe a cmux. Les onglets verticaux sont pratiques, et j'apprecie les notifications quand les taches Claude Code sont terminees. Comme c'est base sur Ghostty, les performances ultra-rapides sont conservees. L'affichage des branches et les completions que j'avais configures dans Ghostty fonctionnent toujours."
},
"nightly": {
"title": "cmux NIGHTLY",
"subtitle": "Builds de pointe depuis main",
"metaTitle": "cmux NIGHTLY — Builds Nightly",
"metaDescription": "Téléchargez cmux NIGHTLY, une app séparée compilée automatiquement depuis le dernier commit sur main. Fonctionne à côté de la version stable avec ses propres mises à jour automatiques.",
"description": "cmux NIGHTLY est compilé automatiquement depuis le dernier commit sur main. Il possède son propre bundle ID et fonctionne donc à côté de la version stable sans conflit. Utilisez-le pour tester les nouvelles fonctionnalités avant leur sortie.",
"download": "Télécharger NIGHTLY pour Mac",
"warning": "Les builds nightly peuvent contenir des bugs ou des fonctionnalités incomplètes. En cas de problème, signalez-le sur <githubLink>GitHub</githubLink> ou dans <discordLink>#nightly-bugs sur Discord</discordLink> et revenez à la version stable."
},
"languageSwitcher": {
"label": "Langue"
}
}