Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions devlog/_plan/260907_lane_c/040_desktop.md
Original file line number Diff line number Diff line change
Expand Up @@ -402,3 +402,7 @@ index 84ac5f67b..b6be3c2f6 100644
```

Audit amendment: clear catalogRefreshPending only if sync status is affirmative success, not HTTP 200 skipped. Add skipped/no-write regression.

## Lane E documentation handoff

After run 34106956362 reported a GUI lint failure, include the separately prepared code-mode host-rule translations in the seven fr/ja/ko/ru/tr/zh-cn/zh-tw Codex integration guides. The patch adds 51 documentation lines matching the existing English paragraph; it does not modify runtime code or provider guides. Apply on the Desktop layer, record `docs handoff from lane E` and `[skip ci]` in its own commit, then cascade the fallback layer and dispatch the top CI again. Local documentation install/build remains NOT RUN.
8 changes: 8 additions & 0 deletions docs-site/src/content/docs/fr/guides/codex-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,14 @@ opencodex encode cette déclaration et son historique sous forme d'outil de fonc
cycle de vie diffusé de l'appel de fonction en `custom_tool_call` avant que Codex ne le reçoive. Le routage natif
par transfert OpenAI et l'outil personnalisé `apply_patch`, qui est pris en charge, restent inchangés.

Avant le premier appel, les tours routés en mode code reçoivent aussi les règles de l'hôte pour les
outils auxiliaires imbriqués : `tools.apply_patch` prend une seule chaîne qui commence et se termine
par les lignes de marqueur de patch seules, sans habillage ; l'isolate ne dispose pas de `import`,
et les commandes longues sont interrogées via `write_stdin`. Lorsqu'un résultat exec en mode code
sur le chemin natif Responses routé, Kiro ou Cursor contient encore l'un des messages d'échec de
l'hôte, opencodex ajoute une indication d'une ligne qui nomme la règle. Cette modification ne
réécrit ni le code du modèle ni le texte de son patch.

Le fournisseur sélectionné doit prendre en charge les appels de fonctions ou d'outils. Un fournisseur purement
textuel dépourvu de cette prise en charge ne peut pas utiliser `exec`, Browser ni Computer Use. Les lignes
OpenAI natives conservent leur mode d'outil en amont.
Expand Down
9 changes: 9 additions & 0 deletions docs-site/src/content/docs/guides/codex-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,15 @@ HTTP/SSE.

### Authless Codex Desktop (opt-in)

In **Dashboard → Overview**, **Open Codex without signing in** controls this existing
opt-in preference. The switch defaults to **off** when the setting is absent or false;
an existing explicit `codexDesktopAuthless: true` stays enabled. The dashboard saves
the preference and runs a full sync. Restart Codex Desktop after changing it.
If synchronization fails, the saved preference remains and the dashboard shows the error;
retry **Sync** before restarting. Account-gated Desktop features may be unavailable
when enabled. Upstream credentials, local eligibility, remote admission authentication
and user-owned gateway settings retain their existing requirements.

Codex Desktop shows its ChatGPT login screen whenever the active provider requires OpenAI auth. If
your OpenCodex setup never uses ChatGPT credentials (routed providers only, or a blocked
`chatgpt.com`), you can opt out of that gate:
Expand Down
8 changes: 8 additions & 0 deletions docs-site/src/content/docs/ja/guides/codex-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,14 @@ Codex の `exec` custom-tool grammar を受け付けない key-auth Responses pr
`custom_tool_call` へ復元します。ネイティブ OpenAI の forward routing と、対応済みの `apply_patch` custom tool は
変更されません。

ルーティングされた code-mode のターンには、最初の呼び出し前に、ネストされたヘルパーに関する
ホストの規則も伝えられます。`tools.apply_patch` は、装飾を付けないパッチマーカー行で始まり、
同様のマーカー行で終わる単一の文字列を受け取ります。isolate では `import` を使用できず、
長時間実行されるコマンドは `write_stdin` でポーリングします。ネイティブのルーティング済み Responses、
Kiro、または Cursor の経路で、code-mode の exec 結果にホストの失敗メッセージがまだ含まれている場合、
opencodex は該当する規則を示す 1 行のヒントを追加します。この変更でモデルのコードやパッチのテキストを
書き換えることはありません。

選択した provider は function/tool calling をサポートしている必要があります。tool call に対応しない text-only
provider では `exec`、Browser、Computer Use は使用できません。ネイティブ OpenAI の項目は上流の tool mode を
そのまま維持します。
Expand Down
7 changes: 7 additions & 0 deletions docs-site/src/content/docs/ko/guides/codex-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,13 @@ history를 업스트림 function tool로 인코딩한 다음 스트리밍된 fun
`custom_tool_call`로 복원합니다. 네이티브 OpenAI forward routing과 지원되는 `apply_patch` custom tool은 변경되지
않습니다.

라우팅된 code-mode 턴에는 첫 호출 전에 중첩 helper에 대한 호스트 규칙도 전달됩니다.
`tools.apply_patch`는 별도 장식 없이 패치 마커만 있는 줄로 시작하고 끝나는 하나의 문자열을 받습니다.
isolate에서는 `import`를 사용할 수 없으며, 오래 실행되는 명령은 `write_stdin`으로 폴링합니다.
네이티브 라우팅 Responses, Kiro 또는 Cursor 경로의 code-mode exec 결과에 호스트의 실패 메시지 중
하나가 여전히 포함되어 있으면, opencodex는 해당 규칙을 명시하는 한 줄짜리 힌트를 덧붙입니다.
이 변경은 모델의 코드나 패치 텍스트를 다시 작성하지 않습니다.

선택한 provider는 function/tool calling을 지원해야 합니다. tool call을 지원하지 않는 text-only provider에서는
`exec`, Browser 또는 Computer Use를 사용할 수 없습니다. 네이티브 OpenAI 항목은 업스트림 tool mode를 그대로
유지합니다.
Expand Down
8 changes: 8 additions & 0 deletions docs-site/src/content/docs/ru/guides/codex-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,14 @@ opencodex кодирует объявление и историю как functio
потоковый lifecycle function call в `custom_tool_call` до передачи в Codex. Нативная forward-
маршрутизация OpenAI и поддерживаемый custom tool `apply_patch` остаются без изменений.

Перед первым вызовом маршрутизируемые ходы в code-mode также получают правила хоста для вложенных
вспомогательных инструментов: `tools.apply_patch` принимает одну строку, которая начинается и
заканчивается отдельными строками маркеров патча без дополнительного оформления; в isolate нет
`import`, а длительные команды опрашиваются через `write_stdin`. Если результат exec в code-mode
на нативном маршрутизируемом пути Responses, Kiro или Cursor всё ещё содержит одно из сообщений
хоста об ошибке, opencodex добавляет однострочную подсказку с указанием правила. Это изменение
не переписывает код модели или текст её патча.

Выбранный provider должен поддерживать function/tool calling. Text-only provider без tool calls
не может использовать `exec`, Browser или Computer Use. Нативные записи OpenAI сохраняют свой
upstream tool mode без изменений.
Expand Down
8 changes: 8 additions & 0 deletions docs-site/src/content/docs/tr/guides/codex-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,14 @@ fonksiyon aracı olarak kodlar, ardından akışlı fonksiyon çağrısı yaşam
Codex görmeden önce `custom_tool_call`'a geri yükler. Yerel OpenAI iletme
yönlendirmesi ve desteklenen `apply_patch` özel aracı değişmeden kalır.

Yönlendirilen code-mode turlarına, ilk çağrıdan önce iç içe geçmiş yardımcılar için geçerli olan
ana makine kuralları da bildirilir: `tools.apply_patch`, yalnızca yama işaretçilerinden oluşan
satırlarla başlayan ve biten tek bir dize alır; isolate içinde `import` yoktur ve uzun süren
komutlar `write_stdin` üzerinden yoklanır. Yerel yönlendirilmiş Responses, Kiro veya Cursor yolundaki
bir code-mode exec sonucu hâlâ ana makinenin hata mesajlarından birini içeriyorsa opencodex,
ilgili kuralı belirten tek satırlık bir ipucu ekler. Bu değişiklik modelin kodunu veya yama metnini
yeniden yazmaz.

Seçilen sağlayıcı fonksiyon/araç çağrısını desteklemelidir. Araç çağrısı desteği
olmayan salt metin bir sağlayıcı `exec`, Tarayıcı veya Bilgisayar Kullanımını
kullanamaz. Yerel OpenAI satırları yukarı akış araç modunu değiştirmeden tutar.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,12 @@ Codex 显示的模型来自一个磁盘上的 catalog(默认是 `$CODEX_HOME/o
历史记录编码成上游 function tool,再在 Codex 收到结果前,把流式 function-call lifecycle 还原成
`custom_tool_call`。原生 OpenAI forward routing 和已支持的 `apply_patch` custom tool 保持不变。

