Skip to content

Releases: UnknowCao/dsh-dock

v0.5.0 — 鲸湾:共存改造 + 语言即时跟随 + 鲸类行为谱命名

Choose a tag to compare

@UnknowCao UnknowCao released this 08 Sep 05:40

dsh-dock v0.5.0 — 鲸湾:共存改造 + 语言即时跟随 + 鲸类行为谱命名

基于 v0.4.0(含其全部能力:托盘常驻、一键重启、开机自启、设置页)。本版只动
侧栏菜单这一面:菜单改版为「鲸湾」(Whale Bay),三个动作全部取自鲸类行为谱;
底层重写为 React Portal + 普通邻居条目,与所有侧栏脚注插件稳定共存;界面语言
切换即时生效。托盘、重启、自启、host 路由与启动器 exe 全部不变(与 v0.4.0
同一二进制)。

新增 / 改动

能力 行为 入口
鲸湾菜单(v0.5 改版) 三个动作以鲸类行为谱命名:换气(重载界面,服务器不动)、洄游(重启服务器,去而必归)、归湾(完全退出;两步确认,4 秒不点自动解除,确认文案「确认归湾?」)。触发器为三道波浪图标;菜单只留隐喻,功能注解走悬停 tooltip 与 aria-label 侧栏底部「鲸湾」
与其他侧栏插件共存 注册为 sidebar.footer.action普通邻居条目,渲染在槽位挂载处——零 DOM 迁移、不隐藏原生触发器;脚注槽纵向堆叠,Cordis 面板徽标等全宽条目与鲸湾各行其道 自动
语言即时跟随(v0.5) locale 改为硬依赖(词典注册后才首渲染);切换界面语言即时重渲染(≤ v0.4 曾忽略语言切换) 跟随 DSH 语言设置
设置回归原生入口 菜单收窄为纯 dock 动作;设置回到侧栏底部原生「设置」,dsh-dock 设置页仍在系统设置弹窗(分区不变) 侧栏底部「设置」

