dsh-codex-subscription 2.6.6 → 2.6.8

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.
package/README.en.md CHANGED
@@ -106,7 +106,7 @@ This plugin supports the latest DeepSeek Harness release recorded in its package
106
106
  2. Paste this package name, with its version, into the **Package name or address** field:
107
107
 
108
108
  ```text
109
- dsh-codex-subscription@2.6.6
109
+ dsh-codex-subscription@2.6.8
110
110
  ```
111
111
 
112
112
  3. Click **Install** and wait for completion. Follow the page instructions; save your work before restarting if requested.
@@ -118,7 +118,7 @@ Why the version is included: DSH's plugin page only installs versions that are a
118
118
  <summary>Terminal installation (with an existing dsh command)</summary>
119
119
 
120
120
  ```sh
121
- dsh plugin --profile web add dsh-codex-subscription@2.6.6
121
+ dsh plugin --profile web add dsh-codex-subscription@2.6.8
122
122
  ```
123
123
 
124
124
  Follow the restart instructions, then sign in under **Settings → Codex**. Both the Plugins page and the terminal use DSH's installation management.
@@ -131,7 +131,7 @@ Follow the restart instructions, then sign in under **Settings → Codex**. Both
131
131
  After signing in and selecting a Codex model in Web, install the same plugin in the Headless profile:
132
132
 
133
133
  ```sh
134
- dsh plugin --profile headless add dsh-codex-subscription@2.6.6
134
+ dsh plugin --profile headless add dsh-codex-subscription@2.6.8
135
135
  dsh --profile headless "Reply with only the word: ok"
136
136
  ```
137
137
 
@@ -266,7 +266,7 @@ Find this plugin on the DSH **Plugins** page and use its update or uninstall act
266
266
  <summary>Terminal commands</summary>
267
267
 
268
268
  ```sh
269
- dsh plugin --profile web update dsh-codex-subscription@2.6.6
269
+ dsh plugin --profile web update dsh-codex-subscription@2.6.8
270
270
  ```
271
271
 
272
272
  Run only when you want to uninstall:
@@ -282,7 +282,7 @@ dsh plugin --profile web remove dsh-codex-subscription
282
282
  <details>
283
283
  <summary>DSH 0.2.0-rc.2 reports the plugin as incompatible?</summary>
284
284
 
285
- DSH 0.2.0-rc.2 did not exist when any release before 2.2.10 was published, and a published package's compatibility declaration cannot be changed. Install 2.2.10 or later (a bare package name can resolve to an older release during the first 24 hours, so enter `dsh-codex-subscription@2.2.10`) from the **Plugins** page, or run `dsh plugin --profile web update dsh-codex-subscription@2.6.6`, then restart DSH.
285
+ DSH 0.2.0-rc.2 did not exist when any release before 2.2.10 was published, and a published package's compatibility declaration cannot be changed. Install 2.2.10 or later (a bare package name can resolve to an older release during the first 24 hours, so enter `dsh-codex-subscription@2.2.10`) from the **Plugins** page, or run `dsh plugin --profile web update dsh-codex-subscription@2.6.8`, then restart DSH.
286
286
 
287
287
  </details>
288
288
 
package/README.md CHANGED
@@ -106,7 +106,7 @@
106
106
  2. 在 **包名或地址** 输入框中粘贴下面的包名(已带版本号):
107
107
 
108
108
  ```text
109
- dsh-codex-subscription@2.6.6
109
+ dsh-codex-subscription@2.6.8
110
110
  ```
111
111
 
112
112
  3. 点击 **安装**,等待安装完成;按页面提示操作,需要重启时先保存工作。
@@ -118,7 +118,7 @@
118
118
  <summary>终端安装(已能运行 dsh 命令)</summary>
119
119
 
120
120
  ```sh
121
- dsh plugin --profile web add dsh-codex-subscription@2.6.6
121
+ dsh plugin --profile web add dsh-codex-subscription@2.6.8
122
122
  ```