路由的 code-mode 轮次还会在首次调用前收到宿主对嵌套辅助工具的规则:`tools.apply_patch`
接收一个字符串,首尾必须是没有额外包装的独立补丁标记行;isolate 中没有 `import`,长时间运行的
命令通过 `write_stdin` 轮询。如果原生路由 Responses、Kiro 或 Cursor 路径上的 code-mode exec
结果仍包含宿主的某条失败消息,opencodex 会追加一行提示,指出对应规则。此变更不会重写模型的
代码或补丁文本。

所选 provider 必须支持 function/tool calling。不支持 tool call 的 text-only provider 无法使用 `exec`、
Browser 或 Computer Use。原生 OpenAI 条目会保持其上游 tool mode 不变。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,12 @@ metadata,使用 Codex 的 `low | medium | high | xhigh | max | ultra` 檔位
歷史編碼成上游 function tool,再於 Codex 看見前將串流 function-call lifecycle 還原成
`custom_tool_call`。原生 OpenAI forward 路由與受支援的 `apply_patch` custom tool 維持不變。

路由的 code-mode 回合也會在首次呼叫前收到主機對巢狀輔助工具的規則:`tools.apply_patch`
接收一個字串,開頭與結尾必須是沒有額外包裝的獨立補丁標記行;isolate 中沒有 `import`,長時間執行的
命令透過 `write_stdin` 輪詢。如果原生路由 Responses、Kiro 或 Cursor 路徑上的 code-mode exec
結果仍包含主機的某則失敗訊息,opencodex 會附加一行提示,指出對應規則。這項變更不會重寫模型的
程式碼或補丁文字。

