Repository navigation
Releases: drscrewdriver/dsh-thinking-levels
Releases · drscrewdriver/dsh-thinking-levels
Release list
v4.4.5
v4.4.5
Fixed
- A taken-over Responses / Anthropic route whose model carries a multi-level
reasoningEffortstable no longer collapses its effort selector to Off/On. The fold lives inpiAiPosture.thinkingOn, which previously keyed only on "table present + route in the takeover list"; but the physical reason for the fold (pi-ai rejecting areasoning_effortstring outside its fixed seven levels) is a completions-only concern, and on a non-completions route thesupportsReasoningEffortescape hatch cannot even be written (4.4.4).piAiPosturenow additionally requires the route'sapito beopenai-completions(or absent, pi-ai's default) — the same predicate as the card'scompletionsCompatConfigurable. This single gate fixes both the selector advertisement (advertiseModelCapability) and the request-timetoggleOnlystripping (capabilityResolver), so a taken-over Responses route keeps its nativethinkingLevelMaplevels end to end.
Tests
- 186/186: new
piAiPostureprotocol-gate matrix — Responses/Anthropic taken-over routes do NOT fold, completions (and absent-api) routes still DO fold, out-of-takeover Responses never folds, and a completions row declaringsupportsReasoningEffortis not toggle-only.
Release backfilled on 2026-10-22 from git tag + CHANGELOG history.
v4.4.4
v4.4.4
Changed
- The two openai-completions-only switches (
支持 think effort/思考格式) are no longer RENDERED on other protocols — they used to be shown greyed with a long note. They now appear only when the model is declared a thinking model AND the route speaksopenai-completions; everywhere else they are absent from the DOM. Thinking itself stays live on every protocol (protocol-neutralreasoningEfforts). - The per-level wire editor is no longer trapped in completions (issue #8). It edits
reasoningEfforts— the table the host turns into pi-ai'sthinkingLevelMap, which every protocol reads (Anthropic thinking budget, Responses reasoning effort, completions reasoning_effort string). A thinking model now opens the grid on any protocol; only the completions toggle-style guard (needs支持 think effortbefore offering effort levels) still applies there. toggleEffortCapablerefuses a non-completions entry outright, so no code path can write the field where the host would reject it.
Fixed
applyDraftused to auto-writecompat.supportsReasoningEffort: truewhenever a non-toggle level was ticked. On a Responses/Anthropic route that field makes the host reject the WHOLE providers payload — one tick and the entire save was lost. The side effect is now completions-only, so editing levels outside completions is safe.
Added
- Leftover audit (
staleThinkingCompatFields) + one-click cleanup (stripThinkingCompat): a model row still carryingthinkingFormat/supportsReasoningEffortfrom an older version (or a hand-editedcordis.yml) now shows which fields block the next write, with a per-row and a card-wide sweep. Sibling compat fields survive; an emptiedcompatobject is deleted rather than left as{}.
Tests
- 180/180: the issue-#7 render matrix (absent vs present by protocol × thinking), the issue-#8 grid-on-every-protocol matrix, the write-recorder bomb regression (mutation-verified: removing the guard fails it), the audit, and the strip writer's sibling/empty-object cases.
Release backfilled on 2026-10-22 from git tag + CHANGELOG history.
v4.4.3
v4.4.3
Fixed
- Capability card: the 思考 (thinking) checkbox is selectable again on every wire protocol, not only openai-completions. It writes the protocol-neutral
reasoningEfforts(host llm-pi-ai →reasoning: true+thinkingLevelMap, which pi-ai maps natively per protocol), so the prerequisite the effort selector needs is back on Responses/Anthropic routes too. - A non-completions thinking declaration no longer carries the completions-only
thinkingFormatalong: the qwen format autofill is skipped there (a model-level write of it made the host reject the WHOLE providers payload), andoffkeeps a real wire token (none) so the Off level stays selectable instead of being marked unsupported by pi-ai. thinkingFormat/ 支持 think effort remain gated to openai-completions — those two ARE completions-only compat fields — and the card note now says exactly that instead of claiming thinking itself is unconfigurable.- Host-side compat sync: an explicitly non-completions
apiis no longer treated as a custom openai-completions gateway (the baseURL heuristic applies only when no protocol is named), so the auto-sync cannot write completions-only compat into a Responses/Anthropic route.
Tests
- 168/168: new
writeThinkingRowprotocol matrix (completions / responses / anthropic), the 4.4.x alias, and the sync gateway guard.
Release backfilled on 2026-10-22 from git tag + CHANGELOG history.
v4.4.2
v4.4.2
- The settings-card checkboxes (启用 / 接管主控 / 允许降档 / 允许升档 / 模型界面接管) are now optimistic horizontal pill toggles — click flips instantly, a refused write rolls back.
- The 模型界面接管 row gained a VISIBLE explainer under the row (previously tooltip-only): what ON replaces, what OFF keeps, and that the auto mask still arrives either way.
Release backfilled on 2026-10-22 from git tag + CHANGELOG history.
v4.4.1
v4.4.1
- Fixed:
takeoverUinow applies live, no reload. The 4.4.0 gate read the settings mirror once at seat-inject time; on the real desktop host the model-seat callback can fire BEFORE the settings channel binds or the mirror folds, so with the switch on the panel never seated (and the official popup stayed with no context chips). Seating is now a watchdog re-evaluated whenever the settings waist binds or any settings change lands: flipping the switch seats the ModelPanel — flipping back returns the shipped ModelSelect — immediately. - Card: the takeoverUi row is an optimistic horizontal pill toggle (flips on click, rolls back on a refused write).
Release backfilled on 2026-10-22 from git tag + CHANGELOG history.
v4.4.0
v4.4.0
Fixed
- Capability card (#2): providers whose
apiis notopenai-completions(openai-responses family, anthropic-messages …) now grey out the Thinking / Supports-effort / thinkingFormat controls with an explanatory note instead of failing the whole providers write with a genericcard.writeError— the host's Responses compat gate never offers those model-level fields. - Load cost (#4): the
resolveModeladvertisement is idempotent again — repeatedllm/adapters-updatedused to STACK wrappers, each replaying a full settings readout (O(models × wrappers) on the model page). The readout is generation-cached (invalidated on settings commits) and the takeover mirror re-check only runs for namespaces that can move the judgment. Note: the 4.3.0 projection stateVersion bump keeps a ONE-TIME history re-fold on the first load after upgrading. - Effort chip (#5): with the level set to
autothe panel chip keeps showing Auto and demotes the step's resolved level to a secondary→ <level>hint, instead of being overwritten by the scheduler's wire value.
Added
takeoverUisetting (default OFF, #3/#4): the composer keeps the official model popup — native search and loading, and theautomask still arrives through the server-side advertisement; official-model context editing lives on the settings card while it is OFF. Flip it ON to restore the ModelPanel takeover. Reload the page after changing.- ModelPanel popup search (#3): shown past four models, mirroring the shipped selector's rule.
Release backfilled on 2026-10-22 from git tag + CHANGELOG history.
v4.3.3
v4.3.3
- 计价目录化上线:price-catalog 41 条(国内 30 CNY 峰谷/平价 + 海外 11 USD:Claude 4 官方页一手、GPT 4/Gemini 3 Copilot 计费文档×公告交叉核实),注入型号按目录实价入账、目录外走 estimate 典型价兜底并标「未校准·仅供参考」(免费档调用=按标准价折算的花费/白嫖额度感知)。
- 凭证入账 stateVersion 2→3;设置卡目录外定价五档选择器(9 语);CATALOG_VERSION 1→2;golden 150/150 绿。
Release backfilled on 2026-10-22 from git tag + CHANGELOG history.
v4.3.2
v4.3.2
- hosts: 追加 0.2.1-rc.2 声明面枚举(宿主 peer 逐包 npm 实测 rc.2 在版;不触 ctx.web provider 与 model.label 槽,代码零改动,纯元数据发版;农场 rc.2 格挂账待命)
All notable changes to dsh-thinking-levels are documented here.
- English changelog
- 日本語 changelog
- 한국어 changelog
- Changelog en français
- Changelog auf Deutsch
- Changelog in italiano
- Список изменений на русском
- Changelog en español
Release backfilled on 2026-10-22 from git tag + CHANGELOG history.
v4.3.1
v4.3.1
Fixed
engines.dshand the seven@deepseek-ai/dsh-*peers append|| 0.2.1-rc.1(exact 12-term enumeration, no ranges or carets), so the host compatibility gate accepts DSH0.2.1-rc.1.dsh.plugin.jsonengines.dshcarries the same 12-term enumeration — the gate only readspackage.json, but the two lists must not diverge.- devDependencies
@deepseek-ai/dsh-client-*moved 0.2.0-rc.1 → 0.2.1-rc.1; build and the full suite (140 tests) verified against the target line. - README compatibility statements (en/zh/ja/ko/de/es/fr/it/ru) synced to the enumeration. No behaviour change in this release.
Release backfilled on 2026-10-22 from git tag + CHANGELOG history.
v4.3.0
v4.3.0
Added
- Price catalog (src/price-catalog.ts): 29 model entries x region — DeepSeek V4.1-Flash / V4-Flash / V4-Pro carry the official peak/off-peak pairs (Beijing 09-12 & 14-18 peak, schedule effective 2026-08-17); GLM / Kimi / Qwen / Doubao / MiniMax / Ernie carry flat CN rates. Every entry prices three slots per million tokens — non-cached input / cache-hit input / output — and ships asOf + source annotations. Overseas (USD) slots are structurally present but intentionally left empty until official pages can be re-verified: no fabricated numbers.
- defaultPricing setting (cn / global / custom / off, default off): models outside the catalog are no longer estimated at Flash rates — they render as unpriced instead.
- 2026 State Council holiday/make-up correction table (39 rows, shared provenance with dsh-session-guard): make-up-workday weekends count as workdays for peak gating; statutory holidays are off-peak all day. Unknown years degrade to natural-weekend rules.
Changed
- Projection stateVersion 1 -> 2: each usage sample stores a pricing receipt settled at fold time; same-step replacement subtracts the recorded values (no mixed-rate recomputation, no negative ledgers); session/turn totals are bucketed per currency. After upgrading, old checkpoints are discarded and refolded against the CURRENT catalog — historical totals shift once; afterwards pricing edits only affect subsequent samples.
- Billing popover: currency-aware symbols (¥ / $, unknown currency falls back to its ISO code), honest chips for flat/null tiers, "priced as " derived from the catalog label, and mixed-currency sessions list per-currency rows instead of a fake sum.
- matchedModel / unitPricePerM deprecated (dual-written for one more generation).
Fixed
- settings.describe() shape normalization: in-process array vs RPC {namespaces:[...]} envelope — exotic shapes now read as absent instead of throwing into a swallowed catch (the silent-freeze failure class).
- Projection registration is try/catch-guarded: a billing-unit failure hides the billing section instead of poisoning the whole plugin fiber or cold session history.
Release backfilled on 2026-10-22 from git tag + CHANGELOG history.