@neuralnomads/codenomad-dev 0.17.1-dev-20260619-1c9eddd6 → 0.18.0-dev-20260620-e29c3a08

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/opencode-plugin/codenomad-opencode-plugin.tgz +0 -0
  2. package/package.json +1 -1
  3. package/public/assets/{FilesTab-DYQlikI6.js → FilesTab-DugdDC9s.js} +2 -2
  4. package/public/assets/{GitChangesTab-DpC_GZOG.js → GitChangesTab-wF0tL7PL.js} +2 -2
  5. package/public/assets/{SplitFilePanel-0EmPVGzs.js → SplitFilePanel-C4FztlTR.js} +1 -1
  6. package/public/assets/{StatusTab-BB0eu8MT.js → StatusTab-30t_J03f.js} +1 -1
  7. package/public/assets/{align-justify-CwUnMKH1.js → align-justify-DnoeiXCd.js} +1 -1
  8. package/public/assets/{bundle-full-BVDA-a9Y.js → bundle-full-B0vc8NGv.js} +1 -1
  9. package/public/assets/{diff-viewer-Dd6KTGcm.js → diff-viewer-DH-lH6jq.js} +1 -1
  10. package/public/assets/index--bYE3fA1.js +1 -0
  11. package/public/assets/index-B-9c-wPM.css +1 -0
  12. package/public/assets/index-BDJqHo1E.js +1 -0
  13. package/public/assets/index-BEXDNmDA.js +1 -0
  14. package/public/assets/index-BWX6Cyx3.js +2 -0
  15. package/public/assets/{index-Ddsv8Uc0.js → index-Bv867yIC.js} +1 -1
  16. package/public/assets/index-CUB1cngT.js +1 -0
  17. package/public/assets/{index-DnCBfFB3.js → index-ChDVvMF4.js} +1 -1
  18. package/public/assets/index-CyGPk9Qx.js +1 -0
  19. package/public/assets/index-D9T8sYiH.js +1 -0
  20. package/public/assets/index-DQ8RfkwK.js +1 -0
  21. package/public/assets/index-udaOwtFG.js +1 -0
  22. package/public/assets/{loading-Cq2BV5aG.js → loading-DRzViX8M.js} +1 -1
  23. package/public/assets/main-Bc7SPDUI.js +68 -0
  24. package/public/assets/{markdown-B7Z2XEW_.js → markdown-Bl4gL2Nd.js} +3 -3
  25. package/public/assets/{monaco-viewer-BFNhPQX7.js → monaco-viewer-BbohfXZk.js} +12 -12
  26. package/public/assets/tool-call-DQdOWbkk.js +59 -0
  27. package/public/assets/{unified-picker-CvGpadwy.js → unified-picker-CGg8mlSo.js} +1 -1
  28. package/public/assets/{wrap-text-BQcJM7nv.js → wrap-text-DMzX5Xp2.js} +1 -1
  29. package/public/index.html +4 -4
  30. package/public/loading.html +4 -4
  31. package/public/sw.js +1 -1
  32. package/public/ui-version.json +1 -1
  33. package/public/assets/index-BV8k2sC0.js +0 -2
  34. package/public/assets/index-BXfEYP03.js +0 -1
  35. package/public/assets/index-C5mhkY-6.js +0 -1
  36. package/public/assets/index-CCGREwWR.js +0 -1
  37. package/public/assets/index-CkOMuqoF.js +0 -1
  38. package/public/assets/index-CqoUlH3-.js +0 -1
  39. package/public/assets/index-DIVooRPn.js +0 -1
  40. package/public/assets/index-G37GrhG6.js +0 -1
  41. package/public/assets/index-iK7Z6bMV.js +0 -1
  42. package/public/assets/index-pz9ICcLI.css +0 -1
  43. package/public/assets/main-CNMW4Jc1.js +0 -68
  44. package/public/assets/tool-call-DwD83RQP.js +0 -59
