fix(codex-config): close fix-round-1 parity gaps against CcConfig

Isolate the codex-CLI-backed reads (mcp/plugins/marketplaces) from the
file-backed ones in fetchAll via two independent Promise.all groups, so a
missing `codex` binary degrades only the mcp/plugins tabs instead of
leaving the whole panel stuck on skeletons. Generalize EditorModal's
nameless-type detection behind a `namelessTypes` prop (defaulting to
Claude's own ["memory"]) so Codex's config.toml can be created without a
name. Port BackupsModal, disable the plugin/mcp Remove button when no
stable identifier resolved, hide the inert search box on memory/config,
drop a redundant empty state, and reword the delete-dialog copy to be
tool-neutral.

Co-authored-by: Nguyễn Ngọc Trí Vĩ <vinnt@smartgift.vn>
This commit is contained in:
2026-09-08 21:34:06 +07:00
parent 8015730adf
commit 56bf5bbf4d
8 changed files with 432 additions and 73 deletions
+5 -2
View File
@@ -1342,10 +1342,13 @@ export interface CcConfigChangedPayload {
* unlike {@link CcConfigChangedPayload} this is always dashboard-sourced. */
export interface CodexConfigChangedPayload {
source: "dashboard";
action?: "write" | "delete";
/** "write"/"delete" for file mutations; "add"/"remove" for the CLI-driven
* mcp/plugin/marketplace routes. */
action?: "write" | "delete" | "add" | "remove";
/** "user" or "project" - Codex has no "project-local" scope. */
scope?: "user" | "project";
/** Artifact kind, e.g. "skills", "agents", "rules", "memory", "config". */
/** Artifact kind, e.g. "skills", "agents", "rules", "memory", "config",
* or "mcp"/"plugin"/"marketplace" for the CLI-driven routes. */
type?: string;
name?: string | null;
}