dsh-listener 0.3.10 → 0.3.11

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
@@ -1,5 +1,10 @@
1
1
  # 更新记录
2
2
 
3
+ ## 0.3.11 — 2026-10-02
4
+
5
+ - 检查更新与更新按钮移至来源选择框右侧,“下载来源”改为“更新来源”。
6
+ - 删除更新渠道的冗余提示行,窄窗口中保持选择框与更新按钮同排。
7
+
3
8
  ## 0.3.10 — 2026-10-02
4
9
 
5
10
  - 统一恢复名称为 `dsh-listener`:npm 包、插件标识、设置命名空间、接口路径、客户端模块、音频处理器、样式、凭据变量、发布脚本和文档同步更名。
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  DeepSeek Harness 云端实时语音输入插件。按住右 Alt 说话,松开停止;识别文字追加到当前会话草稿,默认不发送。
4
4
 
5
- 当前版本 **0.3.10**。安装与检查更新统一使用 npm 默认渠道。兼容 Harness **0.2.0-rc.2**、Node.js **22.19+(22.x)或 24+**,推荐 Chrome / Edge。更新记录见 [CHANGELOG.md](CHANGELOG.md)。
5
+ 当前版本 **0.3.11**。安装与检查更新统一使用 npm 默认渠道。兼容 Harness **0.2.0-rc.2**、Node.js **22.19+(22.x)或 24+**,推荐 Chrome / Edge。更新记录见 [CHANGELOG.md](CHANGELOG.md)。
6
6
 
7
7
  ## 安装
8
8
 
package/lib/client.js CHANGED
@@ -33,7 +33,7 @@ var DEFAULT_MODEL = "qwen-audio-3.1-asr-flash-streaming";
33
33
  var SAMPLE_RATE = 16e3;
34
34
  var MAX_AUDIO_BYTES = 16e3 * 2 * 120;
35
35
  var MAX_BUFFER_BYTES = 16e3 * 2 * 15;
36
- var VERSION = "0.3.10";
36
+ var VERSION = "0.3.11";
37
37
  var defaults = {
38
38
  model: DEFAULT_MODEL,
39
39
  region: "beijing",
@@ -600,6 +600,8 @@ var style = `
600
600
  .listener-settings .listener-field{grid-template-columns:105px 1fr;gap:8px;margin:10px 0}.listener-settings .listener-field input:not([type=checkbox]),.listener-settings .listener-field select{padding:6px 8px;font-size:13px}.listener-settings .listener-action{padding:5px 10px;font-size:13px}.listener-settings .listener-actions{margin-top:12px}.listener-popup{width:min(380px,calc(100vw - 48px));padding:16px;font-size:13px}.listener-popup h2{font-size:16px;margin:0 0 10px}.listener-popup p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5}.listener-popup-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
601
601
  .listener-progress{width:100%;height:8px;accent-color:#16a34a}
602
602
  .listener-shortcut{display:flex;align-items:center;gap:8px}.listener-shortcut input{min-width:0;flex:1}.listener-shortcut button{flex:none}.listener-settings .listener-hint{font-size:12px;margin:5px 0 0}
603
+ .listener-update-controls{display:flex;align-items:center;gap:6px;min-width:0}.listener-update-controls select{flex:1;min-width:80px}.listener-update-controls button{flex:none;white-space:nowrap}
604
+ @media(max-width:420px){.listener-settings .listener-update-field{grid-template-columns:1fr}}
603
605
  @media(max-width:500px){.listener-field{grid-template-columns:1fr;gap:6px}.listener-settings{padding:12px}}
604
606
  `;
605
607
  function Mic() {
@@ -1041,16 +1043,19 @@ function VoiceSettings() {
1041
1043
  "\u63D2\u4EF6\u7BA1\u7406 \xB7 v",
1042
1044
  VERSION
1043
1045
  ] }),
1044
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "listener-hint", children: "\u66F4\u65B0\u6765\u6E90\uFF1Anpm\u3002\u53D1\u5E03\u65B0\u7248\u540E\uFF0C\u70B9\u51FB\u68C0\u67E5\u66F4\u65B0\u5373\u53EF\u53D1\u73B0\u3002" }),
1045
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", { className: "listener-field", children: [
1046
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "\u4E0B\u8F7D\u6765\u6E90" }),
1047
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("select", { disabled: busy || !saved?.writable, value: form.updateSource, onChange: (e) => {
1048
- update("updateSource", e.target.value);
1049
- setAvailable(false);
1050
- setManagementMessage("");
1051
- }, children: [
1052
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "official", children: "npm \u5B98\u65B9" }),
1053
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "mirror", children: "npm \u955C\u50CF" })
1046
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "listener-field listener-update-field", children: [
1047
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("label", { htmlFor: "listener-update-source", children: "\u66F4\u65B0\u6765\u6E90" }),
1048
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "listener-update-controls", children: [
1049
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("select", { id: "listener-update-source", disabled: busy || !saved?.writable, value: form.updateSource, onChange: (e) => {
1050
+ update("updateSource", e.target.value);
1051
+ setAvailable(false);
1052
+ setManagementMessage("");
1053
+ }, children: [
1054
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "official", children: "npm \u5B98\u65B9" }),
1055
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "mirror", children: "npm \u955C\u50CF" })
1056
+ ] }),
1057
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { type: "button", className: "listener-action", disabled: busy, onClick: () => manage("check"), children: "\u68C0\u67E5\u66F4\u65B0" }),
1058
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { type: "button", className: "listener-action", disabled: busy || !available, onClick: () => manage("update"), children: available ? `\u66F4\u65B0\u81F3 ${latestVersion}` : "\u66F4\u65B0" })
1054
1059
  ] })
1055
1060
  ] }),
1056
1061
  form.updateSource === "mirror" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", { className: "listener-field", children: [
@@ -1061,10 +1066,6 @@ function VoiceSettings() {
1061
1066
  setManagementMessage("");
1062
1067
  } })
1063
1068
  ] }) }),
1064
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "listener-actions", children: [
1065
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { type: "button", className: "listener-action", disabled: busy, onClick: () => manage("check"), children: "\u68C0\u67E5\u66F4\u65B0" }),
1066
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { type: "button", className: "listener-action", disabled: busy || !available, onClick: () => manage("update"), children: available ? `\u66F4\u65B0\u81F3 ${latestVersion}` : "\u66F4\u65B0" })
1067
- ] }),
1068
1069
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { role: "status", "aria-label": "\u66F4\u65B0\u72B6\u6001", children: managementMessage }),
1069
1070
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(UpdateIndicator, { progress })
1070
1071
  ] }),
package/lib/index.js CHANGED
@@ -10,7 +10,7 @@ var DEFAULT_MODEL = "qwen-audio-3.1-asr-flash-streaming";
10
10
  var SAMPLE_RATE = 16e3;
11
11
  var MAX_AUDIO_BYTES = 16e3 * 2 * 120;
12
12
  var MAX_BUFFER_BYTES = 16e3 * 2 * 15;
13
- var VERSION = "0.3.10";
13
+ var VERSION = "0.3.11";
14
14
  var defaults = {
15
15
  model: DEFAULT_MODEL,
16
16
  region: "beijing",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-listener",
3
- "version": "0.3.10",
3
+ "version": "0.3.11",
4
4
  "description": "DeepSeek Harness 云端语音输入插件,支持快捷键录音、阿里云百炼实时识别,并将文字追加到当前会话草稿。",
5
5
  "license": "MIT",
6
6
  "repository": {