所選 provider 必須支援 function/tool calling。不支援 tool call 的純文字 provider 無法使用 `exec`、
Browser 或 Computer Use。原生 OpenAI 列保留上游 tool mode 不變。

Expand Down
Binary file added docs/pr-assets/codex-desktop-opt-in.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions gui/src/i18n/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2469,6 +2469,8 @@ export const de: Record<TKey, string> = {
"dash.visionTimeout": "Timeout",
"dash.visionTimeoutInvalid": "Geben Sie eine ganze Zahl von {min} bis {max} Millisekunden ein.",
"dash.visionAdvancedPopover": "Erweiterte Vision-Einstellungen",
"dash.codexDesktopAuthless": "Codex ohne Anmeldung öffnen",
"dash.codexDesktopAuthlessHint": "Standardmäßig aus. Überspringt die separate Desktop-Anmeldung bei geeigneten lokalen Verbindungen. Zugangsdaten für den Anbieter bleiben erforderlich. Codex nach einer Änderung neu starten. Kontogebundene Desktop-Funktionen können fehlen.",
"models.newPolicyGlobal": "Neue Modelle zunächst deaktivieren", "models.newPolicyProvider": "Richtlinie für neue Modelle",
"models.newPolicy_inherit": "Übernehmen", "models.newPolicy_off": "Aus", "models.newPolicy_on": "An", "models.newBadge": "NEU", "models.newCount": "{count} neu, aus",
"models.aliases": "Aliase",
Expand Down
2 changes: 2 additions & 0 deletions gui/src/i18n/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -575,6 +575,8 @@ export const en = {
"models.keepNativeOnV1Hint": "ChatGPT encrypts v2 child tasks only when a ChatGPT-native parent stays on v2, so Grok and Claude cannot read them. Turn this on to keep Sol/Terra on v1 and avoid that encryption. Routed parents keep v2.",
"models.v2Help": "Controls the multi-agent surface for all models.\n\nv1: Classic single-thread agent. Every model uses the v1 collab surface.\nbase: Upstream defaults — sol/terra use v2, luna uses v1, others follow the codex feature flag.\nv2: Multi-thread agent with spawn_agent. Every model uses the v2 collab surface.\n\nOn v2, Keep ChatGPT on v1 leaves Sol/Terra on the v1 surface so they can still spawn Grok or Claude. ChatGPT encrypts v2 child tasks; routed models cannot read them. Routed parents stay on v2.\n\nChanges apply to new sessions.",
"dash.multiAgent": "Sub-agent",
"dash.codexDesktopAuthless": "Open Codex without signing in",
"dash.codexDesktopAuthlessHint": "Off by default. Skip the separate Desktop sign-in for eligible local connections. Upstream credentials are still required. Restart Codex after changing this setting. Account-gated Desktop features may be unavailable.",
"models.v2Conflict": "[agents] max_threads is set — codex will refuse to start; remove it from config.toml",
"models.v2Applied": "Sub-agent mode updated — applies to new sessions (restart the Codex app to refresh the picker)",
"models.v2ThreadsLabel": "Max threads",
Expand Down
2 changes: 2 additions & 0 deletions gui/src/i18n/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -560,6 +560,8 @@ export const fr: Record<TKey, string> = {
"models.keepNativeOnV1Hint": "ChatGPT chiffre les tâches enfants v2 uniquement lorsqu’un parent natif ChatGPT reste sur v2, de sorte que Grok et Claude ne peuvent pas les lire. Activez cette option pour garder Sol/Terra sur v1 et éviter ce chiffrement. Les parents routés restent sur v2.",
"models.v2Help": "Contrôle l’interface multi-agent pour tous les modèles.\n\nv1 : agent classique à fil unique. Tous les modèles utilisent l’interface collab v1.\nbase : valeurs par défaut en amont — sol/terra utilisent v2, luna utilise v1 et les autres suivent l’indicateur de fonctionnalité codex.\nv2 : agent multifil avec spawn_agent. Tous les modèles utilisent l’interface collab v2.\n\nEn v2, « Garder ChatGPT sur v1 » laisse Sol/Terra sur l’interface v1 afin qu’ils puissent encore lancer Grok ou Claude. ChatGPT chiffre les tâches enfants v2 ; les modèles routés ne peuvent pas les lire. Les parents routés restent sur v2.\n\nLes modifications s’appliquent aux nouvelles sessions.",
"dash.multiAgent": "Sous-agent",
"dash.codexDesktopAuthless": "Ouvrir Codex sans se connecter",
"dash.codexDesktopAuthlessHint": "Désactivé par défaut. Ignore la connexion Desktop séparée pour les connexions locales admissibles. Les identifiants du fournisseur restent nécessaires. Redémarrez Codex après toute modification. Certaines fonctions Desktop liées au compte peuvent être indisponibles.",
"models.v2Conflict": "[agents] max_threads est défini — codex refusera de démarrer ; supprimez-le de config.toml",
"models.v2Applied": "Mode sous-agent mis à jour — s’applique aux nouvelles sessions (redémarrez l’application Codex pour actualiser le sélecteur)",
"models.v2ThreadsLabel": "Nombre maximal de fils",
Expand Down
2 changes: 2 additions & 0 deletions gui/src/i18n/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2490,6 +2490,8 @@ export const ja: Record<TKey, string> = {
"dash.visionTimeout": "タイムアウト",
"dash.visionTimeoutInvalid": "{min} から {max} ミリ秒の整数を入力してください。",
"dash.visionAdvancedPopover": "詳細なビジョン設定",
"dash.codexDesktopAuthless": "ログインせずに Codex を開く",
"dash.codexDesktopAuthlessHint": "既定ではオフです。対象のローカル接続で Desktop の個別ログインを省略します。上流プロバイダーの認証情報は引き続き必要です。変更後は Codex を再起動してください。アカウントに依存する Desktop 機能が利用できない場合があります。",
"models.newPolicyGlobal": "新しいモデルを無効で追加", "models.newPolicyProvider": "新しいモデルのポリシー",
"models.newPolicy_inherit": "継承", "models.newPolicy_off": "オフ", "models.newPolicy_on": "オン", "models.newBadge": "新着", "models.newCount": "新着 {count} 件、オフ",
"models.aliases": "エイリアス",
Expand Down
2 changes: 2 additions & 0 deletions gui/src/i18n/ko.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2491,6 +2491,8 @@ export const ko: Record<TKey, string> = {
"dash.visionTimeout": "제한 시간",
"dash.visionTimeoutInvalid": "{min}에서 {max} 밀리초 사이의 정수를 입력하세요.",
"dash.visionAdvancedPopover": "고급 비전 설정",
"dash.codexDesktopAuthless": "로그인 없이 Codex 열기",
"dash.codexDesktopAuthlessHint": "기본값은 꺼짐입니다. 지원되는 로컬 연결에서 별도의 Desktop 로그인을 건너뜁니다. 업스트림 인증 정보는 여전히 필요합니다. 변경 후 Codex를 다시 시작하세요. 계정에 연결된 Desktop 기능을 사용하지 못할 수 있습니다.",
"models.newPolicyGlobal": "새 모델을 비활성화 상태로 추가", "models.newPolicyProvider": "새 모델 정책",
"models.newPolicy_inherit": "상속", "models.newPolicy_off": "끔", "models.newPolicy_on": "켬", "models.newBadge": "신규", "models.newCount": "신규 {count}개, 꺼짐",
"models.aliases": "별칭",
Expand Down
2 changes: 2 additions & 0 deletions gui/src/i18n/ru.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2492,6 +2492,8 @@ export const ru: Record<TKey, string> = {
"dash.visionTimeout": "Таймаут",
"dash.visionTimeoutInvalid": "Введите целое число от {min} до {max} миллисекунд.",
"dash.visionAdvancedPopover": "Дополнительные настройки изображений",
"dash.codexDesktopAuthless": "Открывать Codex без входа",
"dash.codexDesktopAuthlessHint": "По умолчанию выключено. Пропускает отдельный вход в Desktop для допустимых локальных подключений. Учётные данные провайдера по-прежнему нужны. После изменения перезапустите Codex. Функции Desktop, связанные с аккаунтом, могут быть недоступны.",
"models.newPolicyGlobal": "Добавлять новые модели выключенными", "models.newPolicyProvider": "Политика новых моделей",
"models.newPolicy_inherit": "Наследовать", "models.newPolicy_off": "Выкл.", "models.newPolicy_on": "Вкл.", "models.newBadge": "НОВАЯ", "models.newCount": "Новых: {count}, выкл.",
"models.aliases": "Псевдонимы",
Expand Down
2 changes: 2 additions & 0 deletions gui/src/i18n/tr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2492,6 +2492,8 @@ export const tr: Record<TKey, string> = {
"dash.visionTimeout": "Zaman aşımı",
"dash.visionTimeoutInvalid": "{min} ile {max} milisaniye arasında bir tam sayı girin.",
"dash.visionAdvancedPopover": "Gelişmiş görsel ayarları",
"dash.codexDesktopAuthless": "Codex’i oturum açmadan başlat",
"dash.codexDesktopAuthlessHint": "Varsayılan olarak kapalıdır. Uygun yerel bağlantılarda ayrı Desktop oturum açma adımını atlar. Sağlayıcı kimlik bilgileri yine gereklidir. Değişiklikten sonra Codex’i yeniden başlatın. Hesaba bağlı Desktop özellikleri kullanılamayabilir.",
"models.newPolicyGlobal": "Yeni modeller devre dışı başlasın", "models.newPolicyProvider": "Yeni model ilkesi",
"models.newPolicy_inherit": "Devral", "models.newPolicy_off": "Kapalı", "models.newPolicy_on": "Açık", "models.newBadge": "YENİ", "models.newCount": "{count} yeni, kapalı",
"models.aliases": "Takma adlar",
Expand Down
2 changes: 2 additions & 0 deletions gui/src/i18n/zh-TW.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2454,6 +2454,8 @@ export const zhTW: Record<TKey, string> = {
"dash.visionTimeout": "逾時",
"dash.visionTimeoutInvalid": "請輸入 {min} 到 {max} 毫秒之間的整數。",
"dash.visionAdvancedPopover": "進階視覺設定",
"dash.codexDesktopAuthless": "無需登入即可開啟 Codex",
"dash.codexDesktopAuthlessHint": "預設關閉。為符合條件的本機連線略過獨立的 Desktop 登入。仍需上游供應商憑證。變更後請重新啟動 Codex。依賴帳戶的 Desktop 功能可能無法使用。",
"models.newPolicyGlobal": "新模型預設停用", "models.newPolicyProvider": "新模型策略",
"models.newPolicy_inherit": "繼承", "models.newPolicy_off": "關閉", "models.newPolicy_on": "開啟", "models.newBadge": "新增", "models.newCount": "{count} 個新增,已關閉",
"models.aliases": "別名",
Expand Down
Loading
Loading