@@ -0,0 +1 @@
1
+ import{m as e}from"./index-BWX6Cyx3.js";import"./monaco-viewer-BbohfXZk.js";import"./git-diff-vendor-CSgooKT_.js";import"./fast-diff-vendor-DgdwVvTQ.js";import"./highlight-vendor-8FKMu9os.js";const s={"advancedSettings.title":"Paramètres avancés","advancedSettings.environmentVariables.title":"Variables d'environnement","advancedSettings.environmentVariables.subtitle":"Appliquées à chaque démarrage d'une nouvelle instance OpenCode","advancedSettings.actions.close":"Fermer"},t={"app.launchError.title":"Impossible de lancer OpenCode","app.launchError.description":"Nous n'avons pas pu démarrer le binaire OpenCode sélectionné. Consultez la sortie d'erreur ci-dessous ou choisissez un autre binaire dans les paramètres OpenCode.","app.launchError.binaryPathLabel":"Chemin du binaire","app.launchError.errorOutputLabel":"Sortie d'erreur","app.launchError.openAdvancedSettings":"Ouvrir les paramètres OpenCode","app.launchError.close":"Fermer","app.launchError.closeTitle":"Fermer (Esc)","app.launchError.fallbackMessage":"Échec du lancement de l'espace de travail","app.stopInstance.confirmMessage":"Arrêter l'instance OpenCode ? Cela arrêtera le serveur.","app.stopInstance.title":"Arrêter l'instance","app.stopInstance.confirmLabel":"Arrêter","app.stopInstance.cancelLabel":"Laisser tourner","app.stopInstance.toast.error":"Impossible d'arrêter l'espace de travail.","emptyState.logoAlt":"Logo CodeNomad","emptyState.brandTitle":"CodeNomad","emptyState.tagline":"Sélectionnez un dossier pour commencer à coder avec l'IA","emptyState.actions.selectFolder":"Sélectionner un dossier","emptyState.actions.selecting":"Sélection...","emptyState.keyboardShortcut":"Raccourci clavier : {shortcut}","emptyState.examples":"Exemples : {example}","emptyState.multipleInstances":"Vous pouvez avoir plusieurs instances du même dossier","releases.upgradeRequired.title":"Mise à jour requise","releases.upgradeRequired.message.withVersion":"Mettez à jour vers CodeNomad {version} pour utiliser la dernière UI.","releases.upgradeRequired.message.noVersion":"Mettez à jour CodeNomad pour utiliser la dernière UI.","releases.upgradeRequired.action.getUpdate":"Obtenir la mise à jour","releases.uiUpdated.title":"UI mise à jour","releases.uiUpdated.message":"L'UI est maintenant mise à jour vers {version}.","releases.devUpdateAvailable.title":"Build dev disponible","releases.devUpdateAvailable.message":"Un nouveau build dev est disponible : {version}.","releases.devUpdateAvailable.action":"Voir la release","theme.mode.system":"Système","theme.mode.light":"Clair","theme.mode.dark":"Sombre","theme.toggle.title":"Thème : {mode}","theme.toggle.ariaLabel":"Thème : {mode}"},i={"commandPalette.title":"Palette de commandes","commandPalette.description":"Rechercher et exécuter des commandes","commandPalette.searchPlaceholder":"Tapez une commande ou recherchez...","commandPalette.empty":'Aucune commande trouvée pour "{query}"',"commandPalette.category.customCommands":"Commandes personnalisées","commandPalette.category.instance":"Instance","commandPalette.category.session":"Session","commandPalette.category.agentModel":"Agent et modèle","commandPalette.category.inputFocus":"Saisie et focus","commandPalette.category.system":"Système","commandPalette.category.other":"Autre","commands.newInstance.label":"Nouvelle instance","commands.newInstance.description":"Ouvrir le sélecteur de dossiers pour créer une nouvelle instance","commands.newInstance.keywords":"dossier, projet, espace de travail","commands.closeInstance.label":"Fermer l'onglet","commands.closeInstance.description":"Fermer l'onglet de premier niveau actuel","commands.closeInstance.keywords":"arrêter, quitter, fermer, onglet","commands.nextInstance.label":"Onglet suivant","commands.nextInstance.description":"Passer à l'onglet de premier niveau suivant","commands.nextInstance.keywords":"changer, naviguer, suivant, onglet","commands.previousInstance.label":"Onglet précédent","commands.previousInstance.description":"Passer à l'onglet de premier niveau précédent","commands.previousInstance.keywords":"changer, naviguer, précédent, onglet","commands.newSession.label":"Nouvelle session","commands.newSession.description":"Créer une nouvelle session parente","commands.newSession.keywords":"créer, démarrer","commands.closeSession.label":"Fermer la session","commands.closeSession.description":"Fermer la session parente actuelle","commands.closeSession.keywords":"fermer, arrêter","commands.scrubSessions.label":"Nettoyer les sessions","commands.scrubSessions.description":"Supprimer les sessions vides, les sessions de sous-agent ayant terminé leur tâche principale, ainsi que les sessions forkées inutiles.","commands.scrubSessions.keywords":"nettoyage, vide, sessions, supprimer, effacer","commands.instanceInfo.label":"Infos de l'instance","commands.instanceInfo.description":"Ouvrir la vue d'ensemble de l'instance pour les journaux et le statut","commands.instanceInfo.keywords":"infos, journaux, console, sortie, logs","commands.nextSession.label":"Session suivante","commands.nextSession.description":"Passer à l'onglet de session suivant","commands.nextSession.keywords":"changer, naviguer, suivant","commands.previousSession.label":"Session précédente","commands.previousSession.description":"Passer à l'onglet de session précédent","commands.previousSession.keywords":"changer, naviguer, précédent","commands.compactSession.label":"Compacter la session","commands.compactSession.description":"Résumer et compacter la session actuelle","commands.compactSession.keywords":"résumer, compresser, compact","commands.compactSession.errorFallback":"Impossible de compacter la session","commands.compactSession.alert.title":"Échec du compactage","commands.compactSession.alert.message":"Échec du compactage : {message}","commands.undoLastMessage.label":"Annuler le dernier message","commands.undoLastMessage.description":"Revenir sur le dernier message","commands.undoLastMessage.keywords":"revenir, annuler","commands.undoLastMessage.none.title":"Aucune action à annuler","commands.undoLastMessage.none.message":"Rien à annuler","commands.undoLastMessage.failed.title":"Échec de l'annulation","commands.undoLastMessage.failed.message":"Impossible de revenir au message","commands.openModelSelector.label":"Ouvrir le sélecteur de modèle","commands.openModelSelector.description":"Choisir un autre modèle","commands.openModelSelector.keywords":"modèle, llm, ia, ai","commands.selectModelVariant.label":"Sélectionner la variante du modèle","commands.selectModelVariant.description":"Choisir un effort de réflexion pour le modèle actuel","commands.selectModelVariant.keywords":"variante, réflexion, raisonnement, effort","commands.openAgentSelector.label":"Ouvrir le sélecteur d'agent","commands.openAgentSelector.description":"Choisir un autre agent","commands.openAgentSelector.keywords":"agent, mode","commands.clearInput.label":"Effacer la saisie","commands.clearInput.description":"Effacer la zone de texte du prompt","commands.clearInput.keywords":"effacer, réinitialiser, prompt","commands.promptSubmitShortcut.label.default":"Entree: Nouvelle ligne, Cmd/Ctrl+Entree: Envoyer le prompt","commands.promptSubmitShortcut.label.swapped":"Entree: Envoyer le prompt, Cmd/Ctrl+Entree: Nouvelle ligne","commands.promptSubmitShortcut.description":"Echanger le comportement de Entree et Cmd/Ctrl+Entree dans la saisie du prompt","commands.promptSubmitShortcut.keywords":"entree, envoyer, nouvelle ligne, raccourci, cmd, ctrl, prompt","commands.thinkingBlocks.label.show":"Afficher la réflexion","commands.thinkingBlocks.label.hide":"Masquer la réflexion","commands.thinkingBlocks.description":"Afficher ou masquer les sections de réflexion de l'IA","commands.thinkingBlocks.keywords":"réflexion, raisonnement, basculer, afficher, masquer","commands.timelineToolCalls.label.show":"Afficher les appels d'outil dans la timeline","commands.timelineToolCalls.label.hide":"Masquer les appels d'outil dans la timeline","commands.timelineToolCalls.description":"Afficher/masquer les entrées d'appel d'outil dans la timeline des messages","commands.timelineToolCalls.keywords":"timeline, outil, basculer","commands.keyboardShortcutHints.label.show":"Afficher les raccourcis clavier","commands.keyboardShortcutHints.label.hide":"Masquer les raccourcis clavier","commands.keyboardShortcutHints.description":"Afficher ou masquer les indices de raccourcis clavier dans l'interface","commands.keyboardShortcutHints.description.disabledWeb":"Désactivé en WebUI (les raccourcis sont toujours masqués)","commands.keyboardShortcutHints.keywords":"raccourci, raccourcis, clavier, keybind, indices","commands.common.expanded":"Développé","commands.common.collapsed":"Réduit","commands.common.visible":"Visible","commands.common.hidden":"Masqué","commands.common.enabled":"Activé","commands.common.disabled":"Désactivé","commands.thinkingBlocksDefault.label":"Vue de la réflexion: {state}","commands.thinkingBlocksDefault.description":"Réduire / Développer les sections de réflexion de l'IA lorsqu'elles sont affichées","commands.thinkingBlocksDefault.keywords":"réflexion, raisonnement, développer, réduire, défaut","commands.diffViewSplit.label":"Utiliser la vue diff côte à côte","commands.diffViewSplit.description":"Afficher les diffs d'appels d'outil côte à côte","commands.diffViewSplit.keywords":"diff, côte à côte, vue","commands.diffViewUnified.label":"Utiliser la vue diff unifiée","commands.diffViewUnified.description":"Afficher les diffs d'appels d'outil en ligne","commands.diffViewUnified.keywords":"diff, unifiée, vue","commands.toolOutputsDefault.label":"Sorties d'outil par défaut · {state}","commands.toolOutputsDefault.description":"Choisir l'ouverture par défaut des sorties d'outil","commands.toolOutputsDefault.keywords":"outil, sortie, développer, réduire","commands.diagnosticsDefault.label":"Diagnostics par défaut · {state}","commands.diagnosticsDefault.description":"Choisir l'ouverture par défaut de la sortie des diagnostics","commands.diagnosticsDefault.keywords":"diagnostics, développer, réduire","commands.toolInputsVisibility.label":"Visibilité des entrées d'outil · {state}","commands.toolInputsVisibility.description":"Définir la visibilité par défaut des arguments d'entrée des appels d'outil","commands.toolInputsVisibility.keywords":"outil, entrées, arguments, visibilité, masquer, afficher, développer, réduire","commands.tokenUsageDisplay.label":"Affichage de l'usage des tokens · {state}","commands.tokenUsageDisplay.description":"Afficher ou masquer les stats de tokens et de coût pour les messages de l'assistant","commands.tokenUsageDisplay.keywords":"token, usage, coût, stats","commands.autoCleanupBlankSessions.label":"Nettoyage auto des sessions vides · {state}","commands.autoCleanupBlankSessions.description":"Nettoyer automatiquement les sessions vides lors de la création de nouvelles","commands.autoCleanupBlankSessions.keywords":"auto, nettoyage, vide, sessions, basculer","commands.showHelp.label":"Afficher l'aide","commands.showHelp.description":"Afficher les raccourcis clavier et l'aide","commands.showHelp.keywords":"raccourcis, aide","commands.custom.argumentsPrompt.message":"Arguments pour /{name}","commands.custom.argumentsPrompt.title":"Commande personnalisée","commands.custom.argumentsPrompt.inputLabel":"Arguments","commands.custom.argumentsPrompt.inputPlaceholder":"ex. foo bar","commands.custom.argumentsPrompt.confirmLabel":"Exécuter","commands.custom.argumentsPrompt.cancelLabel":"Annuler","commands.custom.argumentsPrompt.openFailed.message":"Impossible d'ouvrir l'invite d'arguments.","commands.custom.argumentsPrompt.openFailed.title":"Arguments de commande","commands.custom.entries.descriptionFallback":"Commande personnalisée","commands.custom.sessionRequired.message":"Sélectionnez une session avant d'exécuter une commande personnalisée.","commands.custom.sessionRequired.title":"Session requise","commands.custom.runFailed.message":"Impossible d'exécuter la commande personnalisée. Consultez la console pour les détails.","commands.custom.runFailed.title":"Échec de la commande","unifiedPicker.loading.searching":"Recherche...","unifiedPicker.loading.loadingWorkspace":"Chargement de l'espace de travail...","unifiedPicker.title.command":"Sélectionner une commande","unifiedPicker.title.mention":"Sélectionner un agent ou un fichier","unifiedPicker.empty":"Aucun résultat","unifiedPicker.sections.commands":"COMMANDES","unifiedPicker.sections.agents":"AGENTS","unifiedPicker.sections.files":"FICHIERS","unifiedPicker.sections.workspaceRoot":"RACINE DE L'ESPACE DE TRAVAIL","unifiedPicker.badge.subagent":"sous-agent","unifiedPicker.footer.navigate":"naviguer","unifiedPicker.footer.select":"sélectionner","unifiedPicker.footer.close":"fermer"},o={"alertDialog.fallbackTitle.info":"Attention","alertDialog.fallbackTitle.warning":"Veuillez vérifier","alertDialog.fallbackTitle.error":"Un problème est survenu","alertDialog.actions.confirm":"Confirmer","alertDialog.actions.run":"Exécuter","alertDialog.actions.ok":"OK","alertDialog.actions.cancel":"Annuler","alertDialog.prompt.inputLabel":"Saisie","backgroundProcessOutputDialog.title":"Sortie en arrière-plan","backgroundProcessOutputDialog.actions.close":"Fermer","backgroundProcessOutputDialog.loading":"Chargement de la sortie...","backgroundProcessOutputDialog.truncatedNotice":"Sortie tronquée pour l'affichage.","backgroundProcessOutputDialog.loadErrorFallback":"Impossible de charger la sortie."},n={"directoryBrowser.defaultDescription":"Parcourez les dossiers sous la racine d'espace de travail configurée.","directoryBrowser.close":"Fermer","directoryBrowser.currentFolder":"Sélectionner un dossier ou saisir un chemin","directoryBrowser.currentFolder.inputAriaLabel":"Chemin du dossier","directoryBrowser.currentFolder.inputPlaceholder":"Saisissez ou collez un chemin de dossier","directoryBrowser.openCurrent":"Ouvrir","directoryBrowser.selectCurrent":"Sélectionner le dossier actuel","directoryBrowser.newFolder":"Nouveau dossier","directoryBrowser.creating":"Création…","directoryBrowser.loadingFolders":"Chargement des dossiers…","directoryBrowser.noFolders":"Aucun dossier disponible.","directoryBrowser.upOneLevel":"Remonter d'un niveau","directoryBrowser.select":"Sélectionner","directoryBrowser.load.errorFallback":"Impossible de charger le système de fichiers","directoryBrowser.createFolder.promptMessage":"Créer un nouveau dossier dans le répertoire courant.","directoryBrowser.createFolder.title":"Nouveau dossier","directoryBrowser.createFolder.inputLabel":"Nom du dossier","directoryBrowser.createFolder.inputPlaceholder":"ex. mon-nouveau-projet","directoryBrowser.createFolder.confirmLabel":"Créer","directoryBrowser.createFolder.cancelLabel":"Annuler","directoryBrowser.createFolder.invalidNameMessage":"Veuillez saisir un seul nom de dossier.","directoryBrowser.createFolder.invalidNameDetail":"Les noms de dossier ne peuvent pas contenir de barres obliques, '..' ou '~'.","directoryBrowser.createFolder.errorFallback":"Impossible de créer le dossier","filesystemBrowser.descriptionFallback":"Recherchez un chemin sous la racine d'espace de travail configurée.","filesystemBrowser.rootLabel":"Racine : {root}","filesystemBrowser.actions.close":"Fermer","filesystemBrowser.actions.retry":"Réessayer","filesystemBrowser.actions.select":"Sélectionner","filesystemBrowser.filterLabel":"Filtrer","filesystemBrowser.search.placeholder.directories":"Rechercher des dossiers","filesystemBrowser.search.placeholder.files":"Rechercher des fichiers","filesystemBrowser.currentFolder.label":"Dossier actuel","filesystemBrowser.currentFolder.selectCurrent":"Sélectionner le dossier actuel","filesystemBrowser.loading.filesystem":"système de fichiers","filesystemBrowser.loading.workspaceRoot":"racine de l'espace de travail","filesystemBrowser.loading.loadingWithPath":"Chargement de {path}…","filesystemBrowser.empty.noEntries":"Aucune entrée trouvée.","filesystemBrowser.navigation.upOneLevel":"Remonter d'un niveau","filesystemBrowser.hints.navigate":"Naviguer","filesystemBrowser.hints.select":"Sélectionner","filesystemBrowser.hints.close":"Fermer","filesystemBrowser.errors.loadFilesystemFallback":"Impossible de charger le système de fichiers","filesystemBrowser.errors.openDirectoryFallback":"Impossible d'ouvrir le répertoire"},r={"folderSelection.language.ariaLabel":"Langue","folderSelection.logoAlt":"Logo CodeNomad","folderSelection.tagline":"Sélectionnez un dossier pour commencer à coder avec l'IA","folderSelection.links.github":"GitHub de CodeNomad","folderSelection.links.githubStars":"Étoiles GitHub de CodeNomad","folderSelection.links.discord":"Discord de CodeNomad","folderSelection.empty.title":"Aucun dossier récent","folderSelection.empty.description":"Parcourez un dossier pour commencer","folderSelection.recent.title":"Dossiers récents","folderSelection.recent.subtitle.one":"{count} dossier disponible","folderSelection.recent.subtitle.other":"{count} dossiers disponibles","folderSelection.recent.rename":"Renommer l'espace de travail","folderSelection.recent.remove":"Retirer des récents","folderSelection.recent.openBadge":"Ouvert","folderSelection.recent.alreadyOpenTitle":"Projet déjà ouvert","folderSelection.recent.alreadyOpenMessage":"Choisissez comment ouvrir ce dossier.","folderSelection.recent.switchToOpenProject":"Basculer vers le projet ouvert","folderSelection.recent.openAnotherInstance":"Ouvrir une autre instance","folderSelection.browse.title":"Parcourir un dossier","folderSelection.browse.subtitle":"Sélectionnez n'importe quel dossier sur votre ordinateur","folderSelection.browse.button":"Parcourir les dossiers","folderSelection.browse.buttonOpening":"Ouverture...","folderSelection.clone.button":"Cloner un depot Git","folderSelection.clone.destination.title":"Choisir la destination du clone","folderSelection.clone.destination.description":"Selectionnez le dossier ou le depot doit etre clone.","folderSelection.clone.dialog.title":"Cloner un depot Git","folderSelection.clone.dialog.description":"Clonez un depot Git dans un dossier local, puis ouvrez-le comme espace de travail.","folderSelection.clone.dialog.repositoryUrl":"URL du depot","folderSelection.clone.dialog.repositoryUrlPlaceholder":"https://github.com/user/repo.git","folderSelection.clone.dialog.destinationPath":"Dossier de destination","folderSelection.clone.dialog.destinationPathPlaceholder":"Sélectionnez ou saisissez un dossier de destination","folderSelection.clone.dialog.browseDestination":"Parcourir","folderSelection.clone.dialog.cleanupDestination":"Supprimer d'abord le dossier de destination s'il existe deja.","folderSelection.clone.dialog.cancel":"Annuler","folderSelection.clone.dialog.clone":"Cloner","folderSelection.clone.dialog.cloning":"Clonage...","folderSelection.clone.dialog.errorRequired":"L'URL du depot et le dossier de destination sont requis.","folderSelection.actions.title":"Ouvrir un dossier ou se connecter à un serveur","folderSelection.actions.subtitle":"Ouvrez un dossier local ou connectez-vous à un serveur CodeNomad","folderSelection.actions.connectButton":"Se connecter au serveur CodeNomad","folderSelection.advancedSettings":"Paramètres avancés","folderSelection.opencode":"OpenCode","folderSelection.hints.navigate":"Naviguer","folderSelection.hints.select":"Sélectionner","folderSelection.hints.remove":"Retirer","folderSelection.hints.browse":"Parcourir","folderSelection.loading.title":"Démarrage de l'instance...","folderSelection.loading.subtitle":"Patientez pendant que nous préparons votre espace de travail.","folderSelection.drop.title":"Déposez un dossier pour l'ouvrir","folderSelection.drop.subtitle":"Démarrez une nouvelle instance dans le dossier déposé.","folderSelection.drop.invalidTitle":"Impossible d'ouvrir l'élément déposé","folderSelection.drop.invalidMessage":"Déposez un dossier pour démarrer une nouvelle instance.","folderSelection.dialog.title":"Sélectionner l'espace de travail","folderSelection.dialog.description":"Sélectionnez un espace de travail pour commencer à coder.","folderSelection.tabs.local":"Dossiers locaux","folderSelection.tabs.servers":"Serveurs","folderSelection.servers.title":"Serveurs enregistrés","folderSelection.servers.subtitle":"Ouvrez un serveur CodeNomad distant enregistré dans une nouvelle fenêtre","folderSelection.servers.count":"{count} serveurs","folderSelection.servers.empty.title":"Aucun serveur enregistré","folderSelection.servers.empty.description":"Ajoutez un serveur distant pour vous reconnecter rapidement depuis cet appareil","folderSelection.servers.connectTitle":"Se connecter à un serveur","folderSelection.servers.connectSubtitle":"Enregistrez un serveur CodeNomad distant et ouvrez-le dans une nouvelle fenêtre","folderSelection.servers.connectButton":"Se connecter à un serveur","folderSelection.servers.remove":"Supprimer le serveur enregistré","folderSelection.servers.skipTls":"TLS auto-signé","folderSelection.servers.errorTitle":"Échec de la connexion distante","folderSelection.servers.dialog.title":"Se connecter à un serveur","folderSelection.servers.dialog.description":"Ajoutez un serveur CodeNomad distant et ouvrez-le immédiatement si vous le souhaitez.","folderSelection.servers.dialog.name":"Nom du serveur","folderSelection.servers.dialog.namePlaceholder":"Serveur de production","folderSelection.servers.dialog.url":"URL du serveur","folderSelection.servers.dialog.urlPlaceholder":"https://server.example.com","folderSelection.servers.dialog.skipTls":"Ignorer la vérification TLS pour les certificats auto-signés.","folderSelection.servers.dialog.cancel":"Annuler","folderSelection.servers.dialog.save":"Enregistrer","folderSelection.servers.dialog.connect":"Se connecter","folderSelection.servers.dialog.connecting":"Connexion...","folderSelection.servers.dialog.errorRequired":"Le nom du serveur et l'URL sont requis.","folderSelection.servers.dialog.errorConnect":"Impossible de se connecter au serveur distant.","folderSelection.servers.certificateInstall.title":"Installer le certificat local","folderSelection.servers.certificateInstall.confirmMessage":"CodeNomad doit installer un certificat local pour ouvrir des fenetres distantes HTTPS auto-signees. Ce certificat est utilise uniquement pour le trafic du proxy local de bureau sur votre machine. Votre systeme d'exploitation peut afficher une seconde invite de certificat apres cela.","folderSelection.servers.certificateInstall.confirmLabel":"Continuer","folderSelection.servers.certificateInstall.cancelLabel":"Annuler","folderSelection.servers.certificateInstall.cancelled":"CodeNomad a besoin que le certificat local soit approuve avant de pouvoir ouvrir des fenetres distantes HTTPS auto-signees.","folderSelection.sidecars.button":"Ouvrir SideCar","projectRenameDialog.title":"Renommer l'espace de travail","projectRenameDialog.description.withLabel":`Mettez à jour le nom de l'espace de travail pour "{label}".`,"projectRenameDialog.description.default":"Définissez un nom d'espace de travail pour ce dossier.","projectRenameDialog.input.label":"Nom de l'espace de travail","projectRenameDialog.input.placeholder":"Saisissez le nom de l'espace de travail","projectRenameDialog.actions.cancel":"Annuler","projectRenameDialog.actions.rename":"Renommer","projectRenameDialog.actions.renaming":"Renommage..."},a={"instanceTabs.new.title":"Nouvelle instance (Cmd/Ctrl+N)","instanceTabs.new.ariaLabel":"Nouvelle instance","instanceTabs.remote.title":"Connexion à distance","instanceTabs.remote.ariaLabel":"Connexion à distance","instanceInfo.title":"Informations de l'instance","instanceInfo.labels.folder":"Dossier","instanceInfo.labels.project":"Projet","instanceInfo.labels.versionControl":"Contrôle de version","instanceInfo.labels.opencodeVersion":"Version d'OpenCode","instanceInfo.labels.binaryPath":"Chemin du binaire","instanceInfo.labels.environmentVariables":"Variables d'environnement ({count})","instanceInfo.loading":"Chargement...","instanceInfo.server.title":"Serveur","instanceInfo.server.port":"Port :","instanceInfo.server.pid":"PID :","instanceInfo.server.status":"Statut :","instanceTab.status.permission":"En attente d'autorisation","instanceTab.status.compacting":"Compactage","instanceTab.status.working":"En cours","instanceTab.status.idle":"Inactif","instanceTab.status.ariaLabel":"Statut de l'instance : {status}","instanceTab.actions.close.ariaLabel":"Fermer l'instance","instanceShell.leftPanel.sessionsTitle":"Sessions","instanceShell.leftPanel.instanceInfo":"Infos de l'instance","instanceShell.leftDrawer.pin":"Épingler le tiroir gauche","instanceShell.leftDrawer.unpin":"Désépingler le tiroir gauche","instanceShell.leftDrawer.toggle.pinned":"Tiroir gauche épinglé","instanceShell.leftDrawer.toggle.open":"Ouvrir le tiroir gauche","instanceShell.leftDrawer.toggle.close":"Fermer le tiroir gauche","instanceShell.rightDrawer.pin":"Épingler le tiroir droit","instanceShell.rightDrawer.unpin":"Désépingler le tiroir droit","instanceShell.rightDrawer.toggle.pinned":"Tiroir droit épinglé","instanceShell.rightDrawer.toggle.open":"Ouvrir le tiroir droit","instanceShell.rightDrawer.toggle.close":"Fermer le tiroir droit","instanceShell.fullscreen.enter":"Plein écran","instanceShell.fullscreen.exit":"Quitter le plein écran","instanceShell.metrics.usedLabel":"Utilisé","instanceShell.metrics.availableLabel":"Dispo","instanceShell.commandPalette.openAriaLabel":"Ouvrir la palette de commandes","instanceShell.commandPalette.button":"Palette de commandes","instanceShell.chatSearch.openAriaLabel":"Rechercher dans l'historique du chat","instanceShell.connection.ariaLabel":"Connexion {status}","instanceShell.connection.connected":"Connecté","instanceShell.connection.connecting":"Connexion...","instanceShell.connection.disconnected":"Déconnecté","instanceShell.connection.unknown":"Inconnu","instanceWelcome.shortcuts.newSession":"Nouvelle session","instanceWelcome.empty.title":"Aucune session précédente","instanceWelcome.empty.description":"Créez une nouvelle session ci-dessous pour commencer","instanceWelcome.loading.title":"Lancement de l'espace de travail","instanceWelcome.loading.description":"Démarrage d'OpenCode pour cet espace de travail...","instanceWelcome.resume.title":"Reprendre une session","instanceWelcome.resume.subtitle.one":"{count} session disponible","instanceWelcome.resume.subtitle.other":"{count} sessions disponibles","instanceWelcome.session.untitled":"Session sans titre","instanceWelcome.new.title":"Démarrer une nouvelle session","instanceWelcome.new.subtitle":"Nous réutiliserons automatiquement votre dernier agent/modèle","instanceWelcome.new.createButton":"Créer la session","instanceWelcome.overlay.close":"Fermer","instanceWelcome.actions.viewInstanceInfo":"Voir les infos de l'instance","instanceWelcome.actions.renameTitle":"Renommer la session","instanceWelcome.actions.deleteTitle":"Supprimer la session","instanceWelcome.hints.navigate":"Naviguer","instanceWelcome.hints.jump":"Sauter","instanceWelcome.hints.firstLast":"Prem./Dern.","instanceWelcome.hints.resume":"Reprendre","instanceWelcome.hints.delete":"Supprimer","instanceWelcome.toasts.renameError":"Impossible de renommer la session","instanceDisconnected.title":"Instance déconnectée","instanceDisconnected.folderFallback":"cet espace de travail","instanceDisconnected.reasonFallback":"Le serveur ne répond plus","instanceDisconnected.description":"{folder} n'est plus accessible. Fermez l'onglet pour continuer à travailler.","instanceDisconnected.details.title":"Détails","instanceDisconnected.details.folderLabel":"Dossier :","instanceDisconnected.actions.closeInstance":"Fermer l'instance","instanceShell.empty.title":"Aucune session sélectionnée","instanceShell.empty.description":"Envoyez un message ci-dessous pour créer une nouvelle session, ou sélectionnez une session existante pour continuer.","instanceShell.rightPanel.title":"Panneau d'état","instanceShell.rightPanel.tabs.gitChanges":"Changements Git","instanceShell.rightPanel.tabs.files":"Fichiers","instanceShell.rightPanel.tabs.status":"Statut","instanceShell.rightPanel.tabs.ariaLabel":"Onglets du panneau droit","instanceShell.rightPanel.actions.refresh":"Actualiser","instanceShell.rightPanel.actions.save":"Enregistrer (Ctrl+S)","instanceShell.rightPanel.actions.saveConfirm.message":'Voulez-vous enregistrer les modifications de "{path}" avant de changer ?',"instanceShell.rightPanel.actions.saveConfirm.confirmLabel":"Enregistrer","instanceShell.rightPanel.actions.saveConfirm.cancelLabel":"Annuler les modifications","instanceShell.rightPanel.actions.conflict.message":"Le fichier a été modifié par l'agent. Écraser les modifications de l'agent ?","instanceShell.rightPanel.actions.conflict.confirmLabel":"Écraser","instanceShell.rightPanel.actions.conflict.cancelLabel":"Annuler","instanceShell.rightPanel.actions.refreshDirty.message":"Le fichier a des modifications non enregistrées. Actualiser supprimera vos modifications. Continuer ?","instanceShell.rightPanel.actions.refreshDirty.confirmLabel":"Actualiser","instanceShell.rightPanel.actions.refreshDirty.cancelLabel":"Annuler","instanceShell.rightPanel.toast.saveSuccess":"Fichier enregistré avec succès","instanceShell.rightPanel.toast.saveError":"Échec de l'enregistrement du fichier","instanceShell.rightPanel.sections.yoloMode":"Mode yolo","instanceShell.rightPanel.sections.yoloMode.tooltip":"Approuve automatiquement les demandes d'autorisation pour la session actuelle. A utiliser seulement si vous faites confiance aux outils executes.","instanceShell.rightPanel.sections.plan":"Plan","instanceShell.rightPanel.sections.plan.tooltip":"Feuille de route de l'agent pour cette session. Suit les tâches et leur statut d'achèvement.","instanceShell.rightPanel.sections.backgroundProcesses":"Shells en arrière-plan","instanceShell.rightPanel.sections.backgroundProcesses.tooltip":"Processus longs démarrés par l'agent. Vous pouvez surveiller leur sortie, les arrêter ou les terminer.","instanceShell.rightPanel.sections.mcp":"Serveurs MCP","instanceShell.rightPanel.sections.mcp.tooltip":"Serveurs du protocole Model Context Protocol qui étendent les capacités de l'agent avec des outils externes.","instanceShell.rightPanel.sections.lsp":"Serveurs LSP","instanceShell.rightPanel.sections.lsp.tooltip":"Serveurs du protocole Language Server Protocol fournissant l'intelligence de code et les diagnostics.","instanceShell.rightPanel.sections.plugins":"Plugins","instanceShell.rightPanel.sections.plugins.tooltip":"Plugins qui personnalisent le comportement de l'UI et du serveur, ajoutant des fonctionnalités au-delà de MCP et LSP.","instanceShell.gitChanges.noSessionSelected":"Sélectionnez une session pour voir les changements Git.","instanceShell.gitChanges.loading":"Chargement des changements Git...","instanceShell.gitChanges.empty":"Aucun changement Git pour l'instant.","instanceShell.gitChanges.deleted":"Supprimé","instanceShell.gitChanges.binaryViewer":"Impossible d'afficher un fichier binaire","instanceShell.gitChanges.sections.staged":"Changements indexés","instanceShell.gitChanges.sections.unstaged":"Changements","instanceShell.gitChanges.actions.insertContext":"Ajouter au prompt","instanceShell.gitChanges.actions.stage":"Indexer le fichier","instanceShell.gitChanges.actions.unstage":"Retirer de l'index","instanceShell.gitChanges.commit.placeholder":"Saisissez le message du commit","instanceShell.gitChanges.commit.submit":"Valider","instanceShell.gitChanges.commit.submitting":"Validation...","instanceShell.gitChanges.commit.success":"Commit créé avec succès","instanceShell.gitChanges.commit.error":"Impossible de créer le commit","instanceShell.filesShell.fileListTitle":"Liste des fichiers","instanceShell.filesShell.mobileSelectorLabel":"Sélectionner un fichier","instanceShell.filesShell.mobileSelectorEmpty":"Sélectionnez un fichier","instanceShell.filesShell.viewerTitle":"Visionneuse de changements","instanceShell.filesShell.viewerPlaceholder":"Le rendu détaillé sera ajouté à l'étape suivante.","instanceShell.filesShell.viewerEmpty":"Aucun fichier sélectionné.","instanceShell.filesShell.listEmpty":"Aucun fichier dans ce dossier.","instanceShell.filesShell.search.placeholder":"Filtrer les fichiers de ce dossier","instanceShell.filesShell.search.ariaLabel":"Filtrer les fichiers de ce dossier","instanceShell.filesShell.search.empty":"Aucun fichier correspondant.","instanceShell.filesShell.actions.copyPath":"Copier le chemin","instanceShell.filesShell.toast.copyPathSuccess":"Chemin copié","instanceShell.filesShell.toast.copyPathError":"Impossible de copier le chemin","instanceShell.filesShell.previewMarkdown":"Aperçu Markdown","instanceShell.filesShell.showSource":"Afficher la source","instanceShell.filesShell.enableWordWrap":"Activer le retour à la ligne","instanceShell.filesShell.disableWordWrap":"Désactiver le retour à la ligne","instanceShell.filesShell.hideFiles":"Masquer les fichiers","instanceShell.filesShell.showFiles":"Afficher les fichiers","instanceShell.diff.hideUnchanged":"Masquer les zones inchangées","instanceShell.diff.showFull":"Afficher le fichier complet","instanceShell.diff.switchToSplit":"Passer à la vue côte à côte","instanceShell.diff.switchToUnified":"Passer à la vue unifiée","instanceShell.diff.enableWordWrap":"Activer le retour à la ligne","instanceShell.diff.disableWordWrap":"Désactiver le retour à la ligne","instanceShell.worktree.create":"+ Créer un worktree","instanceShell.plan.noSessionSelected":"Sélectionnez une session pour voir le plan.","instanceShell.plan.empty":"Aucun plan pour l'instant.","instanceShell.yoloMode.noSessionSelected":"Selectionnez une session pour configurer le mode yolo.","instanceShell.yoloMode.title":"Mode yolo","instanceShell.yoloMode.description":"Approuve automatiquement les demandes d'autorisation pour cette session. Desactive par defaut.","instanceShell.yoloMode.badge":"Mode yolo","instanceShell.yoloMode.badgeAriaLabel":"Mode yolo active","instanceShell.backgroundProcesses.empty":"Aucun processus en arrière-plan.","instanceShell.backgroundProcesses.status":"Statut : {status}","instanceShell.backgroundProcesses.output":"Sortie : {sizeKb}KB","instanceShell.backgroundProcesses.notify.enabled":"Notification de fin activee","instanceShell.backgroundProcesses.notify.disabled":"Notification de fin desactivee","instanceShell.backgroundProcesses.actions.output":"Sortie","instanceShell.backgroundProcesses.actions.stop":"Arrêter","instanceShell.backgroundProcesses.actions.terminate":"Terminer","instanceShell.worktree.delete.error.title":"Echec de suppression","instanceShell.worktree.delete.error.fallback":"Impossible de supprimer le worktree","instanceShell.worktree.delete.error.causeLabel":"Cause probable :","instanceShell.worktree.delete.error.nextStepLabel":"Etape suivante suggeree :","instanceShell.worktree.delete.error.summary.localChanges":"Git a refuse de supprimer ce worktree car il contient des fichiers modifies ou non suivis.","instanceShell.worktree.delete.error.summary.inUse":"CodeNomad n'a pas pu supprimer ce worktree car quelque chose utilise encore des fichiers dans ce dossier.","instanceShell.worktree.delete.error.summary.notFound":"CodeNomad n'a pas pu supprimer ce worktree car le dossier ou l'enregistrement du worktree est introuvable.","instanceShell.worktree.delete.error.summary.permissionDenied":"CodeNomad n'a pas pu supprimer ce worktree car l'acces au dossier a ete refuse.","instanceShell.worktree.delete.error.summary.unknown":"CodeNomad n'a pas pu supprimer ce worktree.","instanceShell.worktree.delete.error.cause.localChanges":"Modifications locales","instanceShell.worktree.delete.error.cause.inUse":"Un autre processus utilise ce worktree","instanceShell.worktree.delete.error.cause.notFound":"Le dossier ou l'enregistrement du worktree est manquant","instanceShell.worktree.delete.error.cause.permissionDenied":"Permissions du systeme de fichiers insuffisantes","instanceShell.worktree.delete.error.cause.unknown":"Le backend a renvoye une erreur de suppression non classee","instanceShell.worktree.delete.error.nextStep.localChanges":"Activez la suppression forcee si vous voulez jeter les modifications locales, ou nettoyez le worktree puis reessayez.","instanceShell.worktree.delete.error.nextStep.inUse":"Fermez les terminaux, editeurs, observateurs ou processus en arrière-plan qui utilisent ce worktree puis reessayez.","instanceShell.worktree.delete.error.nextStep.notFound":"Rechargez les worktrees puis reessayez. Si cela echoue encore, inspectez le chemin du worktree sur le disque.","instanceShell.worktree.delete.error.nextStep.permissionDenied":"Verifiez les permissions du systeme de fichiers et fermez les applications qui peuvent verrouiller ce dossier, puis reessayez.","instanceShell.worktree.delete.error.nextStep.unknown":"Consultez l'erreur brute ci-dessous pour les details, puis reessayez apres avoir corrige le probleme signale.","instanceShell.worktree.delete.error.copyRaw":"Copier l'erreur","instanceShell.worktree.delete.error.copySanitized":"Copier la version nettoyee","instanceShell.worktree.delete.error.copySuccess":"Erreur de suppression copiee","instanceShell.worktree.delete.error.copySanitizedSuccess":"Erreur de suppression nettoyee copiee","instanceShell.worktree.delete.error.copyFailure":"Impossible de copier l'erreur de suppression","versionPill.appWithVersion":"Appli {version}","versionPill.ui":"UI","versionPill.uiWithVersion":"UI {version}","versionPill.source":" ({source})","opencodeBinarySelector.title":"Binaire OpenCode","opencodeBinarySelector.subtitle":"Choisissez quel exécutable OpenCode doit lancer","opencodeBinarySelector.customPath.placeholder":"Saisissez le chemin vers le binaire opencode…","opencodeBinarySelector.actions.add":"Ajouter","opencodeBinarySelector.actions.browse":"Parcourir le binaire…","opencodeBinarySelector.actions.removeTitle":"Supprimer le binaire","opencodeBinarySelector.badge.systemPath":"Utiliser le binaire depuis le PATH système","opencodeBinarySelector.status.checkingVersions":"Vérification des versions…","opencodeBinarySelector.status.checking":"Vérification…","opencodeBinarySelector.dialog.title":"Sélectionner le binaire OpenCode","opencodeBinarySelector.dialog.description":"Parcourez les fichiers exposés par le serveur CLI.","opencodeBinarySelector.validation.invalidBinary":"Binaire OpenCode invalide","opencodeBinarySelector.validation.alreadyValidating":"Validation déjà en cours","opencodeBinarySelector.display.systemPath":"{name} (PATH système)","opencodeBinarySelector.versionLabel":"v{version}"},l={"loadingScreen.logoAlt":"Logo CodeNomad","loadingScreen.status.issue":"Un problème est survenu","loadingScreen.actions.showAnother":"En afficher un autre","loadingScreen.errors.missingRoot":"Élément racine de chargement introuvable","loadingScreen.phrases.neurons":"Réchauffage des neurones de l'IA…","loadingScreen.phrases.daydreaming":"On convainc l'IA d'arrêter de rêvasser…","loadingScreen.phrases.goggles":"Polissage des lunettes de code de l'IA…","loadingScreen.phrases.reorganizingFiles":"On demande à l'IA d'arrêter de réorganiser vos fichiers…","loadingScreen.phrases.coffee":"On donne un café supplémentaire à l'IA…","loadingScreen.phrases.nodeModules":"On apprend à l'IA à ne pas supprimer node_modules (encore)…","loadingScreen.phrases.actNatural":"On dit à l'IA d'avoir l'air naturel avant votre arrivée…","loadingScreen.phrases.rewritingHistory":"On demande à l'IA d'arrêter de réécrire l'histoire…","loadingScreen.phrases.stretch":"On laisse l'IA s'étirer avant son sprint de code…","loadingScreen.phrases.keyboardControl":"On persuade l'IA de vous rendre le contrôle du clavier…"},c={"logsView.title":"Journaux du serveur","logsView.actions.show":"Afficher les journaux du serveur","logsView.actions.hide":"Masquer les journaux du serveur","logsView.actions.clear":"Effacer les journaux","logsView.actions.back":"Retour à la conversation","logsView.envVars.title":"Variables d'environnement ({count})","logsView.paused.title":"Les journaux du serveur sont en pause","logsView.paused.description":"Activez le streaming pour suivre l'activité de votre serveur OpenCode.","logsView.empty.waiting":"En attente de la sortie du serveur...","logsView.scrollToTop":"Aller en haut","logsView.scrollToBottom":"Aller en bas","infoView.logs.title":"Journaux du serveur","infoView.logs.actions.show":"Afficher les journaux du serveur","infoView.logs.actions.hide":"Masquer les journaux du serveur","infoView.logs.actions.clear":"Effacer les journaux","infoView.logs.actions.back":"Retour à la conversation","infoView.logs.paused.title":"Les journaux du serveur sont en pause","infoView.logs.paused.description":"Activez le streaming pour suivre l'activité de votre serveur OpenCode.","infoView.logs.empty.waiting":"En attente de la sortie du serveur...","infoView.logs.scrollToTop":"Aller en haut","infoView.logs.scrollToBottom":"Aller en bas","infoView.dispose.actions.dispose":"Réinitialiser l'instance","infoView.dispose.actions.disposing":"Réinitialisation...","infoView.dispose.confirm.title":"Réinitialiser l'instance ?","infoView.dispose.confirm.message":"Cela efface l'état en cache pour ce répertoire et recharge l'instance.","infoView.dispose.confirm.confirmLabel":"Réinitialiser","infoView.dispose.confirm.cancelLabel":"Annuler","infoView.dispose.toast.success":"Instance réinitialisée. Rechargement...","infoView.dispose.toast.error":"Impossible de réinitialiser l'instance."},d={"markdown.codeBlock.copy.label":"Copier","markdown.codeBlock.copy.copied":"Copié !","markdown.codeBlock.copy.failed":"Échec","markdown.copy":"Copier"},u={"messageListHeader.sidebar.openSessionListAriaLabel":"Ouvrir la liste des sessions","messageListHeader.metrics.usedLabel":"Utilisé","messageListHeader.metrics.availableLabel":"Dispo","messageListHeader.commandPalette.ariaLabel":"Ouvrir la palette de commandes","messageListHeader.commandPalette.button":"Palette de commandes","messageListHeader.connection.connected":"Connecté","messageListHeader.connection.connecting":"Connexion...","messageListHeader.connection.disconnected":"Déconnecté","messageSection.empty.logoAlt":"Logo CodeNomad","messageSection.empty.brandTitle":"CodeNomad","messageSection.empty.title":"Démarrer une conversation","messageSection.empty.description":"Saisissez un message ci-dessous ou ouvrez la palette de commandes :","messageSection.empty.tips.commandPalette":"Palette de commandes","messageSection.empty.tips.askAboutCodebase":"Parler de votre codebase","messageSection.empty.tips.attachFilesPrefix":"Joindre des fichiers avec","messageSection.loading.messages":"Chargement des messages...","messageSection.loadError.title":"Impossible de charger les messages","messageSection.loadError.reload":"Recharger les messages","messageSection.scroll.toFirstAriaLabel":"Aller au premier message","messageSection.scroll.toLatestAriaLabel":"Aller au dernier message","messageSection.scroll.showControlsAriaLabel":"Afficher les contrôles de défilement","messageSection.scroll.enableHoldAriaLabel":"Activer le maintien pour les longues réponses de l'assistant","messageSection.scroll.disableHoldAriaLabel":"Désactiver le maintien pour les longues réponses de l'assistant","messageSection.quote.addAsQuote":"Ajouter en citation","messageSection.quote.addAsCode":"Ajouter en code","messageSection.quote.copy":"Copier","messageSection.quote.copied":"Copié !","messageSection.quote.copyFailed":"Impossible de copier","messageSection.search.ariaLabel":"Rechercher dans l'historique du chat","messageSection.search.placeholder":"Rechercher dans le chat actuel...","messageSection.search.count.empty":"Rechercher","messageSection.search.count.minChars":"{count}+ caractères","messageSection.search.count.searching":"Recherche...","messageSection.search.count.none":"Aucun résultat","messageSection.search.count.matches":"{current} / {total}","messageSection.search.previousAriaLabel":"Résultat précédent","messageSection.search.nextAriaLabel":"Résultat suivant","messageSection.search.closeAriaLabel":"Fermer la recherche","messageSection.search.searching":"Recherche...","messageSection.search.noVisibleMatches":"Aucun résultat visible","messageTimeline.ariaLabel":"Chronologie des messages","messageTimeline.segment.user.label":"Vous","messageTimeline.segment.assistant.label":"Asst","messageTimeline.segment.compaction.label":"Compactage","messageTimeline.tool.fallbackLabel":"Appel d'outil","messageTimeline.tooltip.userFallback":"Message utilisateur","messageTimeline.tooltip.assistantFallback":"Réponse de l'assistant","messageTimeline.tooltip.compaction.auto":"Compaction auto","messageTimeline.tooltip.compaction.manual":"Compaction utilisateur","messageTimeline.text.filePrefix":"[Fichier] {filename}","messageTimeline.text.attachment":"Pièce jointe","messageBlock.tool.header":"Appel d'outil","messageBlock.tool.unknown":"inconnu","messageBlock.tool.goToSession.label":"Aller à la session","messageBlock.tool.goToSession.title":"Aller à la session","messageBlock.tool.goToSession.unavailableTitle":"Session pas encore disponible","messageBlock.tool.deletePart.label":"Supprimer la partie","messageBlock.tool.deletePart.deleting":"Suppression...","messageBlock.tool.deletePart.title":"Supprimer cette sortie d'outil","messageBlock.tool.deletePart.failed.title":"Échec de suppression","messageBlock.tool.deletePart.failed.message":"Impossible de supprimer la sortie d'outil","messageBlock.compaction.ariaLabel":"Compaction de la session","messageBlock.compaction.autoLabel":"Session compactée automatiquement","messageBlock.compaction.manualLabel":"Session compactée par vous","messageBlock.usage.input":"Entrée","messageBlock.usage.output":"Sortie","messageBlock.usage.reasoning":"Raisonnement","messageBlock.usage.cacheRead":"Lecture du cache","messageBlock.usage.cacheWrite":"Écriture du cache","messageBlock.usage.cost":"Coût","messageBlock.step.agentLabel":"Agent : {agent}","messageBlock.step.modelLabel":"Modèle : {model}","messageBlock.reasoning.thinkingLabel":"Réflexion","messageBlock.reasoning.expandAriaLabel":"Développer la réflexion","messageBlock.reasoning.collapseAriaLabel":"Réduire la réflexion","messageBlock.reasoning.indicator.hide":"Masquer","messageBlock.reasoning.indicator.view":"Voir","messageBlock.reasoning.detailsAriaLabel":"Détails du raisonnement","messageBlock.reasoning.thoughtsFallback":"Réflexions","messageBlock.reasoning.thoughtFor.seconds.one":"Réflexion pendant {count} seconde","messageBlock.reasoning.thoughtFor.seconds.other":"Réflexion pendant {count} secondes","messageBlock.reasoning.thoughtFor.minutes.one":"Réflexion pendant {count} minute","messageBlock.reasoning.thoughtFor.minutes.other":"Réflexion pendant {count} minutes","messageBlock.reasoning.thoughtFor.hours.one":"Réflexion pendant {count} heure","messageBlock.reasoning.thoughtFor.hours.other":"Réflexion pendant {count} heures","messageBlock.reasoning.copyTitle":"Copier les réflexions","messageBlock.reasoning.copyAriaLabel":"Copier les réflexions","codeBlockInline.actions.copy":"Copier","codeBlockInline.actions.copied":"Copié !","messageItem.speaker.you":"Vous","messageItem.speaker.assistant":"Assistant","messageItem.actions.revert":"Revenir","messageItem.actions.revertTitle":"Annuler les changements jusqu'ici (supprime les messages)","messageItem.actions.fork":"Bifurquer","messageItem.actions.forkTitle":"Bifurquer depuis ce message","messageItem.actions.copy":"Copier","messageItem.actions.copyTitle":"Copier le message","messageItem.actions.copied":"Copié !","messageItem.actions.more":"Plus d'actions","messageItem.actions.speak":"Lire le message","messageItem.actions.generatingSpeech":"Generation de l'audio","messageItem.actions.stopSpeech":"Arreter la lecture","messageItem.actions.speak.error.title":"La lecture vocale a echoue","messageItem.actions.speak.error.unsupported":"La lecture vocale n'est pas prise en charge dans ce navigateur.","messageItem.actions.speak.error.unavailable":"La lecture vocale n'est pas disponible tant que les parametres vocaux ne sont pas configures.","messageItem.actions.speak.error.generate":"Impossible de generer l'audio pour ce message.","messageItem.actions.deleteMessage":"Supprimer le message (sans annuler les changements)","messageItem.actions.deleteMessagesUpTo":"Supprimer les messages jusqu'ici (sans annuler les changements)","messageItem.actions.deletingMessage":"Suppression...","messageItem.actions.deleteMessageFailedTitle":"Échec de suppression","messageItem.actions.deleteMessageFailedMessage":"Impossible de supprimer le message","messageItem.selection.checkboxAriaLabel":"Sélectionner le message pour suppression","messageItem.selection.selectForDeletion":"Sélectionner le message pour suppression","messageItem.selection.deselectForDeletion":"Désélectionner le message pour suppression","messageItem.duration.workedFor.seconds.one":"A travaillé pendant {count} seconde","messageItem.duration.workedFor.seconds.other":"A travaillé pendant {count} secondes","messageItem.duration.workedFor.minutes.one":"A travaillé pendant {count} minute","messageItem.duration.workedFor.minutes.other":"A travaillé pendant {count} minutes","messageItem.duration.workedFor.hours.one":"A travaillé pendant {count} heure","messageItem.duration.workedFor.hours.other":"A travaillé pendant {count} heures","messageSection.bulkDelete.toolbarAriaLabel":"Éléments sélectionnés ({count})","messageSection.bulkDelete.deleteSelectedTitle":"Supprimer les éléments sélectionnés","messageSection.bulkDelete.selectAllTitle":"Tout sélectionner","messageSection.bulkDelete.moreOptionsTitle":"Plus d'options","messageSection.bulkDelete.selectionModeLabel":"Sélection","messageSection.bulkDelete.selectionModeAll":"Tous","messageSection.bulkDelete.selectionModeTools":"Outils uniquement","messageSection.bulkDelete.selectionHint.toggle":"Selectionner un element","messageSection.bulkDelete.selectionHint.range":"Selectionner une plage","messageSection.bulkDelete.selectionHint.clear":"Effacer la selection","messageSection.bulkDelete.cancelTitle":"Annuler la sélection","messageSection.bulkDelete.failedTitle":"Échec de suppression","messageSection.bulkDelete.failedMessage":"Impossible de supprimer les éléments sélectionnés","messageItem.status.queued":"EN FILE","messageItem.status.generating":"Génération...","messageItem.status.sending":"Envoi...","messageItem.status.failedToSend":"Échec de l'envoi du message","messagePart.actions.delete":"Supprimer la partie","messagePart.actions.deleting":"Suppression...","messagePart.actions.deleteTitle":"Supprimer cet élément","messagePart.actions.deleteFailedTitle":"Échec de suppression","messagePart.actions.deleteFailedMessage":"Impossible de supprimer l'élément","messagePart.pastedText.summary":"Texte collé","messagePart.pastedText.lines.one":"{count} ligne","messagePart.pastedText.lines.other":"{count} lignes","messagePart.pastedText.copyAriaLabel":"Copier le bloc de texte collé","messageItem.attachment.defaultName":"piece-jointe","messageItem.attachment.downloadAriaLabel":"Télécharger {name}","messageItem.agentMeta.agentLabel":"Agent : {agent}","messageItem.agentMeta.modelLabel":"Modèle : {model}","messageItem.errors.authenticationFallback":"Erreur d'authentification","messageItem.errors.outputLengthExceeded":"Longueur de sortie du message dépassée","messageItem.errors.requestAborted":"La requête a été annulée","messageItem.errors.unknownFallback":"Une erreur inconnue est survenue","attachmentChip.removeAriaLabel":"Retirer la pièce jointe","expandButton.toggleAriaLabel":"Basculer la hauteur de la zone de saisie","promptInput.placeholder.shell":"Exécuter une commande shell (Esc pour quitter)...","promptInput.placeholder.default":"Tapez votre message, @fichier, @agent, ou collez des images et du texte...","promptInput.hints.shell.exit":"pour quitter le mode shell","promptInput.hints.shell.enable":"Mode shell","promptInput.hints.commands":"Commandes","promptInput.history.previousAriaLabel":"Prompt précédent","promptInput.history.nextAriaLabel":"Prompt suivant","promptInput.resizeHandle.title":"Faites glisser pour redimensionner la hauteur de saisie","promptInput.overlay.newLine":"Nouvelle ligne","promptInput.overlay.send":"Envoyer","promptInput.overlay.filesAgents":"Fichiers/agents","promptInput.overlay.history":"Historique","promptInput.overlay.attachments":"• {count} fichier(s) joint(s)","promptInput.overlay.shellModeActive":"Mode shell actif","promptInput.overlay.press":"Appuyez sur","promptInput.overlay.againToAbort":"à nouveau pour interrompre la session","promptInput.stopSession.ariaLabel":"Arrêter la session","promptInput.stopSession.title":"Arrêter la session","promptInput.attachFiles.ariaLabel":"Joindre des fichiers","promptInput.attachFiles.title":"Joindre des fichiers","promptInput.attachFiles.dialogTitle":"Joindre des fichiers","promptInput.attachFiles.errorTitle":"Echec de la piece jointe","promptInput.attachFiles.skipped.title":"Certains fichiers n'ont pas ete joints","promptInput.attachFiles.skipped.one":"1 fichier selectionne n'a pas pu etre joint car cet environnement n'a fourni ni chemin de fichier ni donnees de previsualisation compatibles.","promptInput.attachFiles.skipped.other":"{count} fichiers selectionnes n'ont pas pu etre joints car cet environnement n'a fourni ni chemins de fichier ni donnees de previsualisation compatibles.","promptInput.attachFiles.tooLarge.one":"1 fichier selectionne n'a pas pu etre joint car il depasse la limite de 5 Mo.","promptInput.clear.ariaLabel":"Effacer le texte du prompt","promptInput.clear.title":"Effacer le texte du prompt","promptInput.send.ariaLabel":"Envoyer le message","promptInput.send.errorFallback":"Impossible d'envoyer le message","promptInput.send.errorTitle":"Échec de l'envoi","promptInput.conversationMode.enable.title":"Activer le mode conversation","promptInput.conversationMode.disable.title":"Desactiver le mode conversation","promptInput.conversationMode.error.title":"La lecture de la conversation a echoue","promptInput.conversationMode.error.message":"Impossible de continuer a lire les reponses de l'assistant.","promptInput.voiceInput.start.title":"Démarrer la saisie vocale","promptInput.voiceInput.stop.title":"Arrêter l'enregistrement et transcrire","promptInput.voiceInput.transcribing.title":"Transcription de l'audio","promptInput.voiceInput.error.title":"Échec de la saisie vocale","promptInput.voiceInput.error.permission":"L'accès au microphone est requis pour enregistrer la saisie vocale.","promptInput.voiceInput.error.permissionDenied":"macOS a refusé l'accès au microphone.","promptInput.voiceInput.error.unsupported":"La saisie vocale n'est pas prise en charge dans ce navigateur.","promptInput.voiceInput.error.transcribe":"Impossible de transcrire l'audio enregistré."},p={"remoteAccess.eyebrow":"Passation à distance","remoteAccess.title":"Se connecter à CodeNomad à distance","remoteAccess.subtitle":"Utilisez les adresses ci-dessous pour ouvrir CodeNomad depuis un autre appareil.","remoteAccess.close":"Fermer l'accès à distance","remoteAccess.refresh":"Rafraîchir","remoteAccess.sections.listeningMode.label":"Mode d'écoute","remoteAccess.sections.listeningMode.help":"Autorisez ou limitez les passations à distance en écoutant sur toutes les interfaces ou uniquement sur localhost.","remoteAccess.toggle.on":"Activé","remoteAccess.toggle.off":"Désactivé","remoteAccess.toggle.title":"Autoriser les connexions depuis d'autres IP","remoteAccess.toggle.caption.all":"Écoute sur 0.0.0.0","remoteAccess.toggle.caption.local":"Écoute sur 127.0.0.1","remoteAccess.toggle.note":"Modifier ceci nécessite un redémarrage et stoppe temporairement toutes les instances actives. Partagez les adresses ci-dessous une fois le serveur redémarré.","remoteAccess.listeningMode.restartConfirm.message":"Redémarrer pour appliquer le mode d'écoute ? Cela arrêtera toutes les instances en cours.","remoteAccess.listeningMode.restartConfirm.title.all":"Ouvrir aux autres appareils","remoteAccess.listeningMode.restartConfirm.title.local":"Limiter à cet appareil","remoteAccess.listeningMode.restartConfirm.confirmLabel":"Redémarrer maintenant","remoteAccess.listeningMode.restartConfirm.cancelLabel":"Annuler","remoteAccess.restart.errorManual":"Impossible de redémarrer automatiquement. Veuillez redémarrer l'application pour appliquer le changement.","remoteAccess.sections.serverPassword.label":"Mot de passe du serveur","remoteAccess.sections.serverPassword.help":"Les passations à distance nécessitent un mot de passe. Définissez-en un facile à retenir pour autoriser la connexion depuis d'autres appareils.","remoteAccess.authStatus.unavailable":"Statut d'authentification indisponible.","remoteAccess.username":"Nom d'utilisateur : {username}","remoteAccess.password.status.set":"Un mot de passe est défini pour l'accès à distance.","remoteAccess.password.status.unset":"Aucun mot de passe mémorable n'est encore défini. Définissez-en un pour autoriser les connexions à distance.","remoteAccess.password.actions.cancel":"Annuler","remoteAccess.password.actions.change":"Changer le mot de passe","remoteAccess.password.actions.set":"Définir le mot de passe","remoteAccess.password.form.newPassword":"Nouveau mot de passe","remoteAccess.password.form.confirmPassword":"Confirmer le mot de passe","remoteAccess.password.form.placeholder":"Au moins 8 caractères","remoteAccess.password.error.tooShort":"Le mot de passe doit contenir au moins 8 caractères.","remoteAccess.password.error.mismatch":"Les mots de passe ne correspondent pas.","remoteAccess.password.save.saving":"Enregistrement…","remoteAccess.password.save.label":"Enregistrer le mot de passe","remoteAccess.sections.addresses.label":"Adresses accessibles","remoteAccess.sections.addresses.help":"Lancez ou scannez depuis une autre machine pour passer le contrôle.","remoteAccess.addresses.loading":"Chargement des adresses…","remoteAccess.addresses.none":"Aucune adresse disponible pour le moment.","remoteAccess.addresses.actions.showOther":"Afficher {count} autres adresses","remoteAccess.addresses.actions.hideOther":"Masquer les autres adresses","remoteAccess.address.scope.network":"Réseau","remoteAccess.address.scope.loopback":"Boucle locale","remoteAccess.address.scope.internal":"Interne","remoteAccess.address.open":"Ouvrir","remoteAccess.address.showQr":"Afficher le QR","remoteAccess.address.hideQr":"Masquer le QR","remoteAccess.address.qrAlt":"QR pour {url}"},m={"sessionPicker.title":"OpenCode • {folder}","sessionPicker.empty.noPrevious":"Aucune session précédente","sessionPicker.resume.title":"Reprendre une session ({count}) :","sessionPicker.session.untitled":"Sans titre","sessionPicker.divider.or":"ou","sessionPicker.new.title":"Démarrer une nouvelle session :","sessionPicker.agents.loading":"Chargement des agents...","sessionPicker.actions.creating":"Création...","sessionPicker.actions.createSession":"Créer une session","sessionPicker.actions.cancel":"Annuler","sessionList.header.title":"Sessions","sessionList.session.untitled":"Sans titre","sessionList.status.working":"En cours","sessionList.status.compacting":"Compactage","sessionList.status.idle":"Inactif","sessionList.status.retrying":"Nouvelle tentative","sessionList.status.retryingIn":"Nouvelle tentative dans {seconds}s","sessionList.status.retryTooltip":"{message} (Tentative {attempt})","sessionList.status.retryToast":"{countdown} : {message} (Tentative {attempt})","sessionList.status.needsPermission":"Autorisation requise","sessionList.status.needsInput":"Entrée requise","sessionList.expand.collapseAriaLabel":"Réduire la session","sessionList.expand.expandAriaLabel":"Développer la session","sessionList.expand.collapseTitle":"Réduire","sessionList.expand.expandTitle":"Développer","sessionList.actions.newSession.ariaLabel":"Nouvelle session","sessionList.actions.newSession.title":"Nouvelle session","sessionList.actions.copyId.ariaLabel":"Copier l'ID de session","sessionList.actions.copyId.title":"Copier l'ID de session","sessionList.actions.reload.ariaLabel":"Recharger la session","sessionList.actions.reload.title":"Recharger la session","sessionList.actions.rename.ariaLabel":"Renommer la session","sessionList.actions.rename.title":"Renommer la session","sessionList.actions.delete.ariaLabel":"Supprimer la session","sessionList.actions.delete.title":"Supprimer la session","sessionList.copyId.success":"ID de session copié","sessionList.copyId.error":"Impossible de copier l'ID de session","sessionList.reload.error":"Impossible de recharger la session","sessionList.delete.error":"Impossible de supprimer la session","sessionList.delete.title":"Supprimer la session","sessionList.delete.confirmMessage":'Supprimer "{label}" ? Cette action est irréversible.',"sessionList.delete.confirmLabel":"Supprimer","sessionList.delete.cancelLabel":"Annuler","sessionList.rename.error":"Impossible de renommer la session","sessionList.filter.placeholder":"Rechercher des sessions…","sessionList.filter.ariaLabel":"Rechercher des sessions","sessionList.loading.more":"Chargement de plus de sessions…","sessionList.selection.selectAllLabel":"Tout sélectionner","sessionList.selection.selectAllAriaLabel":"Sélectionner toutes les sessions","sessionList.selection.clearLabel":"Effacer","sessionList.selection.clearAriaLabel":"Effacer la sélection","sessionList.selection.checkboxAriaLabel":"Sélectionner la session","sessionList.bulkDelete.button":"Supprimer {count}","sessionList.bulkDelete.ariaLabel":"Supprimer {count} sessions sélectionnées","sessionList.bulkDelete.title":"Supprimer des sessions","sessionList.bulkDelete.confirmMessage":"Supprimer {count} sessions sélectionnées ? Cette action est irréversible.","sessionList.bulkDelete.confirmLabel":"Supprimer","sessionList.bulkDelete.cancelLabel":"Annuler","sessionList.bulkDelete.error":"Impossible de supprimer {count} sessions","sessionRenameDialog.title":"Renommer la session","sessionRenameDialog.description.withLabel":'Mettre à jour le titre de "{label}".',"sessionRenameDialog.description.default":"Définir un nouveau titre pour cette session.","sessionRenameDialog.input.label":"Nom de la session","sessionRenameDialog.input.placeholder":"Saisissez un nom de session","sessionRenameDialog.actions.cancel":"Annuler","sessionRenameDialog.actions.rename":"Renommer","sessionRenameDialog.actions.renaming":"Renommage…","sessionView.fallback.sessionNotFound":"Session introuvable","sessionView.alerts.abortFailed.message":"Impossible d'arrêter la session","sessionView.alerts.abortFailed.title":"Échec de l'arrêt","sessionView.alerts.revertFailed.message":"Impossible de revenir au message","sessionView.alerts.revertFailed.title":"Échec du retour","sessionView.alerts.deleteUpToFailed.message":"Impossible de supprimer les messages","sessionView.alerts.deleteUpToFailed.title":"Échec de suppression","sessionView.alerts.forkFailed.message":"Impossible de forker la session","sessionView.alerts.forkFailed.title":"Échec du fork","sessionView.attachments.expandPastedTextAriaLabel":"Développer le texte collé","sessionView.attachments.insertPastedTextTitle":"Insérer le texte collé","sessionView.attachments.removeAriaLabel":"Retirer la pièce jointe","sessionPreview.title":"Aperçu web","sessionPreview.backToChat":"Retour au chat","sessionPreview.close":"Fermer l'aperçu","sessionPreview.chat.button":"Retour au chat","sessionPreview.open.button":"Ouvrir l'aperçu web","sessionPreview.open.title":"Ouvrir l'aperçu web","sessionPreview.open.prompt":"Saisissez une URL locale ou de staging de confiance à prévisualiser dans cette session.","sessionPreview.open.label":"URL de l'aperçu","sessionPreview.open.placeholder":"https://staging.example.com","sessionPreview.open.confirm":"Ouvrir l'aperçu","sessionPreview.open.cancel":"Annuler","sessionPreview.comment.mode":"Mode commentaire","sessionPreview.comment.title":"Ajouter un commentaire d'aperçu","sessionPreview.comment.prompt":"Décrivez ce qui doit changer pour l'élément sélectionné.","sessionPreview.comment.label":"Commentaire","sessionPreview.comment.add":"Ajouter le commentaire","sessionPreview.comment.cancel":"Annuler","browserFrame.viewport":"Taille du viewport","browserFrame.viewport.responsive":"Viewport responsive","browserFrame.viewport.desktop":"Viewport bureau (1440 x 900)","browserFrame.viewport.tablet":"Viewport tablette (768 x 1024)","browserFrame.viewport.tabletLandscape":"Tablette paysage (1024 x 768)","browserFrame.viewport.mobile":"Viewport mobile (390 x 844)","browserFrame.viewport.mobileLandscape":"Mobile paysage (844 x 390)","sessionEvents.sessionCompactedToast":"La session {label} a été compactée","sessionEvents.sessionError.unknown":"Erreur inconnue","sessionEvents.sessionError.title":"Erreur de session","sessionEvents.sessionError.message":"Erreur : {message}","sessionState.cleanup.deepConfirm.message":"Ce nettoyage peut être lent et peut supprimer des sessions que vous ne vouliez pas supprimer. Confirmez-vous ?","sessionState.cleanup.deepConfirm.title":"Nettoyage approfondi des sessions","sessionState.cleanup.deepConfirm.detail":"Le nettoyage approfondi des sessions supprime toutes les sessions sans messages, retire les sessions de sous-agent terminées et efface les forks inutilisés d'une session.","sessionState.cleanup.deepConfirm.confirmLabel":"Continuer","sessionState.cleanup.deepConfirm.cancelLabel":"Annuler","sessionState.cleanup.toast.one":"Nettoyage de {count} session vide","sessionState.cleanup.toast.other":"Nettoyage de {count} sessions vides"},g={"instanceServiceStatus.sections.lsp":"Serveurs LSP","instanceServiceStatus.sections.mcp":"Serveurs MCP","instanceServiceStatus.sections.plugins":"Plugins","instanceServiceStatus.lsp.loading":"Chargement des serveurs LSP...","instanceServiceStatus.lsp.empty":"Aucun serveur LSP détecté.","instanceServiceStatus.lsp.status.connected":"Connecté","instanceServiceStatus.lsp.status.error":"Erreur","instanceServiceStatus.mcp.loading":"Chargement des serveurs MCP...","instanceServiceStatus.mcp.empty":"Aucun serveur MCP détecté.","instanceServiceStatus.mcp.toggleAriaLabel":"Basculer le serveur MCP {name}","instanceServiceStatus.plugins.loading":"Chargement des plugins...","instanceServiceStatus.plugins.empty":"Aucun plugin configuré.","permissionBanner.pendingRequests.one":"{count} demande en attente","permissionBanner.pendingRequests.other":"{count} demandes en attente","permissionBanner.detail.permission.one":"{count} autorisation","permissionBanner.detail.permission.other":"{count} autorisations","permissionBanner.detail.question.one":"{count} question","permissionBanner.detail.question.other":"{count} questions","permissionBanner.detail.wrapper":" ({detail})","agentSelector.placeholder":"Sélectionner un agent...","agentSelector.badge.subagent":"sous-agent","agentSelector.none":"Aucun","agentSelector.trigger.primary":"Agent : {agent}","modelSelector.placeholder.search":"Rechercher des modèles...","modelSelector.none":"Aucun","modelSelector.trigger.primary":"Modèle : {model}","modelSelector.favoritesOnly.toggle.ariaLabel":"Basculer en favoris uniquement","modelSelector.favoritesOnly.showAll":"Afficher tous les modèles","modelSelector.favorite.add":"Ajouter aux favoris","modelSelector.favorite.remove":"Retirer des favoris","modelSelector.manageProviders":"Gérer les fournisseurs","thinkingSelector.variant.default":"Par défaut","thinkingSelector.label":"Réflexion : {variant}","envEditor.title":"Variables d'environnement","envEditor.count.one":"({count} variable)","envEditor.count.other":"({count} variables)","envEditor.fields.name.placeholder":"Nom de la variable","envEditor.fields.name.readOnlyTitle":"Nom de la variable (lecture seule)","envEditor.fields.value.placeholder":"Valeur de la variable","envEditor.fields.secure.enabled":"Valeur masquée (sécurisé)","envEditor.fields.secure.disabled":"Cliquez pour masquer la valeur","envEditor.fields.secure.masked":"Valeur masquée (sécurisé)","envEditor.actions.remove.title":"Supprimer la variable","envEditor.actions.add.title":"Ajouter une variable","envEditor.empty":"Aucune variable d'environnement configurée. Ajoutez des variables ci-dessus pour personnaliser l'environnement OpenCode.","envEditor.help":"Ces variables seront disponibles dans l'environnement OpenCode lors du démarrage des instances.","contextUsagePanel.headings.tokens":"Tokens","contextUsagePanel.headings.context":"Contexte","contextUsagePanel.labels.input":"Entrée","contextUsagePanel.labels.output":"Sortie","contextUsagePanel.labels.cost":"Coût","contextUsagePanel.labels.totalInput":"Entrée totale","contextUsagePanel.labels.totalOutput":"Sortie totale","contextUsagePanel.labels.totalCost":"Coût total","contextUsagePanel.labels.totalReasoning":"Raisonnement total","contextUsagePanel.labels.used":"Utilisé","contextUsagePanel.labels.available":"Dispo","contextUsagePanel.unavailable":"--","settings.title":"Paramètres","settings.navigationAriaLabel":"Sections des paramètres","settings.close":"Fermer les paramètres","settings.content.eyebrow":"Préférences de l'espace de travail","settings.open.title":"Ouvrir les paramètres","settings.open.ariaLabel":"Ouvrir les paramètres","settings.nav.appearance":"Apparence","settings.nav.notifications":"Notifications","settings.nav.remote":"Accès distant","settings.nav.speech":"Voix","settings.nav.providers":"Fournisseurs","settings.nav.opencode":"OpenCode","settings.nav.configFiles":"Fichiers de configuration","settings.nav.info":"Info","settings.scope.device":"Cet appareil","settings.scope.server":"Paramètre serveur","settings.common.enabled":"Activé","settings.common.disabled":"Désactivé","settings.section.appearance.title":"Apparence","settings.section.appearance.subtitle":"Ajustez l'apparence de l'application sur cet appareil.","settings.appearance.theme.title":"Thème","settings.appearance.theme.subtitle":"Choisissez le mode de couleur utilisé dans toute l'application.","settings.appearance.theme.option.system":"Suivre le réglage de votre système d'exploitation","settings.appearance.theme.option.light":"Utiliser l'apparence claire","settings.appearance.theme.option.dark":"Utiliser l'apparence sombre","settings.section.notifications.title":"Notifications","settings.section.notifications.subtitle":"Contrôlez les notifications système liées à l'activité des sessions.","settings.notifications.permission.granted":"Accordée","settings.notifications.permission.denied":"Refusée","settings.notifications.permission.default":"Non accordée","settings.notifications.permission.unsupported":"Non prise en charge","settings.notifications.messages.unsupportedEnvironment":"Les notifications système ne sont pas prises en charge dans cet environnement.","settings.notifications.messages.permissionDenied":"Autorisation de notification refusée. Activez les notifications dans les paramètres de votre système ou navigateur.","settings.notifications.messages.permissionNotGranted":"Autorisation de notification non accordée.","settings.notifications.messages.unsupportedGeneral":"Les notifications ne sont pas prises en charge dans cet environnement.","settings.notifications.messages.permissionGranted":"Autorisation accordée. Vous pouvez maintenant activer les notifications.","settings.notifications.messages.permissionRequestDenied":"Autorisation refusée. Vous devrez peut-être activer les notifications dans les paramètres de votre système ou navigateur.","settings.notifications.sessionStatus.title":"Notifications d'état de session","settings.notifications.sessionStatus.subtitle":"Recevez des alertes lorsque des sessions nécessitent votre attention.","settings.notifications.enable.title":"Activer les notifications","settings.notifications.enable.permission":"Autorisation : {permission}","settings.notifications.requestPermission.title":"Demander l'autorisation","settings.notifications.requestPermission.subtitle":"Autoriser l'application à envoyer des notifications sur cet appareil.","settings.notifications.requestPermission.action":"Demander","settings.notifications.allowVisible.title":"Notifier lorsque l'application est au premier plan","settings.notifications.allowVisible.subtitle":"Garder les alertes activées même lorsque cette fenêtre est visible.","settings.notifications.unsupportedNote":"Les notifications ne sont pas prises en charge dans cet environnement. Le contrôle des notifications reste désactivé.","settings.notifications.events.title":"Me notifier lorsque","settings.notifications.events.subtitle":"Choisissez les événements de session qui doivent envoyer des alertes.","settings.notifications.events.needsInput":"Une session nécessite une saisie","settings.notifications.events.idle":"Une session devient inactive","settings.notifications.status.enabled":"Notifications activées","settings.notifications.status.disabled":"Notifications désactivées","settings.notifications.status.unsupported":"Notifications non prises en charge","settings.section.remote.title":"Accès distant","settings.section.remote.subtitle":"Vérifiez comment ce serveur est exposé sur votre réseau et sécurisez les identifiants d'accès.","settings.section.opencode.title":"OpenCode","settings.section.opencode.subtitle":"Choisissez le binaire OpenCode et l'environnement utilisés pour les nouvelles instances.","settings.opencode.runtime.title":"Environnement d'exécution","settings.opencode.runtime.subtitle":"Configurez le binaire OpenCode avec lequel les nouvelles instances démarrent.","settings.opencode.logLevel.title":"Niveau de logs OpenCode","settings.opencode.logLevel.subtitle":"Definir le niveau de logs utilise au lancement des nouvelles instances OpenCode.","settings.opencode.logLevel.selector.title":"Verbosite des logs","settings.opencode.logLevel.selector.subtitle":"Choisir la quantite de journaux emise par les nouvelles instances OpenCode.","settings.opencode.logLevel.option.debug":"Debogage","settings.opencode.logLevel.option.info":"Info","settings.opencode.logLevel.option.warn":"Avertissement","settings.opencode.logLevel.option.error":"Erreur","settings.configFiles.title":"Fichiers de configuration","settings.configFiles.subtitle":"Modifiez les fichiers de configuration globaux autorisés sur ce serveur.","settings.configFiles.selector.label":"Fichier","settings.configFiles.selector.placeholder":"Sélectionner un fichier de configuration","settings.configFiles.actions.save":"Enregistrer","settings.configFiles.actions.reload":"Recharger","settings.configFiles.state.unsaved":"Modifications non enregistrées","settings.configFiles.state.notCreated":"Le fichier sera créé lors de l'enregistrement","settings.configFiles.empty":"Aucun fichier de configuration sélectionné.","settings.configFiles.errors.loadList":"Échec du chargement des fichiers de configuration.","settings.configFiles.errors.loadContent":"Échec du chargement du fichier de configuration.","settings.configFiles.errors.save":"Échec de l'enregistrement du fichier de configuration.","settings.configFiles.toast.saveSuccess":"Fichier de configuration enregistré.","settings.configFiles.toast.saveError":"Échec de l'enregistrement du fichier de configuration.","settings.configFiles.confirmDiscard.message":"Ignorer les modifications non enregistrées avant de continuer ?","settings.configFiles.confirmDiscard.confirmLabel":"Ignorer les modifications","settings.configFiles.confirmDiscard.cancelLabel":"Continuer la modification","settings.providers.title":"Authentification des fournisseurs","settings.providers.subtitle":"Connectez des clés API ou des comptes OAuth pour l'instance OpenCode active.","settings.providers.refresh":"Actualiser","settings.providers.selectProvider":"Sélectionner un fournisseur","settings.providers.available.title":"Fournisseurs disponibles","settings.providers.configured.title":"Fournisseurs configurés","settings.providers.loading":"Chargement des méthodes d'authentification des fournisseurs...","settings.providers.empty.noInstance":"Démarrez un espace de travail OpenCode avant de gérer l'authentification des fournisseurs.","settings.providers.empty.noProviders":"Aucun fournisseur n'est disponible depuis cette instance OpenCode.","settings.providers.empty.noConfiguredProviders":"Aucun fournisseur n'est actuellement configuré pour cette instance OpenCode.","settings.providers.models.one":"{count} modèle","settings.providers.models.other":"{count} modèles","settings.providers.actions.connect":"Connecter","settings.providers.actions.disconnect":"Déconnecter","settings.providers.actions.remove":"Supprimer l'authentification enregistrée","settings.providers.actions.close":"Fermer","settings.providers.actions.continue":"Continuer","settings.providers.actions.working":"Traitement...","settings.providers.method.title":"Méthode d'authentification","settings.providers.method.subtitle":"Choisissez le flux exposé par OpenCode pour ce fournisseur.","settings.providers.method.api":"Clé API","settings.providers.method.oauth":"OAuth","settings.providers.method.mixed":"Clé API et OAuth","settings.providers.method.fallback":"Clé API","settings.providers.status.available":"Disponible","settings.providers.auth.title":"Connecter {provider}","settings.providers.auth.subtitle":"L'authentification est enregistrée dans le serveur OpenCode actif.","settings.providers.apiKey.label":"Clé API","settings.providers.apiKey.placeholder":"Coller la clé API du fournisseur","settings.providers.oauth.noPrompts":"Cette méthode OAuth ne nécessite aucun détail supplémentaire avant l'ouverture du navigateur.","settings.providers.oauth.promptsUnsupported":"Cette méthode OAuth nécessite des saisies propres au fournisseur qui ne sont pas prises en charge par la version actuelle du SDK.","settings.providers.oauth.enterCode":"Terminez le flux dans le navigateur, puis collez le code d'autorisation.","settings.providers.oauth.openPage":"Ouvrir la page d'autorisation","settings.providers.oauth.openHere":"Ouvrir dans cet onglet","settings.providers.oauth.copyLink":"Copier le lien","settings.providers.oauth.linkCopied":"Lien copié","settings.providers.oauth.popupBlocked":"Votre navigateur a peut-être bloqué la page d'autorisation. Utilisez les actions ci-dessus pour continuer le flux de connexion.","settings.providers.oauth.popup.loadingTitle":"Autorisation OpenCode","settings.providers.oauth.popup.loadingBody":"Préparation de la page d'autorisation...","settings.providers.oauth.codeLabel":"Code d'autorisation","settings.providers.oauth.codePlaceholder":"Coller le code du fournisseur","settings.providers.oauth.submitCode":"Envoyer le code","settings.providers.oauth.waitingTitle":"En attente de l'autorisation","settings.providers.oauth.cancelWait":"Annuler","settings.providers.prompt.selectPlaceholder":"Sélectionner une option","settings.providers.success":"Authentification du fournisseur enregistrée. Les données du fournisseur ont été actualisées.","settings.providers.source.api":"Authentification du fournisseur enregistrée","settings.providers.source.config":"Configuré dans opencode.jsonc","settings.providers.source.custom":"Configuré par une logique de fournisseur personnalisée","settings.providers.source.env":"Configuré depuis les variables d'environnement","settings.providers.source.unknown":"Source du fournisseur configuré","settings.providers.errors.loadFailed":"Échec du chargement des méthodes d'authentification des fournisseurs.","settings.providers.errors.noAuthorization":"Le fournisseur n'a pas renvoyé de données d'autorisation.","settings.providers.errors.authorizationFailed":"Échec de l'autorisation.","settings.providers.errors.removeFailed":"Échec de la suppression de l'authentification du fournisseur.","settings.providers.errors.envDisconnectUnavailable":"Ce fournisseur est configuré depuis des variables d'environnement et ne peut pas être déconnecté depuis l'interface.","settings.appearance.behavior.title":"Interaction","settings.appearance.behavior.subtitle":"Parametres par defaut pour les messages, les diffs et la saisie.","settings.behavior.expansionPresets.ariaLabel":"Transcript detail presets","settings.behavior.expansionPreset.minimal.title":"Minimal","settings.behavior.expansionPreset.minimal.description":"Keep most generated detail tucked away until needed.","settings.behavior.expansionPreset.balanced.title":"Balanced","settings.behavior.expansionPreset.balanced.description":"Show important actions while keeping noisy reads and fetches compact.","settings.behavior.expansionPreset.detailed.title":"Detailed","settings.behavior.expansionPreset.detailed.description":"Open most tool and thinking output for a fuller transcript.","settings.behavior.expansionPreset.everything.title":"Everything","settings.behavior.expansionPreset.everything.description":"Expand all tool and thinking output by default.","settings.behavior.expansionPreset.custom.title":"Custom","settings.behavior.expansionPreset.custom.description":"Your customized transcript detail defaults.","settings.behavior.expansionDefaults.title":"Expansion defaults","settings.behavior.expansionDefaults.itemColumn":"Item","settings.behavior.expansionDefaults.stateColumn":"Default state","settings.behavior.expansionDefaults.thinking":"thinking","settings.behavior.expansionDefaults.otherTools":"Other tools","settings.behavior.expansionDefaults.rowAriaLabel":"Default state for {item}","settings.behavior.keyboardHints.title":"Indications de raccourcis clavier","settings.behavior.keyboardHints.subtitle":"Afficher des indications de raccourcis clavier dans toute l'interface.","settings.behavior.thinking.title":"Sections de reflexion","settings.behavior.thinking.subtitle":"Afficher ou masquer les sections de reflexion de l'IA dans les messages.","settings.behavior.thinkingDefault.title":"Etat initial de la reflexion","settings.behavior.thinkingDefault.subtitle":"Choisir si les sections de reflexion commencent developpees ou reduites.","settings.behavior.messageTimeline.title":"Chronologie des messages","settings.behavior.messageTimeline.subtitle":"Afficher ou masquer la barre laterale de chronologie des messages.","settings.behavior.timelineTools.title":"Appels d'outils dans la chronologie","settings.behavior.timelineTools.subtitle":"Afficher ou masquer les entrees d'appels d'outils dans la chronologie des messages.","settings.behavior.diffView.title":"Vue du diff","settings.behavior.diffView.subtitle":"Choisir comment les diffs des appels d'outils sont affiches.","settings.behavior.diffView.option.split":"Scinde","settings.behavior.diffView.option.unified":"Unifie","settings.behavior.toolOutputsDefault.title":"Etat initial des sorties d'outils","settings.behavior.toolOutputsDefault.subtitle":"Choisir si les sorties d'outils commencent developpees ou reduites.","settings.behavior.diagnosticsDefault.title":"Etat initial des diagnostics","settings.behavior.diagnosticsDefault.subtitle":"Choisir si la sortie des diagnostics commence developpee ou reduite.","settings.behavior.toolInputsVisibility.title":"Visibilite des entrees d'outils","settings.behavior.toolInputsVisibility.subtitle":"Definir la visibilite par defaut des arguments d'entree des appels d'outils.","settings.behavior.usageMetrics.title":"Metriques d'utilisation des tokens","settings.behavior.usageMetrics.subtitle":"Afficher ou masquer les stats de tokens et de cout pour les messages de l'assistant.","settings.behavior.autoCleanup.title":"Nettoyage auto des sessions vides","settings.behavior.autoCleanup.subtitle":"Nettoyer automatiquement les sessions vides lors de la creation de nouvelles.","settings.behavior.keepUnseenSubagentIdle.title":"Garder les marqueurs inactifs des sous-agents","settings.behavior.keepUnseenSubagentIdle.subtitle":"Garde les marqueurs inactifs des sous-agents visibles jusqu'a consultation au lieu de les masquer apres 5 secondes.","settings.behavior.tauriNativeEventTransport.title":"Transport d'evenements natif Tauri","settings.behavior.tauriNativeEventTransport.subtitle":"Utiliser le transport d'evenements desktop natif Rust dans Tauri. Desactivez-le pour revenir au chemin browser EventSource.","settings.behavior.promptVoiceInput.title":"Saisie vocale du prompt","settings.behavior.promptVoiceInput.subtitle":"Afficher le contrôle du microphone pour la saisie vocale du prompt lorsque la voix est configurée.","settings.behavior.promptSubmit.title":"Entrer pour envoyer","settings.behavior.promptSubmit.subtitle":"Utiliser Entrer pour envoyer; Cmd/Ctrl+Entrer insere une nouvelle ligne.","settings.speech.title":"Voix","settings.speech.subtitle":"Configurez dès maintenant la reconnaissance vocale et préparez la synthèse vocale pour de futures fonctionnalités.","settings.speech.provider.title":"Fournisseur","settings.speech.provider.subtitle":"Les requêtes vocales utilisent l'adaptateur vocal côté serveur.","settings.speech.provider.openaiCompatible":"Compatible OpenAI","settings.speech.status.loading":"Vérification de la configuration...","settings.speech.status.configured":"Configuré","settings.speech.status.missing":"Clé API manquante","settings.speech.status.error":"Service vocal indisponible","settings.speech.apiKey.title":"Clé API","settings.speech.apiKey.subtitle":"Utilisée pour les requêtes vocales gérées par CodeNomad.","settings.speech.apiKey.placeholder":"Saisissez une nouvelle clé API","settings.speech.apiKey.storedNote":"Une clé API enregistrée est masquée. Saisissez une nouvelle valeur pour la remplacer ou laissez le champ vide pour la conserver.","settings.speech.apiKey.clearAction":"Effacer la clé enregistrée","settings.speech.apiKey.clearPending":"La clé API enregistrée sera supprimée lors de l'enregistrement.","settings.speech.baseUrl.title":"URL de base","settings.speech.baseUrl.subtitle":"Remplacement facultatif des points d'accès vocaux compatibles OpenAI.","settings.speech.baseUrl.placeholder":"https://api.openai.com/v1","settings.speech.sttModel.title":"Modèle de transcription","settings.speech.sttModel.subtitle":"Modèle utilisé pour les requêtes vocales vers texte du prompt.","settings.speech.ttsModel.title":"Modèle vocal","settings.speech.ttsModel.subtitle":"Modèle de synthèse vocale par défaut réservé aux futures fonctions de lecture.","settings.speech.ttsVoice.title":"Voix par défaut","settings.speech.ttsVoice.subtitle":"Voix de synthèse vocale par défaut réservée aux futures fonctions de lecture.","settings.speech.playbackMode.title":"Mode de lecture","settings.speech.playbackMode.subtitle":"Choisissez si le TTS commence a jouer pendant le flux audio ou apres la generation complete du fichier.","settings.speech.playbackMode.streaming":"Flux continu","settings.speech.playbackMode.buffered":"Mis en mémoire tampon","settings.speech.ttsFormat.title":"Format de sortie","settings.speech.ttsFormat.subtitle":"Choisissez le format audio pour la voix synthetisee. La prise en charge du streaming depend du fournisseur et du navigateur.","settings.speech.help":"La saisie vocale du prompt apparait lorsque la transcription vocale est configuree et prise en charge. La lecture des messages utilise le mode et le format TTS selectionnes ici.","settings.speech.compatibility.streamingUnavailable":"Votre configuration actuelle du fournisseur vocal n'annonce pas le TTS en streaming. Passez le mode de lecture sur buffered si vous voulez que la lecture fonctionne maintenant.","settings.speech.compatibility.browserStreamingUnavailable":"Votre navigateur actuel ne peut pas lire en streaming le format TTS selectionne. Choisissez la lecture buffered ou passez a un autre format.","settings.speech.compatibility.runtimeNote":"Tous les formats restent selectionnables en mode streaming. Certaines combinaisons navigateur/fournisseur peuvent quand meme echouer au moment de la lecture.","settings.speech.testPlayback.action":"Tester la lecture","settings.speech.testPlayback.generating":"Generation de l'extrait","settings.speech.testPlayback.stop":"Arreter l'extrait","settings.speech.testPlayback.sample":"Merci d'utiliser CodeNomad, vos parametres vocaux fonctionnent correctement.","settings.speech.testPlayback.note":"Le test utilise immediatement le mode et le format actuels. Enregistrez d'abord les changements d'API key, d'URL de base, de modele ou de voix si vous voulez aussi les tester.","settings.speech.save.action":"Enregistrer","settings.speech.save.saving":"Enregistrement...","settings.speech.save.saved":"Enregistré","settings.speech.save.unsaved":"Modifications non enregistrées","settings.speech.save.error":"Échec de l'enregistrement","settings.nav.sidecars":"SideCars","settings.section.sidecars.eyebrow":"Services serveur","settings.section.sidecars.title":"SideCars","settings.section.sidecars.subtitle":"Configurez les services locaux écoutant sur des ports fixes que le serveur peut relayer dans des onglets.","sidecars.form.name":"Nom","sidecars.form.validation":"Saisissez un nom et un port SideCar valides.","sidecars.form.port":"Port","sidecars.form.insecure":"Utiliser HTTP","sidecars.form.protocol":"Protocole","sidecars.form.protocol.help":"Choisissez comment le proxy doit se connecter au service local.","sidecars.form.protocol.https":"HTTPS","sidecars.form.protocol.http":"HTTP","sidecars.form.prefixMode":"Mode de préfixe","sidecars.form.prefixMode.help":"Choisissez si le SideCar reçoit le préfixe de chemin public /sidecars.","sidecars.form.prefixMode.strip":"Retirer le préfixe","sidecars.form.prefixMode.preserve":"Conserver le préfixe","sidecars.form.add":"Ajouter un SideCar","sidecars.kind.port":"Port","sidecars.status.running":"En cours d'exécution","sidecars.status.stopped":"Arrêté","sidecars.basePath":"Chemin de base","sidecars.settings.listTitle":"SideCars configurés","sidecars.settings.listSubtitle":"Consultez les SideCars basés sur des ports disponibles dans le sélecteur.","sidecars.settings.empty":"Aucun SideCar configuré pour le moment.","sidecars.picker.title":"Ouvrir SideCar","sidecars.picker.loading":"Chargement des SideCars...","sidecars.picker.subtitle":"Choisissez un SideCar disponible à ouvrir dans un nouvel onglet.","sidecars.picker.empty":"Aucun SideCar basé sur un port n'est disponible pour le moment.","sidecars.picker.close":"Fermer","sidecars.open.errorTitle":"Impossible d'ouvrir SideCar","sidecars.open.notFound":"SideCar introuvable.","sidecars.open.notRunning":"SideCar n'est pas joignable sur son port configuré.","sidecars.back":"Retour","sidecars.refresh":"Actualiser","sidecars.path":"Chemin","sidecars.go":"Aller","toastHistory.title":"Historique des notifications","toastHistory.empty":"Aucune notification","toastHistory.empty.filter":"Aucune notification ne correspond à ce filtre","toastHistory.clearAll":"Tout effacer","toastHistory.markAllRead":"Tout marquer comme lu","toastHistory.filter.label":"Filtrer les notifications","toastHistory.filter.all":"Tout","toastHistory.filter.info":"Info","toastHistory.filter.success":"Succès","toastHistory.filter.warning":"Avertissement","toastHistory.filter.error":"Erreur","toastHistory.today":"Aujourd'hui","toastHistory.yesterday":"Hier","toastHistory.earlier":"Plus tôt","toastHistory.unread":"{count} non lu(s)","toastHistory.viewSettings":"Paramètres","toastHistory.close":"Fermer","toastHistory.deleteItem":"Supprimer la notification","settings.section.info.title":"À propos","settings.section.info.subtitle":"Consultez la version et l'environnement d'exécution, et recueillez des informations de diagnostic.","settings.info.version.server":"Version du serveur","settings.info.version.ui":"Version de l'interface","settings.info.version.uiSource":"Source de l'interface","settings.info.runtime.type":"Environnement d'exécution","settings.info.runtime.platform":"Plateforme","settings.info.runtime.os":"Système d'exploitation","settings.info.server.url":"URL du serveur","settings.info.server.root":"Racine de l'espace de travail","settings.info.updates.title":"Mises à jour","settings.info.updates.subtitle":"Recherchez les nouvelles versions de CodeNomad.","settings.info.updates.latest":"Dernière version","settings.info.updates.download":"Télécharger la mise à jour","settings.info.updates.refresh":"Actualiser","settings.info.diagnostics.copyFailed":"Accès au presse-papiers refusé. Utilisez plutôt le bouton de téléchargement.","settings.info.diagnostics.title":"Diagnostics","settings.info.diagnostics.subtitle":"Collectez les informations système et de version pour les rapports de bug.","settings.info.diagnostics.copy":"Copier dans le presse-papiers","settings.info.diagnostics.download":"Télécharger .txt","settings.info.diagnostics.copied":"Informations de diagnostic copiées dans le presse-papiers."},h={"time.relative.justNow":"à l'instant","time.relative.daysAgoShort":"il y a {count} j","time.relative.hoursAgoShort":"il y a {count} h","time.relative.minutesAgoShort":"il y a {count} min"},f={"toolCall.pending.waitingToRun":"En attente d'exécution...","toolCall.error.label":"Erreur :","toolCall.header.copyTitle":"Copier le titre de l'appel d'outil","toolCall.header.copyAriaLabel":"Copier le titre de l'appel d'outil","toolCall.header.copyOutputTitle":"Copier la sortie de l'outil","toolCall.header.copyOutputAriaLabel":"Copier la sortie de l'outil","toolCall.header.showInputTitle":"Afficher les arguments de l'outil","toolCall.header.showInputAriaLabel":"Afficher les arguments de l'outil","toolCall.header.hideInputTitle":"Masquer les arguments de l'outil","toolCall.header.hideInputAriaLabel":"Masquer les arguments de l'outil","toolCall.io.input":"Entrée de l'outil","toolCall.io.output":"Sortie de l'outil","toolCall.io.copyInputTitle":"Copier l'entrée de l'outil","toolCall.io.copyInputAriaLabel":"Copier l'entrée de l'outil","toolCall.io.copyOutputTitle":"Copier la sortie de l'outil","toolCall.io.copyOutputAriaLabel":"Copier la sortie de l'outil","toolCall.diff.label":"Diff","toolCall.diff.label.withPath":"Diff · {path}","toolCall.diff.viewMode.ariaLabel":"Mode d'affichage du diff","toolCall.diff.viewMode.split":"Côte à côte","toolCall.diff.viewMode.unified":"Unifié","toolCall.diff.switchToSplit":"Passer à la vue côte à côte","toolCall.diff.switchToUnified":"Passer à la vue unifiée","toolCall.diff.enableWordWrap":"Activer le retour à la ligne","toolCall.diff.disableWordWrap":"Désactiver le retour à la ligne","toolCall.diff.copyPatch":"Copier le patch","toolCall.diagnostics.title":"Diagnostics","toolCall.diagnostics.ariaLabel":"Diagnostics","toolCall.diagnostics.ariaLabel.withLabel":"Diagnostics {label}","toolCall.diagnostics.severity.error.short":"ERR","toolCall.diagnostics.severity.warning.short":"WARN","toolCall.diagnostics.severity.info.short":"INFO","toolCall.renderer.toolName.shell":"Shell","toolCall.renderer.toolName.fetch":"Fetch","toolCall.renderer.toolName.invalid":"Invalide","toolCall.renderer.toolName.plan":"Plan","toolCall.renderer.toolName.applyPatch":"Appliquer le patch","toolCall.renderer.action.working":"En cours...","toolCall.renderer.action.writingCommand":"Rédaction de la commande...","toolCall.renderer.action.preparingEdit":"Préparation de la modification...","toolCall.renderer.action.readingFile":"Lecture du fichier...","toolCall.renderer.action.preparingWrite":"Préparation de l'écriture...","toolCall.renderer.action.preparingPatch":"Préparation du patch...","toolCall.renderer.action.planning":"Planification...","toolCall.renderer.action.fetchingFromWeb":"Récupération sur le Web...","toolCall.renderer.action.findingFiles":"Recherche de fichiers...","toolCall.renderer.action.searchingContent":"Recherche dans le contenu...","toolCall.renderer.action.listingDirectory":"Liste du répertoire...","toolCall.renderer.bash.title.timeout":"Délai : {timeout}","toolCall.renderer.read.detail.offset":"Décalage : {offset}","toolCall.renderer.read.detail.limit":"Limite : {limit}","toolCall.renderer.todo.empty":"Aucun élément planifié","toolCall.renderer.todo.status.pending":"En attente","toolCall.renderer.todo.status.inProgress":"En cours","toolCall.renderer.todo.status.completed":"Terminé","toolCall.renderer.todo.status.cancelled":"Annulé","toolCall.renderer.todo.title.plan":"Plan","toolCall.renderer.todo.title.creating":"Création du plan","toolCall.renderer.todo.title.completing":"Finalisation du plan","toolCall.renderer.todo.title.updating":"Mise à jour du plan","toolCall.permission.status.required":"Autorisation requise","toolCall.permission.status.queued":"Autorisation en file d'attente","toolCall.permission.requestedDiff.label":"Diff demandé","toolCall.permission.requestedDiff.withPath":"Diff demandé · {path}","toolCall.permission.queuedText":"En attente des réponses d'autorisations précédentes.","toolCall.permission.actions.allowOnce":"Autoriser une fois","toolCall.permission.actions.alwaysAllow":"Toujours autoriser","toolCall.permission.actions.deny":"Refuser","toolCall.permission.shortcuts.allowOnce":"Autoriser une fois","toolCall.permission.shortcuts.alwaysAllow":"Toujours autoriser","toolCall.permission.rejectReason.placeholder":"Retour facultatif pour Refuser, p. ex. utilise une commande plus sûre...","toolCall.permission.errors.unableToUpdate":"Impossible de mettre à jour l'autorisation","permissionApproval.title":"Demandes","permissionApproval.empty":"Aucune demande en attente.","permissionApproval.kind.permission":"Autorisation","permissionApproval.kind.question":"Question","permissionApproval.questionCount.one":"{count} question","permissionApproval.questionCount.other":"{count} questions","permissionApproval.status.active":"Actif","permissionApproval.actions.closeAriaLabel":"Fermer","permissionApproval.actions.goToSession":"Aller à la session","permissionApproval.actions.loadingSession":"Chargement…","permissionApproval.actions.loadSession":"Charger la session","permissionApproval.actions.allowOnce":"Autoriser une fois","permissionApproval.actions.alwaysAllow":"Toujours autoriser","permissionApproval.actions.deny":"Refuser","permissionApproval.rejectReason.placeholder":"Retour facultatif pour Refuser, p. ex. utilise une commande plus sûre...","permissionApproval.fallbackHint":"Chargez la session pour plus d'informations.","permissionApproval.errors.unableToUpdatePermission":"Impossible de mettre à jour l'autorisation","toolCall.question.status.required":"Question requise","toolCall.question.status.queued":"Question en file d'attente","toolCall.question.status.questions":"Questions","toolCall.question.action.awaitingAnswers":"En attente des réponses...","toolCall.question.title.questions":"Questions","toolCall.question.title.askingQuestions":"Questions en cours","toolCall.question.type.one":"Question","toolCall.question.type.other":"Questions","toolCall.question.number":"Q{number}:","toolCall.question.multiple":"Multiple choix","toolCall.question.custom.title":"Saisir une réponse personnalisée","toolCall.question.custom.label":"Réponse personnalisée","toolCall.question.custom.placeholder":"Saisissez votre propre réponse","toolCall.question.actions.submit":"Envoyer","toolCall.question.actions.dismiss":"Ignorer","toolCall.question.shortcuts.submit":"Envoyer","toolCall.question.shortcuts.dismiss":"Ignorer","toolCall.question.queuedText":"En attente des réponses précédentes.","toolCall.question.validation.answerAll":"Veuillez répondre à toutes les questions avant d'envoyer.","toolCall.question.errors.unableToReply":"Impossible de répondre","toolCall.question.errors.unableToDismiss":"Impossible d'ignorer","toolCall.task.action.delegating":"Délégation...","toolCall.task.sections.prompt":"Prompt","toolCall.task.sections.steps":"Étapes","toolCall.task.sections.output":"Sortie","toolCall.task.steps.count":"{count} étapes","toolCall.task.meta.agentModel":"Agent : {agent} • Modèle : {model}","toolCall.task.meta.agent":"Agent : {agent}","toolCall.task.meta.model":"Modèle : {model}","toolCall.status.pending":"En attente","toolCall.status.running":"En cours","toolCall.status.completed":"Terminé","toolCall.status.error":"Erreur","toolCall.status.unknown":"Inconnu","toolCall.applyPatch.action.preparing":"Préparation de apply_patch...","toolCall.applyPatch.title.withFileCount.one":"{tool} ({count} fichier)","toolCall.applyPatch.title.withFileCount.other":"{tool} ({count} fichiers)","toolCall.applyPatch.fileFallback":"Fichier {number}"},A=e(r,s,l,h,t,o,n,a,c,m,u,f,d,g,p,i);export{A as frMessages};
@@ -1 +1 @@
1
- import{l as i,ap as f}from"./monaco-viewer-BFNhPQX7.js";import"./git-diff-vendor-CSgooKT_.js";import"./fast-diff-vendor-DgdwVvTQ.js";import"./highlight-vendor-8FKMu9os.js";var o;(function(n){n.Year="year",n.Month="month",n.TwoWeeks="twoWeeks",n.Week="week",n.Day="day",n.Hour="hour",n.Minute="minute",n.Second="second"})(o||(o={}));class d{static at(t,e=!1,a=!1){return{at:{date:t,repeating:e,allowWhileIdle:a},interval:void 0,every:void 0}}static interval(t,e=!1){return{at:void 0,interval:{interval:t,allowWhileIdle:e},every:void 0}}static every(t,e,a=!1){return{at:void 0,interval:void 0,every:{interval:t,count:e,allowWhileIdle:a}}}}var c;(function(n){n[n.None=0]="None",n[n.Min=1]="Min",n[n.Low=2]="Low",n[n.Default=3]="Default",n[n.High=4]="High"})(c||(c={}));var r;(function(n){n[n.Secret=-1]="Secret",n[n.Private=0]="Private",n[n.Public=1]="Public"})(r||(r={}));async function g(){return window.Notification.permission!=="default"?await Promise.resolve(window.Notification.permission==="granted"):await i("plugin:notification|is_permission_granted")}async function v(){return await window.Notification.requestPermission()}function p(n){typeof n=="string"?new window.Notification(n):new window.Notification(n.title,n)}async function y(n){await i("plugin:notification|register_action_types",{types:n})}async function m(){return await i("plugin:notification|get_pending")}async function P(n){await i("plugin:notification|cancel",{notifications:n})}async function _(){await i("plugin:notification|cancel")}async function N(){return await i("plugin:notification|get_active")}async function h(n){await i("plugin:notification|remove_active",{notifications:n})}async function A(){await i("plugin:notification|remove_active")}async function k(n){await i("plugin:notification|create_channel",{...n})}async function M(n){await i("plugin:notification|delete_channel",{id:n})}async function C(){return await i("plugin:notification|listChannels")}async function D(n){return await f("notification","notification",n)}async function H(n){return await f("notification","actionPerformed",n)}export{c as Importance,d as Schedule,o as ScheduleEvery,r as Visibility,N as active,P as cancel,_ as cancelAll,C as channels,k as createChannel,g as isPermissionGranted,H as onAction,D as onNotificationReceived,m as pending,y as registerActionTypes,h as removeActive,A as removeAllActive,M as removeChannel,v as requestPermission,p as sendNotification};
1
+ import{l as i,ap as f}from"./monaco-viewer-BbohfXZk.js";import"./git-diff-vendor-CSgooKT_.js";import"./fast-diff-vendor-DgdwVvTQ.js";import"./highlight-vendor-8FKMu9os.js";var o;(function(n){n.Year="year",n.Month="month",n.TwoWeeks="twoWeeks",n.Week="week",n.Day="day",n.Hour="hour",n.Minute="minute",n.Second="second"})(o||(o={}));class d{static at(t,e=!1,a=!1){return{at:{date:t,repeating:e,allowWhileIdle:a},interval:void 0,every:void 0}}static interval(t,e=!1){return{at:void 0,interval:{interval:t,allowWhileIdle:e},every:void 0}}static every(t,e,a=!1){return{at:void 0,interval:void 0,every:{interval:t,count:e,allowWhileIdle:a}}}}var c;(function(n){n[n.None=0]="None",n[n.Min=1]="Min",n[n.Low=2]="Low",n[n.Default=3]="Default",n[n.High=4]="High"})(c||(c={}));var r;(function(n){n[n.Secret=-1]="Secret",n[n.Private=0]="Private",n[n.Public=1]="Public"})(r||(r={}));async function g(){return window.Notification.permission!=="default"?await Promise.resolve(window.Notification.permission==="granted"):await i("plugin:notification|is_permission_granted")}async function v(){return await window.Notification.requestPermission()}function p(n){typeof n=="string"?new window.Notification(n):new window.Notification(n.title,n)}async function y(n){await i("plugin:notification|register_action_types",{types:n})}async function m(){return await i("plugin:notification|get_pending")}async function P(n){await i("plugin:notification|cancel",{notifications:n})}async function _(){await i("plugin:notification|cancel")}async function N(){return await i("plugin:notification|get_active")}async function h(n){await i("plugin:notification|remove_active",{notifications:n})}async function A(){await i("plugin:notification|remove_active")}async function k(n){await i("plugin:notification|create_channel",{...n})}async function M(n){await i("plugin:notification|delete_channel",{id:n})}async function C(){return await i("plugin:notification|listChannels")}async function D(n){return await f("notification","notification",n)}async function H(n){return await f("notification","actionPerformed",n)}export{c as Importance,d as Schedule,o as ScheduleEvery,r as Visibility,N as active,P as cancel,_ as cancelAll,C as channels,k as createChannel,g as isPermissionGranted,H as onAction,D as onNotificationReceived,m as pending,y as registerActionTypes,h as removeActive,A as removeAllActive,M as removeChannel,v as requestPermission,p as sendNotification};