123
123
 
124
124
  安装完成后按提示重启 DSH,再到 **设置 → Codex 订阅** 登录。插件页面和终端均由 DSH 管理安装。
@@ -131,7 +131,7 @@ dsh plugin --profile web add dsh-codex-subscription@2.6.6
131
131
  先在 Web 中完成登录并选择一次 Codex 模型,再把同一个插件安装到 Headless profile:
132
132
 
133
133
  ```sh
134
- dsh plugin --profile headless add dsh-codex-subscription@2.6.6
134
+ dsh plugin --profile headless add dsh-codex-subscription@2.6.8
135
135
  dsh --profile headless "只回复:ok"
136
136
  ```
137
137
 
@@ -295,7 +295,7 @@ DSH 实机设置截图。
295
295
  <summary>终端方式</summary>
296
296
 
297
297
  ```sh
298
- dsh plugin --profile web update dsh-codex-subscription@2.6.6
298
+ dsh plugin --profile web update dsh-codex-subscription@2.6.8
299
299
  ```
300
300
 
301
301
  仅在需要卸载时运行:
@@ -311,7 +311,7 @@ dsh plugin --profile web remove dsh-codex-subscription
311
311
  <details>
312
312
  <summary>DSH 0.2.0-rc.2 提示插件不兼容?</summary>
313
313
 
314
- 2.2.10 之前的所有版本发布时 DSH 0.2.0-rc.2 还不存在,其兼容声明无法事后修改。请安装 2.2.10 或更高版本(只填包名时,发布满 24 小时前可能装到旧版,请直接填 `dsh-codex-subscription@2.2.10`):在 **插件** 页面更新,或运行 `dsh plugin --profile web update dsh-codex-subscription@2.6.6`,然后重启 DSH。
314
+ 2.2.10 之前的所有版本发布时 DSH 0.2.0-rc.2 还不存在,其兼容声明无法事后修改。请安装 2.2.10 或更高版本(只填包名时,发布满 24 小时前可能装到旧版,请直接填 `dsh-codex-subscription@2.2.10`):在 **插件** 页面更新,或运行 `dsh plugin --profile web update dsh-codex-subscription@2.6.8`,然后重启 DSH。
315
315
 
316
316
  </details>
317
317
 
