@goodandready/dsh-clinebot 0.6.6 → 0.6.7

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/CHANGELOG.md CHANGED
@@ -5,6 +5,14 @@ All notable changes to `@goodandready/dsh-clinebot` will be documented in this f
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.6.7] - 2026-10-21
9
+
10
+ ### Added
11
+ - **Headless contract test**: boots the plugin without the UI, asserts the `ctx.llm` adapter, config provider entry, HTTP routes and `/cline` command registration, and verifies removed proxy/register routes stay absent.
12
+
13
+ ### Changed
14
+ - Removed unused icon cases (`search`, `check`, `trash`, `refresh`, `account`) from the client bundle.
15
+
8
16
  ## [0.6.6] - 2026-10-21
9
17
 
10
18
  ### Changed
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  <h3>Native ClineBot / ClinePass Provider Companion for DeepSeek Harness</h3>
6
6
 
7
- <p><b>0.6.6</b> compresses the client bundle from 256.7 KB to 202.9 KB and removes unused server helpers, with room for the next features. Chat runs on the native <code>ctx.llm</code> adapter and requires DSH <code>0.2.1-rc.2</code>; the legacy <code>llm-pi-ai</code>, loopback proxy and <code>llm/stream</code> path are removed.</p>
7
+ <p><b>0.6.7</b> adds headless contract coverage and trims unused icons on top of the compressed 0.6.6 bundle. Chat runs on the native <code>ctx.llm</code> adapter and requires DSH <code>0.2.1-rc.2</code>; the legacy <code>llm-pi-ai</code>, loopback proxy and <code>llm/stream</code> path are removed.</p>
8
8
 
9
9
  <p align="center">
10
10
  <a href="https://www.npmjs.com/package/@goodandready/dsh-clinebot"><img src="https://img.shields.io/npm/v/@goodandready/dsh-clinebot.svg?style=for-the-badge&color=6366f1&labelColor=1e1b4b" alt="npm version"></a>
package/README.ru.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  <h3>Нативное подключение провайдера ClineBot / ClinePass для DeepSeek Harness</h3>
6
6
 
7
- <p><b>0.6.6</b> сжимает клиентский бандл с 256.7 КБ до 202.9 КБ и убирает неиспользуемые серверные хелперы, освобождая место для следующих фич. Чат работает через нативный адаптер <code>ctx.llm</code>, требуется DSH <code>0.2.1-rc.2</code>; старые <code>llm-pi-ai</code>, loopback-прокси и <code>llm/stream</code> удалены.</p>
7
+ <p><b>0.6.7</b> добавляет headless contract-проверку и убирает неиспользуемые иконки поверх сжатого бандла 0.6.6. Чат работает через нативный адаптер <code>ctx.llm</code>, требуется DSH <code>0.2.1-rc.2</code>; старые <code>llm-pi-ai</code>, loopback-прокси и <code>llm/stream</code> удалены.</p>
8
8
 
9
9
  <p align="center">
10
10
  <a href="https://www.npmjs.com/package/@goodandready/dsh-clinebot"><img src="https://img.shields.io/npm/v/@goodandready/dsh-clinebot.svg?style=for-the-badge&color=6366f1&labelColor=1e1b4b" alt="npm version"></a>
package/README.zh.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  <h3>适用于 DeepSeek Harness 的 ClineBot / ClinePass 原生模型提供商伴侣插件</h3>
6
6
 
7
- <p><b>0.6.6</b> 将客户端包从 256.7 KB 压缩到 202.9 KB,并移除未使用的服务端辅助代码,为后续功能腾出空间。聊天使用原生 <code>ctx.llm</code> 适配器,需要 DSH <code>0.2.1-rc.2</code>;旧的 <code>llm-pi-ai</code>、回环代理和 <code>llm/stream</code> 已删除。</p>
7
+ <p><b>0.6.7</b> 在压缩后的 0.6.6 包之上添加 headless 契约测试并移除未使用的图标。聊天使用原生 <code>ctx.llm</code> 适配器,需要 DSH <code>0.2.1-rc.2</code>;旧的 <code>llm-pi-ai</code>、回环代理和 <code>llm/stream</code> 已删除。</p>
8
8
 
9
9
  <p align="center">
10
10
  <a href="https://www.npmjs.com/package/@goodandready/dsh-clinebot"><img src="https://img.shields.io/npm/v/@goodandready/dsh-clinebot.svg?style=for-the-badge&color=6366f1&labelColor=1e1b4b" alt="npm version"></a>
