dsh-deeppilot 0.2.1 → 0.2.2

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.md CHANGED
@@ -23,6 +23,10 @@ Host on your own Mac and does not replace or modify the DSH Web UI.
23
23
  - Pair through a QR code with the secret stored on the Mac and in iOS Keychain.
24
24
  - Connect over a trusted LAN or the optional embedded Tailscale Funnel.
25
25
  - Receive live notifications and optional APNs notifications while offline.
26
+ - Self-update hint: the settings page footer shows the installed plugin
27
+ version, with an inline "new version" link to the matching GitHub
28
+ release when one exists (background check, stable releases only, no
29
+ third-party dependency).
26
30
 
27
31
  ## Install from npm
28
32
 
@@ -94,6 +98,7 @@ cd helper && go test ./...
94
98
  - [GitHub Issues](https://github.com/Mars-Sea/dsh-deeppilot/issues)
95
99
  - [GitHub Releases](https://github.com/Mars-Sea/dsh-deeppilot/releases)
96
100
  - [npm package](https://www.npmjs.com/package/dsh-deeppilot)
101
+ - [Linux.do 社区](https://linux.do/)
97
102
 
98
103
  DeepPilot is an independent community project and is not affiliated with or
99
104
  endorsed by DeepSeek.
package/README.zh-CN.md CHANGED
@@ -21,7 +21,10 @@
21
21
  - 发送提示词、切换模型、创建会话,并处理审批与提问;
22
22
  - 扫描二维码配对,密钥保存在 Mac 与 iOS Keychain;
23
23
  - 使用可信局域网,或可选的内嵌 Tailscale Funnel 远程连接;
24
- - 接收在线通知,以及可选的离线 APNs 推送。
24
+ - 接收在线通知,以及可选的离线 APNs 推送;
25
+ - 更新提示:设置页底部显示当前插件版本,并在有新版本时附加一个指向
26
+ 对应 GitHub Release 的链接(后台静默检查,仅比较稳定版,不引入第
27
+ 三方依赖)。
25
28
 
26
29
  ## 从 npm 安装
27
30
 
@@ -89,6 +92,7 @@ cd helper && go test ./...
89
92
  - [GitHub Issues](https://github.com/Mars-Sea/dsh-deeppilot/issues)
90
93
  - [GitHub Releases](https://github.com/Mars-Sea/dsh-deeppilot/releases)
91
94
  - [npm 包](https://www.npmjs.com/package/dsh-deeppilot)
95
+ - [Linux.do 社区](https://linux.do/)
92
96
 
93
97
  DeepPilot 是独立社区项目,与 DeepSeek 官方无隶属或背书关系。
94
98
 
package/bin/SHA256SUMS CHANGED
@@ -1 +1,6 @@
1
- 98b24ff04b40d2c4f9d6b003e263880e9d85bd235549a3193c014f8fdb4cb493 darwin-arm64/dsh-deeppilot-tunnel
1
+ 6f7caac1655a0d2bce606bcfde2e53a4dde6aea89dff8d99fe2fb3d055d4461f ./darwin-amd64/dsh-deeppilot-tunnel
2
+ 1eaa95742dbe592ab6e5c8bc00715fa63028b975a11876841e221390657535df ./darwin-arm64/dsh-deeppilot-tunnel
3
+ 766c4dfdd70e1b7607b276d4e0cc66cfb6398904c9b841f973641622d9da26ab ./linux-amd64/dsh-deeppilot-tunnel
4
+ a61bc73b2eca7b6b8358d0c6ff3e6475de8200448d1ac423647d95c37b4d9a2f ./linux-arm64/dsh-deeppilot-tunnel
5
+ 205f598f9c79138f4d8cef372f7a4aa9883f6a70d313bd5277ebac442e46063c ./windows-amd64/dsh-deeppilot-tunnel.exe
6
+ 0282ee0a0a20bb1d220f9a6d4158a5f17d4c4afbbdb2451a22a246f219bbcde5 ./windows-arm64/dsh-deeppilot-tunnel.exe
package/lib/client.js CHANGED
@@ -2636,9 +2636,13 @@ window.__ModuleLoader__.load({
2636
2636
  const lanAddresses = s.lanAddresses;
2637
2637
  if (!Array.isArray(devices)) reject("devices");
2638
2638
  if (!Array.isArray(lanAddresses) || lanAddresses.some((value) => typeof value !== "string")) reject("lanAddresses");
2639
+ const releaseUrl = s.releaseUrl;
2639
2640
  return {
2640
2641
  protocolVersion: num(s, "protocolVersion", "protocolVersion"),
2641
2642
  serverVersion: str(s, "serverVersion", "serverVersion"),
2643
+ pluginVersion: str(s, "pluginVersion", "pluginVersion"),
2644
+ ...s.updateAvailable === true ? { updateAvailable: true } : {},
2645
+ ...typeof releaseUrl === "string" && releaseUrl.length > 0 ? { releaseUrl } : {},
2642
2646
  enabled: bool(s, "enabled", "enabled"),
2643
2647
  tokenPath: str(s, "tokenPath", "tokenPath"),
2644
2648
  tokenReady: bool(s, "tokenReady", "tokenReady"),
@@ -2802,7 +2806,10 @@ window.__ModuleLoader__.load({
2802
2806
  ".pbb-helpList li+li{margin-top:4px}",
2803
2807
  ".pbb-helpText{margin:0;color:var(--dsw-alias-label-secondary);font-size:12px;line-height:1.6}",
2804
2808
  ".pbb-helpCode{display:block;margin:2px 0 0;padding:10px;overflow:auto;white-space:pre-wrap;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-label-primary);font:11px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace}",
2805
- ".pbb-helpLink{color:var(--dsw-alias-label-secondary);text-decoration:underline;text-underline-offset:2px}"
2809
+ ".pbb-helpLink{color:var(--dsw-alias-label-secondary);text-decoration:underline;text-underline-offset:2px}",
2810
+ ".pbb-versionFooter{display:flex;justify-content:center;align-items:center;gap:8px;font-size:11px;color:var(--dsw-alias-label-tertiary);padding:8px 0 4px;line-height:1.4}",
2811
+ ".pbb-versionFooter a{color:var(--dsw-alias-state-success-primary,#22a06b);text-decoration:none}",
2812
+ ".pbb-versionFooter a:hover{text-decoration:underline;text-underline-offset:2px}"
2806
2813
  ].join("\n");
2807
2814
  function injectCss() {
2808
2815
  if (typeof document === "undefined") return;
@@ -3313,7 +3320,7 @@ window.__ModuleLoader__.load({
3313
3320
  const deviceTable = report !== null && report.devices.length > 0 ? (0, react.createElement)("table", { className: "pbb-table" }, (0, react.createElement)("thead", null, (0, react.createElement)("tr", null, (0, react.createElement)("th", null, "设备"), (0, react.createElement)("th", null, "App 版本"), (0, react.createElement)("th", null, "离线推送"), (0, react.createElement)("th", null, "最近在线"))), (0, react.createElement)("tbody", null, report.devices.map((d) => (0, react.createElement)("tr", { key: d.deviceId }, (0, react.createElement)("td", null, d.deviceName), (0, react.createElement)("td", null, d.appVersion), (0, react.createElement)("td", null, d.apns ? "已注册(" + (d.apns.environment === "production" ? "生产" : "开发") + ")" : "未注册"), (0, react.createElement)("td", null, new Date(d.lastSeenTs).toLocaleString()))))) : (0, react.createElement)("p", { className: "pbb-empty" }, "还没有设备配对过。在 iPhone 上的 DeepPilot App 中扫码或填入本机地址与 Token 即可配对。");
3314
3321
  const switchTitle = "DeepPilot 连接";
3315
3322
  const switchDesc = switchReady ? enabled ? "已开启:接受手机连接。" : "已关闭:不接受手机连接。" : "正在读取配置…";
3316
- return (0, react.createElement)("div", { className: "pbb-section" }, (0, react.createElement)("div", { className: "pbb-row" }, (0, react.createElement)("h2", { className: "pbb-title" }, "DeepPilot"), (0, react.createElement)("button", {
3323
+ return (0, react.createElement)("div", { className: "pbb-section" }, (0, react.createElement)("div", { className: "pbb-row" }, (0, react.createElement)("h2", { className: "pbb-title" }, "DeepPilot"), (0, react.createElement)("div", { style: { flex: "1" } }), (0, react.createElement)("button", {
3317
3324
  className: "pbb-refresh",
3318
3325
  onClick: () => {
3319
3326
  if (typeof props.refresh === "function") props.refresh();
@@ -3385,7 +3392,11 @@ window.__ModuleLoader__.load({
3385
3392
  }, (step.ok ? "✓ " : "✗ ") + (step.id === "health" ? "服务可达" : "自动注册") + (step.latencyMs !== void 0 ? ` (${String(step.latencyMs)}ms)` : "") + " — " + step.message))), pushTestError ? (0, react.createElement)("p", { className: "pbb-diag pbb-diagBad" }, pushTestError) : null, pushTestResult === null ? (0, react.createElement)("p", { className: "pbb-diag" }, "向所有已注册设备强制发送一条真实推送(不受在线状态与分类开关影响)。") : (0, react.createElement)("div", { className: "pbb-helpBody" }, (0, react.createElement)("div", { className: "pbb-row" }, (0, react.createElement)("code", { className: "pbb-token " + (pushTestResult.overall === "sent" ? "pbb-ok" : pushTestResult.overall === "failed" ? "pbb-bad" : "") }, pushTestResult.overall === "sent" ? "已送达" : pushTestResult.overall === "failed" ? "发送失败" : pushTestResult.overall === "no-targets" ? "无已注册设备" : "推送未启用")), pushTestResult.message ? (0, react.createElement)("p", { className: "pbb-diag" }, pushTestResult.message) : null, pushTestResult.results.map((r, index) => (0, react.createElement)("p", {
3386
3393
  className: "pbb-diag",
3387
3394
  key: String(index)
3388
- }, (r.outcome === "sent" ? "✓ " : "✗ ") + r.name + " [" + r.environment + "] — " + r.outcome + (r.reason ? "(" + r.reason + ")" : "") + (r.tokenFingerprint ? " token:" + r.tokenFingerprint + "…" : "")))))), (0, react.createElement)("div", { className: "pbb-card" }, (0, react.createElement)("div", { className: "pbb-field" }, (0, react.createElement)("div", { className: "pbb-row" }, (0, react.createElement)("span", { className: "pbb-label" }, "已配对设备"), (0, react.createElement)("span", { className: "pbb-badge" }, String(report !== null ? report.devices.length : 0))), deviceTable)), diag.length > 0 ? (0, react.createElement)("p", { className: "pbb-diag" + (failed ? " pbb-diagBad" : "") }, "diag: " + diag.join(" | ")) : null);
3395
+ }, (r.outcome === "sent" ? "✓ " : "✗ ") + r.name + " [" + r.environment + "] — " + r.outcome + (r.reason ? "(" + r.reason + ")" : "") + (r.tokenFingerprint ? " token:" + r.tokenFingerprint + "…" : "")))))), (0, react.createElement)("div", { className: "pbb-card" }, (0, react.createElement)("div", { className: "pbb-field" }, (0, react.createElement)("div", { className: "pbb-row" }, (0, react.createElement)("span", { className: "pbb-label" }, "已配对设备"), (0, react.createElement)("span", { className: "pbb-badge" }, String(report !== null ? report.devices.length : 0))), deviceTable)), report === null ? null : (0, react.createElement)("div", { className: "pbb-versionFooter" }, (0, react.createElement)("span", null, "v" + report.pluginVersion), report.updateAvailable === true ? (0, react.createElement)("a", {
3396
+ href: typeof report.releaseUrl === "string" && /^https:\/\//.test(report.releaseUrl) ? report.releaseUrl : "https://github.com/Mars-Sea/dsh-deeppilot/releases",
3397
+ target: "_blank",
3398
+ rel: "noreferrer"
3399
+ }, "有新版本") : null), diag.length > 0 ? (0, react.createElement)("p", { className: "pbb-diag" + (failed ? " pbb-diagBad" : "") }, "diag: " + diag.join(" | ")) : null);
3389
3400
  }
3390
3401
  //#endregion
3391
3402
  exports.DeepPilotSettingsPage = DeepPilotSettingsPage;