From f3db861b63cc3101704fcece9780d92ef970c736 Mon Sep 17 00:00:00 2001 From: yetone Date: Mon, 28 Sep 2026 14:40:32 +0800 Subject: [PATCH] agents: Codex's sign-in picker shows each choice's whole explanation, under its name, rather than cut off after a few words; the Chinese reads which one is the default and what the Codex app shows --- internal/gui/assets/app.css | 3 +++ internal/gui/assets/app.js | 4 +++- internal/gui/assets/i18n.js | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/internal/gui/assets/app.css b/internal/gui/assets/app.css index 81923f86..630bc6f2 100644 --- a/internal/gui/assets/app.css +++ b/internal/gui/assets/app.css @@ -648,6 +648,9 @@ body.window .foot { padding-left: 18px; } .pop li:hover .favorite, .pop li .favorite.on { display: inline-flex; } .pop li .favorite:hover { color: var(--amber); background: var(--pill-hover); } .pop li .favorite.on { color: var(--amber); } +.pop.explained li { height: auto; padding: 7px 8px; white-space: normal; align-items: flex-start; } +.pop.explained li .option-words { flex-direction: column; align-items: flex-start; gap: 2px; } +.pop.explained li .n { flex: none; overflow: visible; line-height: 1.4; } .pop.model-picker { max-height: 420px; border: 1px solid var(--line); } .pop.model-picker .search { min-height: 39px; } .pop.model-picker .search input { height: 38px; } diff --git a/internal/gui/assets/app.js b/internal/gui/assets/app.js index fc1a83e4..e8c718f6 100644 --- a/internal/gui/assets/app.js +++ b/internal/gui/assets/app.js @@ -872,6 +872,8 @@ function openPicker(agent, field, anchor, ev, only) { const pop = $("#pop"); pop.classList.toggle("model-picker", modelPicker); pop.classList.toggle("effort-picker", effortPicker); + // a choice explained in a sentence (Codex's sign-in) shows all of it + pop.classList.toggle("explained", field.label === "sign-in"); pop.hidden = false; $("#effortControl").hidden = !effortPicker; pop.querySelector(".search").hidden = effortPicker; @@ -1138,7 +1140,7 @@ function closePicker() { pick.groupAnimation?.cancel(); pick.anchor.classList.remove("open"); $("#pop").hidden = true; - $("#pop").classList.remove("model-picker", "effort-picker"); + $("#pop").classList.remove("model-picker", "effort-picker", "explained"); $("#pop .search").hidden = false; $("#pop .picker-body").hidden = false; $("#effortControl").hidden = true; diff --git a/internal/gui/assets/i18n.js b/internal/gui/assets/i18n.js index 556dea6a..2ace35b3 100644 --- a/internal/gui/assets/i18n.js +++ b/internal/gui/assets/i18n.js @@ -52,8 +52,8 @@ const I18N = { "tiers": "分档", "subagents": "子 agent", "sign-in": "登录方式", - "magpie's models join Codex's own; Codex stays signed in to ChatGPT": "magpie 的模型加入 Codex 自带的模型,Codex 保持 ChatGPT 登录", - "magpie is Codex's provider; the Codex app is in its API state, with magpie's models only": "magpie 作为 Codex 的供应商,Codex 应用处于 API 状态,只有 magpie 的模型", + "magpie's models join Codex's own; Codex stays signed in to ChatGPT": "默认。Codex 保持 ChatGPT 登录,magpie 的模型和 Codex 自带的模型一起出现", + "magpie is Codex's provider; the Codex app is in its API state, with magpie's models only": "magpie 作为 Codex 的供应商,Codex 应用显示为 API 登录状态,只列出 magpie 的模型", "same as model": "同主模型", "same as model ({model})": "同主模型({model})", "Same as model": "同主模型",