行为变更(相对 v0.4.x)

  • 修复:其他插件占用侧栏脚注槽位时页面冻结。 v0.4 曾把按钮 DOM 物理搬进侧栏
    脚注容器并用内联样式隐藏原生设置触发器——其他插件(如 Cordis 面板徽标)再插入
    条目时,React 对该子树的视图与真实 DOM 不再一致,后续任何脚注重排都会令调和
    死锁、整页冻结。v0.5 弹层与退出遮罩全部改为 React Portal(react-dom 为内核
    提供模块),React 端到端持有生命周期;另加一条仅作用于槽位结构属性
    [data-slot] 的纵向堆叠 CSS,不改任何内联样式。
  • 菜单项命名:刷新 → 换气、重启服务器 → 洄游、完全退出 → 归湾
    (英文 Surface / Migrate / To the Bay);「确认完全退出?」→「确认归湾?」。
    图标取 Feather/Lucide 的 风 / 洄游环 / 月,与三道波浪触发器合成一幅海景。
  • 托盘常驻、一键重启、开机自启、设置页、/launcher/api/* 路由:行为全部不变

实现落点

  • client.js(本版唯一改动的代码文件):MenuCell 重写为纯邻居条目;新增
    BayIcon(waves 触发器)与风/洄游环/月项图标;MenuPortal /
    ExitOverlayPortalReactDOM.createPortal;ensureStyles 增脚注槽纵向
    堆叠;inject: ['slots', 'locale'](locale 硬依赖)。
  • 其余文件未动;assets/dsh-dock-launcher.exe 与 v0.4.0 完全同一二进制
    (sha256 23ccf2d8…,未重编)。

文档与素材

  • README.md / README.en.md 与 v0.5.0 代码逐项对齐:菜单描述、安装命令、
    能力表(新增共存/语言跟随两行)、v0.4 升级说明、与同类启动器对比表、文件树
    补全、~\.dsh\launcher\ 生成物清单补全(candidates.json /
    launcher-state.json / 每候选批处理)。

  • 截图全部真实界面重录:menu.png / menu-en.png / menu-exit-armed.png /
    settings-section.png / desktop-shortcut.png;CAPTURE.md §3/§3c 由人工
    截图改写为脚本一键重录。

    鲸湾菜单

  • 新增 scripts/capture-whale-menu.mjs:纯 Node(≥22)CDP 驱动 headless Edge 的
    截图脚本——--en 经真实设置弹窗切换语言拍英文图并强制还原,
    --settings 拍设置页;token 只在进程内流转,永不打印、永不落盘。

升级须知

dsh plugin --profile web add github:UnknowCao/dsh-dock#v0.5.0
  • 菜单项已改名,第一次可能要找一下:刷新 → 换气、重启服务器 → 洄游、完全退出 →
    归湾(悬停即出功能注解;触发器悬停可见三项全称)。
  • 桌面 exe 与启动套件在插件激活时自动刷新(内容比对;运行中的镜像走 rename-aside
    替换);托盘与开机自启设置原样保留。
  • 本版未动 exe,冷启动卡片、托盘、多 DSH 选择行为与 v0.4.0 完全一致。

v0.4.0 — 托盘常驻 + 开机自启

Choose a tag to compare

@UnknowCao UnknowCao released this 07 Sep 06:35

dsh-dock v0.4.0 鈥?鎵樼洏甯搁┗ + 寮€鏈鸿嚜鍚?

鍩轰簬 v0.3.7锛堝惈鍏跺叏閮ㄨ兘鍔涳細浼橀泤閫€鍑?appExit銆乻top.log銆佸鍊欓€夎嚜缁樺崱鐗囥€?
銆屽埛鏂般€嶆敼鍚嶃€?0 绉掕秴鏃躲€乥atch 鏂囦欢鍚嶆牎楠岋級銆傛柊鑳藉姏锛氶哺楸煎父椹荤郴缁熸墭鐩橈紝
鏈嶅姟鍣ㄧ姸鎬佷竴鐪煎彲瑙侊紙tooltip锛夛紝銆岄噸鍚湇鍔″櫒銆嶄竴閿畬鎴愶紝寮€鏈哄彲閫夊悗鍙伴鐑€?

鏂板鑳藉姏

鑳藉姏 琛屼负 鍏ュ彛
鎵樼洏甯搁┗锛堥粯璁ゅ紑锛屽彲鍏筹級 鍙屽嚮妗岄潰椴搁奔寮€绐楀悗锛岄哺楸艰惤鍏ユ墭鐩樺苟椹荤暀锛涘叧绐椾笉鍋滄湇锛屾墭鐩樺乏閿寮€ 鑷姩锛堝彲鍦ㄨ缃腑鍏抽棴閫€鍥炵煭鍛借涓猴級
鎵樼洏鐘舵€?tooltip 鎮仠鏄剧ず銆岃繍琛屼腑 / 鍚姩涓€?/ 鏈繍琛?/ 鍚姩澶辫触 路 绔彛涓庢棩蹇楄矾寰勩€嶏紝鍥炬爣鎭掍负榛戦哺楸? 鎮仠鎵樼洏椴搁奔
閲嶅惎鏈嶅姟鍣? 鍐?.stopping 鈫?鏉€鐩戝惉杩涚▼ 鈫?绛夌鍙f閫?鈫?閲嶆柊鎷夎捣 鈫?灏辩华鍚庤嚜鍔ㄥ紑绐楋紙姝ゅ墠闇€瀹屽叏閫€鍑哄啀鍙屽嚮锛寏15s 鎵嬪姩娴佺▼鏀舵垚涓€娆$偣鍑伙級 鎵樼洏鍙抽敭銆岄噸鍚湇鍔″櫒銆?
寮€鏈鸿嚜鍚紙榛樿鍏筹級 鍕鹃€夊啓 HKCU\...\Run锛坄dsh-dock= suite exe--boot`锛夛細鐧诲綍鍚庨潤榛橀┗鐣欐墭鐩?+ 鍚庡彴鎷夎捣鏈嶅姟鍣紝**涓嶅紑绐?*锛涚偣鎵樼洏绉掑紑锛堟湇鍔″櫒宸查鐑級 鎵樼洏鍙抽敭銆屸槕寮€鏈鸿嚜鍚€嶆垨璁剧疆闈㈡澘
dsh-dock 璁剧疆椤? 鎵€鏈夋彃浠惰缃綊涓€澶勶紝娉ㄥ唽涓虹郴缁熻缃脊绐楅噷鐨勬寮忓垎鍖猴紙settings.section锛屼笌鍏朵粬鎻掍欢璁剧疆椤靛悓鏋勶級锛氥€屸槕 鎵樼洏甯搁┗銆嶃€屸槕 寮€鏈鸿嚜鍚€嶏紱缁?/launcher/api/settings/{get,set} 璇诲啓锛堝洖鐜俊浠诲洿鏍忎笌 stop 璺敱涓€鑷达級 璁剧疆寮圭獥 鈫掋€孌SH Dock锛堝惎鍔ㄥ櫒锛夈€?
瀹屽叏閫€鍑猴紙鎵樼洏渚э級 *鍗曞嚮鐩存墽琛? 鈫?鍋滄湇鍔″櫒 鈫?鍏抽棴鎵€鏈?dsh-dock 绐楀彛锛堟寜 profile 韬唤锛?鈫?娓呯悊 .stopping 鈫?鎵樼洏娑堝け 鎵樼洏鍙抽敭銆屽畬鍏ㄩ€€鍑恒€?

琛屼负鍙樻洿锛堢浉瀵?v0.3.x锛?

  • **鍙屽嚮妗岄潰椴搁奔鍚庤繘绋嬩笉鍐嶉€€鍑?*锛堥粯璁わ級锛氬紑绐楀悗杞叆鎵樼洏甯搁┗銆傛棫銆屽紑绐楀嵆閫€銆?
    琛屼负鍙湪璁剧疆椤?鎵樼洏鑿滃崟鍏抽棴銆屾墭鐩樺父椹汇€嶆仮澶嶃€?
  • **README銆屾棤甯搁┗杩涚▼銆嶅0鏄庝笉鍐嶆垚绔?*锛氭墭鐩樻ā寮忓紩鍏ヤ竴涓父椹荤殑鍚姩鍣ㄨ繘绋?
    锛堜粛鏄崟 exe銆佸彧涓庢湰鏈哄洖鐜€氫俊銆佷笉璇讳笉浼犲嚟鎹級銆傝繖鏄敤鎴蜂富鍔ㄦ崲鍙栫殑鐘舵€?
    鍏ュ彛锛屼笖榛樿鍙叧銆?
  • 鎵樼洏宸插湪椹荤暀鏃跺啀娆″弻鍑绘闈㈤哺楸硷細鏂拌繘绋嬭蛋蹇矾寰勫紑绐楀悗鍗抽€€鍑猴紝鎵樼洏涓嶅姩锛堥浂 IPC锛夈€?
  • 鎵樼洏鍗曞疄渚嬬‖闂革紙鍛藉悕浜掓枼閿侊級锛氫换浣曟椂鍒绘墭鐩樿嚦澶氫竴涓浘鏍囥€傛棫妫€鏌ユ寜杩涚▼鍚嶆瘮瀵癸紝
    鑰?suite 鍓湰锛坄dsh-dock-launcher.exe锛変笌妗岄潰鍓湰锛坄DSH Harness.exe锛夊悕瀛椾笉鍚岋紝
    浼氳鍒ゃ€屾棤鎵樼洏銆嶅鑷寸浜屼釜鍥炬爣锛涚幇鏀逛负 Local\dsh-dock-tray-<port> 鍛藉悕浜掓枼閿佲€斺€?
    鍚嶅瓧鏃犲叧銆佸ぉ鐒跺厤鐤苟鍙戠珵鎬併€佹寔鏈夎€呭穿婧冩椂鑷姩閲婃斁銆?
  • 鎵樼洏鍕鹃€夌姸鎬佸脊鍑哄嵆鍒锋柊锛氬紑鏈鸿嚜鍚嬀閫夋敼涓烘瘡娆″彸閿脊鍑烘椂閲嶈娉ㄥ唽琛紝
    淇銆岃缃〉鏀逛簡鑷惎銆佹墭鐩樿彍鍗曚粛鏄剧ず鏃х姸鎬併€嶇殑闄堟棫鍕鹃€夈€?
  • 瀹屽叏閫€鍑烘寜韬唤鍏崇獥锛堜笉闈犺璐︼級锛氭敼涓烘灇涓?msedge 杩涚▼鍛戒护琛岋紝鍑″甫涓撳睘
    --user-data-dir=edge-app-profile 鐨勪竴寰嬩紭闆呭叧闂?瓒呮椂寮烘潃锛屼慨澶嶃€屾墭鐩樺疄渚?
    鏇存崲鍚庢棫鎵樼洏寮€鐨勭獥鍙f垚瀛ゅ効涓嶈鍏抽棴銆嶃€傛墭鐩樸€屽畬鍏ㄩ€€鍑恒€嶄负**鍗曞嚮鐩存墽琛?*
    锛堝彸閿彍鍗曟湰韬嵆鏄槑纭剰鍥撅紱渚ф爮鑿滃崟淇濈暀椤靛唴涓ゆ闃茶瑙︼級銆?
  • 閲嶅惎鏈嶅姟鍣ㄥ弻鍏ュ彛 + 鍏堝叧鏃х獥鍐嶅紑鏂扮獥锛氭墭鐩樺彸閿笌渚ф爮銆屾洿澶氥€嶈彍鍗曢兘鍙Е鍙戯紱
    渚ф爮璧?/launcher/api/restart 鍐欏叆 .restart.request锛岄┗鐣欐墭鐩樻娴嬪悗鎵ц瀹屾暣
    閲嶅惎搴忓垪锛堝涓绘棤娉曢噸鍚嚜宸辩殑姝讳骸锛屾墭鐩樻槸鎵ц鑰咃紝瀹炴祴鎵樼洏鍦ㄩ噸鍚腑瀛樻椿锛夈€?
    閲嶅惎鍏堟寜 profile 韬唤鍏抽棴鎵€鏈夋棫 dock 绐楀彛锛堝畠浠殑 token 宸查殢鏃ц繘绋嬩綔搴燂級锛?
    鏈嶅姟鍣ㄥ氨缁悗鍙嚜鍔ㄦ墦寮€涓€涓叏鏂扮獥鍙o紙鐢ㄦ埛瀹炴祴纭锛夈€?
  • 渚ф爮銆屽畬鍏ㄩ€€鍑恒€嶅悓姝ユ竻鎵樼洏锛氬湪杩斿洖鍝嶅簲鍓嶅悓姝ユ潃鎵樼洏锛堣繘绋嬪悕鏍¢獙闃?PID 澶嶇敤锛夛紝
    鎺掑湪瀹夸富鑷韩閫€鍑轰箣鍚庣殑娓呯悊姝ラ瀹炴祴浼氶殢瀹夸富姝讳骸涓㈠け銆?
  • 鐣岄潰璇█璺熼殢 DSH锛氭彃浠惰嚜韬枃妗堬紙渚ф爮鑿滃崟銆佽缃〉銆侀€€鍑洪伄缃╋級鏀逛负缁忓涓?
    locale 鏈嶅姟娉ㄥ唽 dsh-dock 涓?鑻卞瓧鍏革紝鍒囨崲璇█鍗虫椂閲嶆覆鏌擄紱渚ф爮鑿滃崟椤瑰畾鍚嶃€屽埛鏂般€?
    瀹氬悕涓恒€屽埛鏂般€嶏紙浠呴噸杞介〉闈紝鏈嶅姟鍣ㄤ笉鍔級銆傚師鐢熸墭鐩?exe 鏆傛湭鏈湴鍖栵紙Windows 鍘熺敓 UI锛夈€?

瀹炵幇钀界偣

  • src/DshDockLauncher.cs锛歚DshTray 绫伙紙NotifyIcon 鐢熷懡鍛ㄦ湡銆佸悗鍙?poller 鎺㈡祴 鐘舵€併€乣--boot 鍐峰惎銆侀噸鍚簭鍒椼€佹墭鐩樹晶瀹屽叏閫€鍑恒€乼rayPid 钀界洏 launcher.json銆?
    HKCU Run 璇诲啓锛夛紱LauncherConfig 澧?SETTINGS/MANIFEST 閿紙鏃?ini 鑷姩鎸?
    鐩綍鎺ㄥ锛夈€?
  • index.js锛歚/launcher/api/settings/{get,set}璺敱锛坰ettings.json + 娉ㄥ唽琛級銆? stop 璺敱杩藉姞鏉€ trayPid銆乸ersistManifest 鏀逛负鍚堝苟鍐欙紙淇濈暀 trayPid锛夈€乮ni 澧?SETTINGS/MANIFEST` 閿€?
  • client.js锛歚DockSettingsPage 娉ㄥ唽杩?settings.section`锛堣缃脊绐楀唴鐨勬寮忓垎鍖猴紝
    鎵樼洏甯搁┗/寮€鏈鸿嚜鍚嬀閫夛級锛屼晶鏍忚彍鍗曘€岃缃€嶈浆鍙戝埌绯荤粺璁剧疆寮圭獥銆?

鍗囩骇椤荤煡

  • 妗岄潰 exe 涓?~\.dsh\launcher\dsh-dock-launcher.exe 浼氬湪鎻掍欢婵€娲绘椂鑷姩鍒锋柊
    锛堝唴瀹规瘮瀵癸紱杩愯涓殑闀滃儚璧?rename-aside 鏇挎崲锛夈€?
  • 鍗囩骇鍚庨娆°€屽畬鍏ㄩ€€鍑恒€嶅啀鍙屽嚮锛屽嵆鍙瀵熷埌鎵樼洏椴搁奔椹荤暀銆?
  • 寮€鏈鸿嚜鍚粯璁?*鍏?*锛氶渶瑕佺殑浜烘墭鐩樺彸閿嬀閫夋垨鍦ㄨ缃潰鏉垮嬀閫夈€?

dsh-dock v0.3.7

Choose a tag to compare

@UnknowCao UnknowCao released this 04 Sep 09:28

dsh-dock v0.3.7

DeepSeek Harness 一键桌面启动器 + 侧栏「更多」菜单。本发布为 v0.3.3 后的首个 GitHub Release,汇总 v0.3.4–v0.3.7 的主要变更。

本次(v0.3.7)

  • 多 DSH 自动选择超时调长:冷启动卡片候选框从 5 秒自动启动改为 10 秒,给浏览多个 DSH 留足时间(README/注释同步)。

新增 / 改进(v0.3.4 – v0.3.6)

  • 「完全退出」改为优雅退出/launcher/api/stopctx.appExit(整棵 Cordis 树 dispose 后自然退出,~1s),不再用 Stop-Process -Force 硬杀;旧宿主(无 ctx.appExit)自动回退硬杀。
  • 持久化退出诊断:新增只追加的 ~/.dsh/launcher/stop.log,记录每次退出的分支(优雅 / appExit(0) 已请求 / watchdog 强退 / 硬杀兜底),不再被冷启动截断。
  • 多 DSH 冷启动卡片重绘:用与卡片同风格的自绘候选列表替换原生 ComboBox——每行「版本 · 类型 + 安装目录末尾」,选中描边 + 对勾,悬停高亮,↑↓/Enter/Space/Esc + 鼠标滚轮 + 细滚动条,列表右对齐倒计时,溢出/过期脚注;卡片选择态 400×288,选定后回缩到单候选尺寸;任意数量候选可滚动
  • 菜单改名:「重启」→「重启/刷新」(它只重载界面、不重启服务)。

修复

  • batch 文件名校验:candidates.json 中 batch 必须是裸文件名,含绝对路径/分隔符即拒绝并回退默认(防篡改触发任意 .cmd)。
  • 滚动事件标记为已处理(HandledMouseEventArgs);卡片 GDI+ 资源随 Dispose 释放;清理一次性调试日志。

注意

  • Windows 10/11 + DSH web profile + Edge。插件激活自动探测参数并落盘桌面启动器。
  • 卸载不会自动删除文件;~/.dsh/launcher/(含两个 Edge profile 与日志)与桌面 DSH Harness.exe 需手动清理。

文档(README 重构)

  • README 中/英已按 v0.3.7 功能重写(优雅退出、stop.log、多候选自绘卡片、重启/刷新、10s 超时、batch 校验)。
  • 多候选冷启动卡片实拍(新):

多候选冷启动卡片

v0.3.2 — upgrade deadlock fix (desktop exe now really refreshes)

Choose a tag to compare

@UnknowCao UnknowCao released this 04 Sep 03:16

Fixes: the desktop whale exe never actually upgraded — so fixes you installed never reached the file you double-click.

Why this happened

v0.3.1 shipped the cold-card stutter fix, but upgraders kept seeing the stutter. Diagnosis: the desktop DSH Harness.exe was still the old binary. The canonical upgrade flow deadlocks itself:

  1. menu Full Exit → double-click the whale — the OLD desktop exe starts running (cold card),
  2. the server boots, the new plugin activates and tries to refresh the desktop exe,
  3. Windows locks the image of a running process against writes → EBUSY, swallowed by the auto-install catch.

So through the normal flow the desktop copy never upgraded — only the copy under ~\.dsh\launcher\ did.

The fix

copyReplacingLocked(): when the destination is locked, rename the running image aside (DSH Harness.exe.old — renaming a running image IS allowed on Windows; the classic updater trick used by VS Code/Chrome installers) and write the new binary at the original path. Swap-aside copies are cleaned up on later installs once their process has exited.

Verified live with a running image lock: direct copy → EBUSY (bug reproduced), rename running exe → OK, new binary lands at the original path.

Note for one-time transitions up from older versions: the very first whale launch after upgrading may still run the previous binary (it was already in memory); from the next double-click on, you are on the new one.

Upgrade

dsh plugin --profile web add github:UnknowCao/dsh-dock#v0.3.2

Restart dsh web once. Sessions persist as always.

Full changelog: compare v0.3.1...v0.3.2.

v0.3.1 — cold-card stutter fix

Choose a tag to compare

@UnknowCao UnknowCao released this 04 Sep 02:55

Fixes: cold-start card stutter on every machine, high-end hardware included.

Why it stuttered

The breathing whale card is painted by the UI message pump — but the polling ran ON that same thread, synchronously:

  • The TCP port probe blocks up to 700 ms on a dead port. That is a kernel connect timeout, not CPU work, which is exactly why faster machines stuttered too.
  • The health-gate HTTP call (up to 1.5 s) and the log scrape also ran on UI-timer ticks.

With the probe throttled to every 400 ms and the port dead for the whole 10–13 s boot, the card spent more than half of the cold start frozen: breathe 0.4 s → freeze 0.7 s → repeat.

The fix

The whole poll state machine (probe → spawn → health gate → open) now runs on a background thread started when the card appears; control updates (status text, window open, failure panel) marshal back via BeginInvoke. Timeouts, throttles, and race protections are unchanged — only the thread moved. The UI thread now does nothing but paint.

Verified: health-gate regression still PASS (a stale 401 token never opens a window), and a burst re-capture of the card shows the breathing brightness modulating normally across frames.

Upgrade

dsh plugin --profile web add github:UnknowCao/dsh-dock#v0.3.1

Then restart dsh web — the desktop whale exe refreshes automatically on plugin activation. Sessions persist as always.

Full changelog: compare v0.3.0...v0.3.1.

v0.3.0 — first public release

Choose a tag to compare

@UnknowCao UnknowCao released this 04 Sep 02:39

TL;DR: One-click desktop launcher for DSH Harness — double-click the whale to open, exit from the menu.

Why this plugin

The daily ritual — open a terminal, type npx dsh web, copy the token URL, paste it into a browser, press F11, then dig through the process list to kill the server — is not hard per step; it hurts because every step needs your hands. dsh-dock collapses the two high-frequency actions (open / exit) into a desktop whale icon plus one sidebar More menu (⚙ Settings · ⟳ Reload · ⏻ Full Exit with two-step confirm).

Why this architecture (v2 single exe)

  • v1 chained .lnk → wscript → VBS → HTA — the same logic implemented three times, a historical bug nursery. Retired.
  • v0.3.0 compiles everything into one native exe (src/DshDockLauncher.cs): quick-path silent window, cold-start breathing-whale card, HTTP-200 token health gate (a stale token never opens a window), exit/start race absorption, single-instance lock.
  • The exe is prebuilt and committed — installs need no compiler, no lifecycle scripts, no approvals.
  • Verified by a fresh install from the public repo on a clean DSH environment.

Install

dsh plugin --profile web add github:UnknowCao/dsh-dock#v0.3.0

Windows 10/11 + the DSH web profile + Edge. After restart, a black whale appears on the desktop — double-click to open, exit from the menu. Sessions persist across exits.