From d544791b3ac7d779b5d74a00068741ef056132c8 Mon Sep 17 00:00:00 2001 From: murashit Date: Thu, 9 Jul 2026 07:30:00 +0900 Subject: [PATCH] Align user-facing vocabulary --- README.md | 2 +- src/features/chat/app-server/thread-reference-resolver.ts | 2 +- .../chat/application/threads/thread-management-actions.ts | 6 +++--- .../chat/presentation/pending-requests/view-model.ts | 2 +- src/features/chat/presentation/runtime/status.ts | 4 ++-- .../chat/ui/thread-stream/pending-request-block.tsx | 2 +- src/features/chat/ui/thread-stream/text.tsx | 2 +- src/settings/tab-shell.tsx | 4 ++-- .../chat/ui/thread-stream/blocks-and-messages.test.tsx | 2 +- .../chat/ui/thread-stream/pending-requests.test.tsx | 2 +- tests/runtime/runtime-settings.test.ts | 2 +- tests/settings/settings-tab.test.ts | 6 +++--- 12 files changed, 18 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 469272d9..640d6d45 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ For context outside the current composer, use `/refer ` to sen Completions cover slash commands, `$skill-name` skills, Obsidian tags, recent threads, models, reasoning levels, and permission profiles. Use `/help` for the current command list. -While a turn is running, the panel streams the conversation, reasoning, tool activity, file changes, plans, and agent activity. You can answer Codex questions, approve commands, respond to requests, steer or interrupt the turn, and manage active goals above the message stream. +While a turn is running, the panel streams the conversation, reasoning, tool activity, file changes, plans, and agent activity. You can answer Codex questions, approve commands, respond to requests, steer or interrupt the turn, and manage active goals above the conversation. When Codex changes files, open an Obsidian diff view to review the changes and copy the patch. For a focused note edit, select Markdown text and run **Codex Panel: Rewrite selection** to ask Codex for a replacement and review a selection-scoped diff before applying it. diff --git a/src/features/chat/app-server/thread-reference-resolver.ts b/src/features/chat/app-server/thread-reference-resolver.ts index 7025e67e..71998af4 100644 --- a/src/features/chat/app-server/thread-reference-resolver.ts +++ b/src/features/chat/app-server/thread-reference-resolver.ts @@ -35,7 +35,7 @@ async function referencedThreadInput( const turns = await readReferencedThreadConversationSummaries(client, thread.id, REFERENCED_THREAD_TURN_LIMIT); if (host.currentClient() !== client) return null; if (turns.length === 0) { - host.addSystemMessage("Referenced thread has no readable conversation turns."); + host.addSystemMessage("Referenced thread has no readable turns."); return null; } const messageInput = host.prepareInput(message, snapshot); diff --git a/src/features/chat/application/threads/thread-management-actions.ts b/src/features/chat/application/threads/thread-management-actions.ts index 498fdd5d..ca3be6d6 100644 --- a/src/features/chat/application/threads/thread-management-actions.ts +++ b/src/features/chat/application/threads/thread-management-actions.ts @@ -8,9 +8,9 @@ import { chatTurnBusy } from "../turns/turn-state"; import type { ThreadMutationTransport } from "./thread-mutation-transport"; const STATUS_COMPACTION_REQUESTED = "Compaction requested."; -const STATUS_ROLLBACK_STARTING = "Rolling back latest turn..."; -const STATUS_ROLLBACK_COMPLETE = "Rolled back latest turn."; -const STATUS_ROLLBACK_FAILED = "Rollback failed."; +const STATUS_ROLLBACK_STARTING = "Rolling back the latest turn..."; +const STATUS_ROLLBACK_COMPLETE = "Rolled back the latest turn."; +const STATUS_ROLLBACK_FAILED = "Could not roll back the latest turn."; export interface ThreadManagementActionsHost { stateStore: ChatStateStore; diff --git a/src/features/chat/presentation/pending-requests/view-model.ts b/src/features/chat/presentation/pending-requests/view-model.ts index 31153796..fe5c9f98 100644 --- a/src/features/chat/presentation/pending-requests/view-model.ts +++ b/src/features/chat/presentation/pending-requests/view-model.ts @@ -146,7 +146,7 @@ function pendingUserInputViewModel(input: PendingUserInput): PendingUserInputVie return { requestId: input.requestId, title: "Codex needs input", - body: `Answer ${String(input.params.questions.length)} Plan mode question${input.params.questions.length === 1 ? "" : "s"} to continue.`, + body: `Answer ${String(input.params.questions.length)} question${input.params.questions.length === 1 ? "" : "s"} to continue.`, questions: input.params.questions.map((question) => ({ id: question.id, header: question.header, diff --git a/src/features/chat/presentation/runtime/status.ts b/src/features/chat/presentation/runtime/status.ts index 3dca5ee3..954e66a3 100644 --- a/src/features/chat/presentation/runtime/status.ts +++ b/src/features/chat/presentation/runtime/status.ts @@ -83,8 +83,8 @@ export function contextSummary(snapshot: RuntimeSnapshot): ContextSummary | null const percent = contextWindow ? Math.min(100, Math.round((used / contextWindow) * 100)) : null; const level = percent !== null && percent >= 90 ? "danger" : percent !== null && percent >= 70 ? "warn" : "ok"; const title = contextWindow - ? `Context: ${formatTokenCount(used)} / ${formatTokenCount(contextWindow)} (${String(percent)}%). Last request: ${formatTokenCount(usage.last.inputTokens)} input, ${formatTokenCount(usage.last.outputTokens)} output, ${formatTokenCount(usage.last.reasoningOutputTokens)} reasoning. Total: ${formatTokenCount(usage.total.totalTokens)} tokens.` - : `Context: ${formatTokenCount(used)} tokens. Last request: ${formatTokenCount(usage.last.totalTokens)} total. Total: ${formatTokenCount(usage.total.totalTokens)} tokens.`; + ? `Context: ${formatTokenCount(used)} / ${formatTokenCount(contextWindow)} (${String(percent)}%). Latest usage: ${formatTokenCount(usage.last.inputTokens)} input, ${formatTokenCount(usage.last.outputTokens)} output, ${formatTokenCount(usage.last.reasoningOutputTokens)} reasoning. Total: ${formatTokenCount(usage.total.totalTokens)} tokens.` + : `Context: ${formatTokenCount(used)} tokens. Latest usage: ${formatTokenCount(usage.last.totalTokens)} total. Total: ${formatTokenCount(usage.total.totalTokens)} tokens.`; return { label: percent === null ? `${formatTokenCount(used)} tokens` : `Context ${String(percent)}%`, title, diff --git a/src/features/chat/ui/thread-stream/pending-request-block.tsx b/src/features/chat/ui/thread-stream/pending-request-block.tsx index 9abae289..64918f04 100644 --- a/src/features/chat/ui/thread-stream/pending-request-block.tsx +++ b/src/features/chat/ui/thread-stream/pending-request-block.tsx @@ -75,7 +75,7 @@ function PendingRequestBlock({ if (!hasPendingRequests(pendingRequestCountsFromQueues({ approvals, pendingUserInputs, pendingMcpElicitations }))) return null; return (
-
Request
+
Codex request
{approvals.map((approval) => ( ))} diff --git a/src/features/chat/ui/thread-stream/text.tsx b/src/features/chat/ui/thread-stream/text.tsx index c1b43463..0f5d1980 100644 --- a/src/features/chat/ui/thread-stream/text.tsx +++ b/src/features/chat/ui/thread-stream/text.tsx @@ -105,7 +105,7 @@ function TextHeader({ view, context }: { view: ThreadStreamTextView; context: Te {rollback ? ( context.onRollback?.()} /> diff --git a/src/settings/tab-shell.tsx b/src/settings/tab-shell.tsx index d8dcb131..fbb3b682 100644 --- a/src/settings/tab-shell.tsx +++ b/src/settings/tab-shell.tsx @@ -126,8 +126,8 @@ function ComposerSettingsSection({ panel, actions }: { panel: SettingsTabPanelSt /> diff --git a/tests/features/chat/ui/thread-stream/blocks-and-messages.test.tsx b/tests/features/chat/ui/thread-stream/blocks-and-messages.test.tsx index a7122b0e..9310c993 100644 --- a/tests/features/chat/ui/thread-stream/blocks-and-messages.test.tsx +++ b/tests/features/chat/ui/thread-stream/blocks-and-messages.test.tsx @@ -315,7 +315,7 @@ describe("thread stream rendering and action menu", () => { expect(expectPresent(rendered[0]).querySelector(".codex-panel__rollback-turn")).toBeNull(); expect(expectPresent(rendered[1]).querySelector(".codex-panel__rollback-turn")).toBeNull(); const button = expectPresent(rendered[2]).querySelector(".codex-panel__rollback-turn"); - expect(button?.getAttribute("aria-label")).toBe("Rollback last turn"); + expect(button?.getAttribute("aria-label")).toBe("Roll back latest turn"); button?.click(); expect(onRollback).toHaveBeenCalledWith(); }); diff --git a/tests/features/chat/ui/thread-stream/pending-requests.test.tsx b/tests/features/chat/ui/thread-stream/pending-requests.test.tsx index 53998f46..b2615e6b 100644 --- a/tests/features/chat/ui/thread-stream/pending-requests.test.tsx +++ b/tests/features/chat/ui/thread-stream/pending-requests.test.tsx @@ -182,7 +182,7 @@ describe("pending request renderer decisions", () => { expect(actions.setUserInputDraft).toHaveBeenCalledWith("99:scope", "日本"); }); - it("renders pending approvals and Plan mode questions in the same request block", () => { + it("renders pending approvals and user input questions in the same request block", () => { const parent = document.createElement("div"); const approval = pendingApproval(); const input = pendingUserInput(); diff --git a/tests/runtime/runtime-settings.test.ts b/tests/runtime/runtime-settings.test.ts index 313456e9..a8656154 100644 --- a/tests/runtime/runtime-settings.test.ts +++ b/tests/runtime/runtime-settings.test.ts @@ -802,7 +802,7 @@ describe("runtime settings", () => { }), ), ).toMatchObject({ - title: "Context: 1,000 / 100,000 (1%). Last request: 1,000 input, 200 output, 50 reasoning. Total: 2,600 tokens.", + title: "Context: 1,000 / 100,000 (1%). Latest usage: 1,000 input, 200 output, 50 reasoning. Total: 2,600 tokens.", }); expect( contextSummary( diff --git a/tests/settings/settings-tab.test.ts b/tests/settings/settings-tab.test.ts index b96614b1..aaca60b8 100644 --- a/tests/settings/settings-tab.test.ts +++ b/tests/settings/settings-tab.test.ts @@ -67,7 +67,7 @@ describe("settings tab", () => { "Selection rewrite", "Composer", "Send shortcut", - "Scroll thread from composer line edges", + "Scroll conversation from composer line edges", "Reference active file on send", "Attachment folder", "Web clipping", @@ -129,7 +129,7 @@ describe("settings tab", () => { const tab = newSettingsTab({ saveSettings }); tab.display(); - const toggle = inputForSetting(tab, "Scroll thread from composer line edges"); + const toggle = inputForSetting(tab, "Scroll conversation from composer line edges"); if (!toggle) throw new Error("Missing composer line edge scroll toggle"); expect(toggle.parentElement?.classList.contains("checkbox-container")).toBe(true); @@ -138,7 +138,7 @@ describe("settings tab", () => { await flushPromises(); expect(saveSettings).toHaveBeenCalledOnce(); - expect(settingDesc(tab, "Scroll thread from composer line edges")).toContain("Up/Ctrl+P"); + expect(settingDesc(tab, "Scroll conversation from composer line edges")).toContain("Up/Ctrl+P"); }); it("saves the active file reference setting", async () => {