minecodex 1.0.2 → 1.0.4
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.
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
{ "id": "kimi", "keywords": ["kimi", "moonshot"], "icon": { "resource": "assets/providers/kimi.svg" } },
|
|
55
55
|
{ "id": "minimax", "keywords": ["minimax"], "icon": { "resource": "assets/providers/minimax.svg" } },
|
|
56
56
|
{ "id": "qwen", "keywords": ["qwen", "qwq"], "icon": { "resource": "assets/providers/qwen.svg" } },
|
|
57
|
-
{ "id": "hunyuan", "keywords": ["hunyuan", "opencode-go/hy3"], "icon": { "resource": "assets/providers/hunyuan.svg" } },
|
|
57
|
+
{ "id": "hunyuan", "keywords": ["tencent", "hunyuan", "opencode-go/hy3"], "icon": { "resource": "assets/providers/hunyuan.svg" } },
|
|
58
58
|
{ "id": "muse", "keywords": ["muse", "muse-spark"], "icon": { "resource": "assets/providers/muse.svg" } },
|
|
59
59
|
{ "id": "zhipu", "keywords": ["zhipu", "chatglm", "glm"], "icon": { "resource": "assets/providers/zhipu.svg" } },
|
|
60
60
|
{ "id": "openai", "keywords": ["openai", "gpt", "codex", "o1", "o3", "o4"], "icon": { "resource": "assets/providers/openai.svg" } }
|
package/package.json
CHANGED
|
@@ -303,6 +303,7 @@ export function createInjectionSource(features, {
|
|
|
303
303
|
const modelSelectorOriginalItems = new Map();
|
|
304
304
|
const modelSelectorOriginalToggleLabels = new Map();
|
|
305
305
|
const modelSelectorGenericContainers = new Map();
|
|
306
|
+
const modelSelectorNativeToggleHandlers = new Map();
|
|
306
307
|
const modelSelectorPositionObservers = new Map();
|
|
307
308
|
const modelSelectorMenuSizeFrames = new Map();
|
|
308
309
|
let modelSelectorReturnTimer = null;
|
|
@@ -329,7 +330,7 @@ export function createInjectionSource(features, {
|
|
|
329
330
|
position: absolute !important;
|
|
330
331
|
right: 0;
|
|
331
332
|
bottom: 0;
|
|
332
|
-
z-index:
|
|
333
|
+
z-index: 10;
|
|
333
334
|
background-color: var(--color-surface-elevated-secondary);
|
|
334
335
|
-webkit-backdrop-filter: none;
|
|
335
336
|
backdrop-filter: none;
|
|
@@ -954,6 +955,11 @@ export function createInjectionSource(features, {
|
|
|
954
955
|
return formatIdentifier(source.slice(source.lastIndexOf("/") + 1));
|
|
955
956
|
}
|
|
956
957
|
|
|
958
|
+
function compactModelLabel(rawValue) {
|
|
959
|
+
const raw = String(rawValue ?? "").trim();
|
|
960
|
+
return formatIdentifier(raw.slice(raw.lastIndexOf("/") + 1));
|
|
961
|
+
}
|
|
962
|
+
|
|
957
963
|
function brandForModel(identity, selector) {
|
|
958
964
|
const haystack = `${identity.backend} ${identity.raw}`.toLowerCase();
|
|
959
965
|
return selector.brands?.find((brand) => (
|
|
@@ -1152,7 +1158,10 @@ export function createInjectionSource(features, {
|
|
|
1152
1158
|
|
|
1153
1159
|
function nativeModelPickerMenu() {
|
|
1154
1160
|
return Array.from(document.querySelectorAll('[role="menu"][data-state="open"]')).find(
|
|
1155
|
-
(menu) =>
|
|
1161
|
+
(menu) => (
|
|
1162
|
+
menu.querySelector("[data-reasoning-slider]")
|
|
1163
|
+
&& (menu.querySelector("[data-model-picker-view-toggle]") || nativeModelPickerRow(menu))
|
|
1164
|
+
),
|
|
1156
1165
|
) ?? null;
|
|
1157
1166
|
}
|
|
1158
1167
|
|
|
@@ -1169,6 +1178,14 @@ export function createInjectionSource(features, {
|
|
|
1169
1178
|
}
|
|
1170
1179
|
|
|
1171
1180
|
function nativeModelValue(menu) {
|
|
1181
|
+
const toggle = menu?.querySelector("[data-model-picker-view-toggle]");
|
|
1182
|
+
const toggleModelLabel = toggle?.querySelector('[class*="_ViewToggleModelLabel_"]');
|
|
1183
|
+
const toggleValues = String(
|
|
1184
|
+
toggle?.hasAttribute("data-model-picker-view-toggle")
|
|
1185
|
+
? (toggleModelLabel?.textContent ?? toggle.innerText)
|
|
1186
|
+
: "",
|
|
1187
|
+
).split("\n").map((value) => value.trim()).filter(Boolean);
|
|
1188
|
+
if (toggleValues.length) return toggleValues[0];
|
|
1172
1189
|
const row = nativeModelPickerRow(menu);
|
|
1173
1190
|
const values = String(row?.innerText ?? "").split("\n").map((value) => value.trim()).filter(Boolean);
|
|
1174
1191
|
if (values.length > 1) return values.at(-1);
|
|
@@ -1699,6 +1716,15 @@ export function createInjectionSource(features, {
|
|
|
1699
1716
|
}
|
|
1700
1717
|
}
|
|
1701
1718
|
|
|
1719
|
+
function pruneNativeModelToggleHandlers() {
|
|
1720
|
+
for (const [toggle, handlers] of modelSelectorNativeToggleHandlers) {
|
|
1721
|
+
if (toggle.isConnected) continue;
|
|
1722
|
+
toggle.removeEventListener("click", handlers.openModels);
|
|
1723
|
+
toggle.removeEventListener("keydown", handlers.onKeyDown);
|
|
1724
|
+
modelSelectorNativeToggleHandlers.delete(toggle);
|
|
1725
|
+
}
|
|
1726
|
+
}
|
|
1727
|
+
|
|
1702
1728
|
function closeControllerModelMenu() {
|
|
1703
1729
|
const record = modelSelectorControllerMenu;
|
|
1704
1730
|
if (!record) return false;
|
|
@@ -2324,13 +2350,7 @@ export function createInjectionSource(features, {
|
|
|
2324
2350
|
return true;
|
|
2325
2351
|
}
|
|
2326
2352
|
|
|
2327
|
-
function
|
|
2328
|
-
if (enhanceGenericModelPicker(parentMenu, selector)) return;
|
|
2329
|
-
const toggle = parentMenu.querySelector("[data-model-picker-view-toggle]");
|
|
2330
|
-
if (!toggle) {
|
|
2331
|
-
enhanceGenericModelPicker(parentMenu, selector);
|
|
2332
|
-
return;
|
|
2333
|
-
}
|
|
2353
|
+
function restoreGenericModelPicker(parentMenu) {
|
|
2334
2354
|
parentMenu.querySelector(":scope > [data-codex-model-slider-generic]")?.remove();
|
|
2335
2355
|
parentMenu.removeAttribute("data-codex-model-slider-generic-menu");
|
|
2336
2356
|
const nativeContainer = parentMenu.firstElementChild;
|
|
@@ -2338,19 +2358,42 @@ export function createInjectionSource(features, {
|
|
|
2338
2358
|
nativeContainer.style.display = modelSelectorGenericContainers.get(nativeContainer);
|
|
2339
2359
|
modelSelectorGenericContainers.delete(nativeContainer);
|
|
2340
2360
|
}
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
|
|
2344
|
-
|
|
2345
|
-
|
|
2361
|
+
}
|
|
2362
|
+
|
|
2363
|
+
function enhanceNativeModelPicker(parentMenu, selector) {
|
|
2364
|
+
const toggle = parentMenu.querySelector("[data-model-picker-view-toggle]");
|
|
2365
|
+
if (toggle) {
|
|
2366
|
+
// 新版 Codex 保留原生 Slider;MCX 只精简模型名并接管模型入口。
|
|
2367
|
+
restoreGenericModelPicker(parentMenu);
|
|
2368
|
+
const raw = nativeModelValue(parentMenu);
|
|
2369
|
+
const textNode = firstVisibleTextNode(toggle);
|
|
2370
|
+
if (raw && textNode) {
|
|
2371
|
+
if (!modelSelectorOriginalToggleLabels.has(textNode)) {
|
|
2372
|
+
modelSelectorOriginalToggleLabels.set(textNode, textNode.textContent);
|
|
2373
|
+
}
|
|
2374
|
+
const label = compactModelLabel(raw);
|
|
2375
|
+
if (textNode.textContent !== label) textNode.textContent = label;
|
|
2346
2376
|
}
|
|
2347
|
-
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2377
|
+
if (!toggle.hasAttribute("data-codex-model-slider-toggle")) {
|
|
2378
|
+
const originalAriaExpanded = toggle.getAttribute("aria-expanded");
|
|
2379
|
+
toggle.setAttribute("data-codex-model-slider-toggle", "");
|
|
2380
|
+
const openModels = (event) => {
|
|
2381
|
+
event.preventDefault();
|
|
2382
|
+
event.stopPropagation();
|
|
2383
|
+
event.stopImmediatePropagation();
|
|
2384
|
+
openControllerModelMenu(parentMenu, toggle, selector);
|
|
2385
|
+
};
|
|
2386
|
+
const onKeyDown = (event) => {
|
|
2387
|
+
if (event.key !== "Enter" && event.key !== " ") return;
|
|
2388
|
+
openModels(event);
|
|
2389
|
+
};
|
|
2390
|
+
toggle.addEventListener("click", openModels);
|
|
2391
|
+
toggle.addEventListener("keydown", onKeyDown);
|
|
2392
|
+
modelSelectorNativeToggleHandlers.set(toggle, { openModels, onKeyDown, originalAriaExpanded });
|
|
2393
|
+
}
|
|
2394
|
+
return;
|
|
2353
2395
|
}
|
|
2396
|
+
if (enhanceGenericModelPicker(parentMenu, selector)) return;
|
|
2354
2397
|
}
|
|
2355
2398
|
|
|
2356
2399
|
function enhanceComposerModelTrigger(selector) {
|
|
@@ -2392,6 +2435,7 @@ export function createInjectionSource(features, {
|
|
|
2392
2435
|
const selector = modelSelectorFeature?.modelSelector;
|
|
2393
2436
|
if (!selector) return;
|
|
2394
2437
|
pruneModelSubmenuPositionObservers();
|
|
2438
|
+
pruneNativeModelToggleHandlers();
|
|
2395
2439
|
if (!modelSelectorStyle.isConnected) document.head?.append(modelSelectorStyle);
|
|
2396
2440
|
enhanceComposerModelTrigger(selector);
|
|
2397
2441
|
const parentMenu = nativeModelPickerMenu();
|
|
@@ -2456,6 +2500,13 @@ export function createInjectionSource(features, {
|
|
|
2456
2500
|
for (const [node, value] of modelSelectorOriginalToggleLabels) {
|
|
2457
2501
|
if (node.isConnected) node.textContent = value;
|
|
2458
2502
|
}
|
|
2503
|
+
for (const [toggle, handlers] of modelSelectorNativeToggleHandlers) {
|
|
2504
|
+
toggle.removeEventListener("click", handlers.openModels);
|
|
2505
|
+
toggle.removeEventListener("keydown", handlers.onKeyDown);
|
|
2506
|
+
toggle.removeAttribute("data-codex-model-slider-toggle");
|
|
2507
|
+
if (handlers.originalAriaExpanded == null) toggle.removeAttribute("aria-expanded");
|
|
2508
|
+
else toggle.setAttribute("aria-expanded", handlers.originalAriaExpanded);
|
|
2509
|
+
}
|
|
2459
2510
|
for (const [container, display] of modelSelectorGenericContainers) {
|
|
2460
2511
|
if (container.isConnected) container.style.display = display;
|
|
2461
2512
|
}
|
|
@@ -2476,6 +2527,7 @@ export function createInjectionSource(features, {
|
|
|
2476
2527
|
modelSelectorOriginalItems.clear();
|
|
2477
2528
|
modelSelectorOriginalToggleLabels.clear();
|
|
2478
2529
|
modelSelectorGenericContainers.clear();
|
|
2530
|
+
modelSelectorNativeToggleHandlers.clear();
|
|
2479
2531
|
}
|
|
2480
2532
|
|
|
2481
2533
|
function surfaceKey(featureId, kind, detailId = "") {
|