package/lib/client.js CHANGED
@@ -21,7 +21,7 @@ const zh={nav:"ClineBot",title:"ClineBot",subtitle:"ClinePass \u8BA2\u9605\u670D
21
21
  let primitives=null;try{primitives=require("@deepseek-ai/dsh-client-ui-primitives")||null}catch(_){primitives=null}const Switch=primitives&&primitives.Switch||null;const Modal=primitives&&primitives.Modal||null;function BooleanControl(props){const{checked,disabled,label,onChange}=props;if(Switch){return React.createElement(Switch,{checked:!!checked,disabled:!!disabled,label,onChange:next=>{if(typeof onChange==="function")onChange(next)}})}return React.createElement("input",{type:"checkbox",style:{cursor:disabled?"not-allowed":"pointer",width:"16px",height:"16px",flex:"none"},checked:!!checked,disabled:!!disabled,"aria-label":label,onChange:e=>{if(typeof onChange==="function")onChange(e.target.checked)}})}
22
22
 
23
23
  // --- src/client/icons.js ---
24
- function CbIcon({name,size=16,className}){const common={width:size,height:size,viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",className:className||"cb-icon","aria-hidden":"true",focusable:"false"};const children=[];switch(name){case"search":children.push(React.createElement("circle",{key:"c",cx:7,cy:7,r:4.5}),React.createElement("path",{key:"l",d:"M10.5 10.5 14 14"}));break;case"plus":children.push(React.createElement("path",{key:"v",d:"M8 3v10"}),React.createElement("path",{key:"h",d:"M3 8h10"}));break;case"close":children.push(React.createElement("path",{key:"x",d:"m4 4 8 8M12 4l-8 8"}));break;case"check":children.push(React.createElement("path",{key:"p",d:"m3.5 8.5 3 3 6-7"}));break;case"warning":children.push(React.createElement("path",{key:"t",d:"M8 2 14 13H2Z"}),React.createElement("path",{key:"l",d:"M8 6v3"}),React.createElement("circle",{key:"d",cx:8,cy:11.2,r:.6,fill:"currentColor",stroke:"none"}));break;case"error":children.push(React.createElement("circle",{key:"c",cx:8,cy:8,r:6}),React.createElement("path",{key:"l",d:"M8 4.5v4"}),React.createElement("circle",{key:"d",cx:8,cy:11.4,r:.6,fill:"currentColor",stroke:"none"}));break;case"download":children.push(React.createElement("path",{key:"a",d:"M8 2v7"}),React.createElement("path",{key:"b",d:"m5 6.5 3 3 3-3"}),React.createElement("path",{key:"c",d:"M3 12.5h10"}));break;case"chevron":children.push(React.createElement("path",{key:"p",d:"m6 4 4 4-4 4"}));break;case"kebab":children.push(React.createElement("circle",{key:"a",cx:8,cy:3.5,r:1,fill:"currentColor",stroke:"none"}),React.createElement("circle",{key:"b",cx:8,cy:8,r:1,fill:"currentColor",stroke:"none"}),React.createElement("circle",{key:"c",cx:8,cy:12.5,r:1,fill:"currentColor",stroke:"none"}));break;case"key":children.push(React.createElement("circle",{key:"c",cx:5,cy:8,r:2.5}),React.createElement("path",{key:"a",d:"M7.5 8H14"}),React.createElement("path",{key:"b",d:"M11.5 8v2"}),React.createElement("path",{key:"d",d:"M13.5 8v1.5"}));break;case"edit":children.push(React.createElement("path",{key:"a",d:"M3 13l.5-3L11 2.5 13.5 5 6 12.5Z"}),React.createElement("path",{key:"b",d:"m9.5 4 2.5 2.5"}));break;case"trash":children.push(React.createElement("path",{key:"a",d:"M3 5h10"}),React.createElement("path",{key:"b",d:"M6 5V3.5h4V5"}),React.createElement("path",{key:"c",d:"M4.5 5 5 13h6l.5-8"}));break;case"route":children.push(React.createElement("path",{key:"a",d:"M3 5h6a2 2 0 0 1 0 4H5a2 2 0 0 0 0 4h8"}),React.createElement("path",{key:"b",d:"m11 10 2 3-2 3"}));break;case"refresh":children.push(React.createElement("path",{key:"a",d:"M13 8a5 5 0 1 1-1.5-3.5"}),React.createElement("path",{key:"b",d:"M13 2.5V6h-3.5"}));break;case"account":children.push(React.createElement("circle",{key:"a",cx:8,cy:5.5,r:2.5}),React.createElement("path",{key:"b",d:"M3 13c.6-2.5 2.6-4 5-4s4.4 1.5 5 4"}));break;default:children.push(React.createElement("circle",{key:"c",cx:8,cy:8,r:6}))}return React.createElement("svg",common,children)}
24
+ function CbIcon({name,size=16,className}){const common={width:size,height:size,viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round",className:className||"cb-icon","aria-hidden":"true",focusable:"false"};const children=[];switch(name){case"plus":children.push(React.createElement("path",{key:"v",d:"M8 3v10"}),React.createElement("path",{key:"h",d:"M3 8h10"}));break;case"close":children.push(React.createElement("path",{key:"x",d:"m4 4 8 8M12 4l-8 8"}));break;case"warning":children.push(React.createElement("path",{key:"t",d:"M8 2 14 13H2Z"}),React.createElement("path",{key:"l",d:"M8 6v3"}),React.createElement("circle",{key:"d",cx:8,cy:11.2,r:.6,fill:"currentColor",stroke:"none"}));break;case"error":children.push(React.createElement("circle",{key:"c",cx:8,cy:8,r:6}),React.createElement("path",{key:"l",d:"M8 4.5v4"}),React.createElement("circle",{key:"d",cx:8,cy:11.4,r:.6,fill:"currentColor",stroke:"none"}));break;case"download":children.push(React.createElement("path",{key:"a",d:"M8 2v7"}),React.createElement("path",{key:"b",d:"m5 6.5 3 3 3-3"}),React.createElement("path",{key:"c",d:"M3 12.5h10"}));break;case"chevron":children.push(React.createElement("path",{key:"p",d:"m6 4 4 4-4 4"}));break;case"kebab":children.push(React.createElement("circle",{key:"a",cx:8,cy:3.5,r:1,fill:"currentColor",stroke:"none"}),React.createElement("circle",{key:"b",cx:8,cy:8,r:1,fill:"currentColor",stroke:"none"}),React.createElement("circle",{key:"c",cx:8,cy:12.5,r:1,fill:"currentColor",stroke:"none"}));break;case"key":children.push(React.createElement("circle",{key:"c",cx:5,cy:8,r:2.5}),React.createElement("path",{key:"a",d:"M7.5 8H14"}),React.createElement("path",{key:"b",d:"M11.5 8v2"}),React.createElement("path",{key:"d",d:"M13.5 8v1.5"}));break;case"edit":children.push(React.createElement("path",{key:"a",d:"M3 13l.5-3L11 2.5 13.5 5 6 12.5Z"}),React.createElement("path",{key:"b",d:"m9.5 4 2.5 2.5"}));break;case"route":children.push(React.createElement("path",{key:"a",d:"M3 5h6a2 2 0 0 1 0 4H5a2 2 0 0 0 0 4h8"}),React.createElement("path",{key:"b",d:"m11 10 2 3-2 3"}));break;default:children.push(React.createElement("circle",{key:"c",cx:8,cy:8,r:6}))}return React.createElement("svg",common,children)}
25
25
 
26
26
  // --- src/client/styles.js ---
27
27
  function ensureCss(){if(typeof document==="undefined")return;if(document.getElementById("dsh-clinebot-full-css"))return;const style=document.createElement("style");style.id="dsh-clinebot-full-css";style.dataset.dshPlugin=NS;style.textContent=`
@@ -9,7 +9,7 @@
9
9
  import { createRequire } from 'node:module'
10
10
 
11
11
  const require = createRequire(import.meta.url)
12
- let packageVersion = '0.6.6'
12
+ let packageVersion = '0.6.7'
13
13
  try {
14
14
  packageVersion = require('../../package.json').version || packageVersion
15
15
  } catch {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goodandready/dsh-clinebot",
3
- "version": "0.6.6",
3
+ "version": "0.6.7",
4
4
  "description": "DeepSeek Harness companion for ClineBot / ClinePass: dynamic subscription models sync, quota exhaustion warnings, session metrics, dedicated settings page, live usage limits, and /cline slash-command.",
5
5
  "license": "MIT",
6
6
  "type": "module",