package/lib/client.js CHANGED
@@ -6981,15 +6981,17 @@ window.__ModuleLoader__.load({
6981
6981
  .codexModelSelectMenu,.codexModelSelectSubmenu{position:absolute;z-index:30;box-sizing:border-box;width:max-content;min-width:min(240px,calc(100vw - 32px));max-width:min(420px,calc(100vw - 32px));max-height:min(360px,calc(100vh - 96px));padding:4px;border:1px solid var(--dsw-alias-border-inverted);border-radius:12px;background:var(--dsw-alias-bg-layer-2,#2c2c2e);box-shadow:var(--dsw-shadow-lv3);color:var(--dsw-alias-label-primary);overflow:hidden}
6982
6982
  .codexModelSelectMenu{right:0;bottom:calc(100% + 8px)}
6983
6983
  .codexModelSelectSubmenu{right:calc(100% + 8px);bottom:0;min-width:min(230px,calc(100vw - 32px))}
6984
+ /* Keep search outside the scroll viewport; let the model list fit the bounded menu. */
6985
+ .codexModelSelectModelMenu{display:flex;flex-direction:column}
6984
6986
  .codexModelSelectCell{display:flex;align-items:center;gap:8px;width:100%;min-width:100%;height:40px;box-sizing:border-box;padding:0 10px;border:0;border-radius:10px;background:transparent;color:inherit;font-size:14px;line-height:22px;text-align:left;cursor:pointer}
6985
6987
  .codexModelSelectCell:hover,.codexModelSelectCell:focus-visible,.codexModelSelectCell[data-open=true]{background:var(--dsw-alias-interactive-bg-hover);outline:0}
6986
6988
  .codexModelSelectCell:disabled{color:var(--dsw-alias-label-dimmed);cursor:default}
6987
6989
  .codexModelSelectCellLabel{flex:none;white-space:nowrap}
6988
6990
  .codexModelSelectCellValue{flex:auto;min-width:0;overflow:hidden;color:var(--dsw-alias-label-tertiary);text-align:right;text-overflow:ellipsis;white-space:nowrap}
6989
6991
  .codexModelSelectCellChevron{flex:none;color:var(--dsw-alias-label-tertiary)}
6990
- .codexModelSelectSearch{display:block;width:100%;box-sizing:border-box;height:32px;margin:0 0 4px;padding:0 10px;border:1px solid var(--dsw-alias-border-l3);border-radius:8px;outline:0;background:transparent;color:inherit;font:inherit;font-size:13px}
6992
+ .codexModelSelectSearch{display:block;flex-shrink:0;width:100%;box-sizing:border-box;height:32px;margin:0 0 4px;padding:0 10px;border:1px solid var(--dsw-alias-border-l3);border-radius:8px;outline:0;background:transparent;color:inherit;font:inherit;font-size:13px}
6991
6993
  .codexModelSelectSearch:focus-visible{box-shadow:0 0 0 2px var(--dsw-alias-border-l3)}
6992
- .codexModelSelectGroups{min-height:0;max-height:352px;overflow-y:auto}
6994
+ .codexModelSelectGroups{flex:1 1 auto;min-height:0;overflow-y:auto}
6993
6995
  .codexModelSelectGroup+.codexModelSelectGroup{margin-top:4px}
6994
6996
  .codexModelSelectGroupTitle{position:sticky;top:0;z-index:1;padding:5px 8px 3px;background:var(--dsw-alias-bg-layer-2,#2c2c2e);color:var(--dsw-alias-label-tertiary);font-size:12px;font-weight:500;line-height:18px}
6995
6997
  .codexModelSelectOption{display:flex;align-items:center;gap:8px;width:100%;min-width:100%;min-height:38px;box-sizing:border-box;padding:6px 8px;border:0;border-radius:10px;outline:0;background:transparent;color:inherit;text-align:left;cursor:pointer}
@@ -9153,7 +9155,7 @@ window.__ModuleLoader__.load({
9153
9155
  }
9154
9156
  //#endregion
9155
9157
  //#region src/version.js
9156
- const PACKAGE_VERSION = "2.6.6";
9158
+ const PACKAGE_VERSION = "2.6.8";
9157
9159
  //#endregion
9158
9160
  //#region src/client-recovery.js
9159
9161
  async function recoveryCall(rpc, endpoint, payload = {}, timeoutMs = 1e4) {
@@ -9614,7 +9616,7 @@ window.__ModuleLoader__.load({
9614
9616
  });
9615
9617
  let submenu = null;
9616
9618
  if (pane === "model") submenu = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9617
- className: "codexModelSelectSubmenu",
9619
+ className: "codexModelSelectSubmenu codexModelSelectModelMenu",
9618
9620
  role: "menu",
9619
9621
  "aria-label": t("modelLabel"),
9620
9622
  children: [
package/lib/index.js CHANGED
@@ -19,7 +19,6 @@ import { createUserMessage } from "@deepseek-ai/dsh-llm";
19
19
  import * as dshCredentials from "@deepseek-ai/dsh-credentials";
20
20
  import { dshHomePath, resolveDshHome } from "@deepseek-ai/dsh-home-paths";
21
21
  import { PiAiAdapter } from "@deepseek-ai/dsh-llm-pi-ai";
22
- import z from "@deepseek-ai/schemastery";
23
22
  import { openaiCodexProvider as createOpenAICodexProvider } from "@earendil-works/pi-ai/providers/openai-codex";
24
23
  import { createModels } from "@earendil-works/pi-ai";
25
24
  import { WebError } from "@deepseek-ai/dsh-web";
@@ -31,7 +30,15 @@ function createSettingsAdapter(ctx, schema, config, namespace) {
31
30
  const entry = ctx.fiber.entry;
32
31
  const id = entry?.options?.id ?? entry?.id;
33
32
  if (!id) throw new Error("DSH settings entry is unavailable");
34
- const get = () => Object.fromEntries(Object.entries(config).map(([key, value]) => [key, typeof value?.get === "function" ? value.get() : value]));
33
+ const liveConfig = () => {
34
+ try {
35
+ const current = ctx.fiber?.config ?? ctx.config;
36
+ return current !== null && typeof current === "object" ? current : config;
37
+ } catch {
38
+ return config;
39
+ }
40
+ };
41
+ const get = () => Object.fromEntries(Object.entries(liveConfig()).map(([key, value]) => [key, typeof value?.get === "function" ? value.get() : value]));
35
42
  return {
36
43
  get,
37
44
  update: (patch) => ctx.settings.update(id, patch),
@@ -2080,7 +2087,7 @@ function inheritedOriginalImageRef(session, assetId) {
2080
2087
  }
2081
2088
  //#endregion
2082
2089
  //#region src/version.js
2083
- const PACKAGE_VERSION = "2.6.6";
2090
+ const PACKAGE_VERSION = "2.6.8";
2084
2091
  const USER_AGENT = `dsh-codex-subscription/${PACKAGE_VERSION}`;
2085
2092
  //#endregion
2086
2093
  //#region src/codex-images.js
@@ -6321,8 +6328,9 @@ function createSubscriptionRpcHandler({ authHandler, usageReader, resetCreditSer
6321
6328
  }
6322
6329
  if (endpoint === "preferences/status" || endpoint === "preferences/update") try {
6323
6330
  signal.throwIfAborted();
6331
+ let patch;
6324
6332
  if (endpoint === "preferences/update") {
6325
- const patch = capabilityPatch(payload);
6333
+ patch = capabilityPatch(payload);
6326
6334
  if (Object.hasOwn(payload ?? {}, "disabledModels")) {
6327
6335
  const disabled = payload[DISABLED_MODELS_FIELD];
6328
6336
  if (!Array.isArray(disabled) || disabled.length > 100 || disabled.length !== normalizeDisabledModels(disabled).length) return publicError("internal", "Invalid disabled models preference");
@@ -6349,9 +6357,13 @@ function createSubscriptionRpcHandler({ authHandler, usageReader, resetCreditSer
6349
6357
  if (Object.keys(patch).length === 0) return publicError("internal", "Invalid preference update");
6350
6358
  await preferences.update(patch);
6351
6359
  }
6360
+ const status = preferences.status();
6352
6361
  return {
6353
6362
  ok: true,
6354
- value: preferences.status()
6363
+ value: patch === void 0 ? status : {
6364
+ ...status,
6365
+ ...patch
6366
+ }
6355
6367
  };
6356
6368
  } catch (error) {
6357
6369
  if (signal.aborted) throw error;
@@ -6424,6 +6436,7 @@ function createSubscriptionRpcHandler({ authHandler, usageReader, resetCreditSer
6424
6436
  }
6425
6437
  //#endregion
6426
6438
  //#region src/index.js
6439
+ const z = createRequire(import.meta.resolve("@deepseek-ai/dsh-settings"))("@deepseek-ai/schemastery");
6427
6440
  const name = "codex-subscription";
6428
6441
  const inject = [
6429
6442
  "llm",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-codex-subscription",
3
- "version": "2.6.6",
3
+ "version": "2.6.8",
4
4
  "description": "Use ChatGPT and Codex subscriptions in DeepSeek Harness with OAuth, quota, safe resets, web search, images, and Fast mode",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",