Skip to content

Releases: www02310/dsh-go

启动画面 v3.6:启动窗置顶,主窗口压不住它

Choose a tag to compare

@www02310 www02310 released this 23 Oct 01:18

真正的「没跑完就进页面」

不是动画被销毁了 —— boot.log 里启动窗活到了 6.6 秒。问题是主窗口 show 时把自己抬到了启动窗上面(Windows 显示窗口会同时激活并把 z-order 提到前面)。于是 4.7 秒主窗口一出来,就把启动窗盖住了,看起来就是「动画没演完就进页面」;等你去关主窗口时,后面那个启动窗还在跑,又变成「还有一个启动界面在跑」。

同一个 z-order 问题,两个症状。

改法

  • 启动窗创建时 alwaysOnTop: true,随后 setAlwaysOnTop(true, "screen-saver") 提到最高层级。
  • 主窗口照常 show(它照常拿焦点),但压不到启动窗上面;
  • 启动窗在 6.4 秒(动画演完、logo 停留约 1.5 秒)后淡出销毁,页面这时才露出来;
  • 主窗口 close/hide、应用退出时仍然立即销毁启动窗。

实测

alwaysOnTop level=screen-saver
shown bounds={"x":80,"y":16,"width":1280,"height":821}
close requested at 4715ms, holding 1685ms more
closed after 6587ms

主窗口 4.7 秒就绪,启动窗仍然在最上层演到 6.6 秒才消失(截图在 5 秒后仍能看到完整的 DeepSeek Harness 与下划线)。

资产

  • DSH-splash-v2.zip —— 原生补丁版 v3.6
  • dsh-splash-1.1.0.tgz —— 插件版(覆盖层在窗口内,无 z-order 问题)

启动画面 v3.5:两版节奏对齐(原生补丁 ⇄ 插件覆盖层)

Choose a tag to compare

@www02310 www02310 released this 23 Oct 01:15

这一版只做一件事:让两种形态看起来一样

之前原生补丁版的 splash.html 用的是 1.25 秒前导 + 295ms 步进,插件版的覆盖层是 0.32 秒前导 + 285ms 步进 —— 同一套设计,节奏不同,观感有差异。

现在统一成插件那套(起笔更快):

WRITE_START = 320ms, DUR = 360ms, STAGGER = 285ms, T_LOGO = 4900ms

原生补丁的最短展示随之从 7.2 秒回到 6.4 秒(写字 4.67 秒结束、logo 4.9 秒淡入,停留约 1.5 秒),总时长与插件版基本一致(约 6.2–6.7 秒)。

两版的对应关系(同一套修复,各自成立)

问题 原生补丁版 插件版
窗口尺寸 跟随 DSH 主窗口 getBounds(),显示前对齐 覆盖层就在窗口里,天然对齐
动画被切 最短展示 6.4s,演完再走 自己走完 T_FADE 才淡出
关掉界面还有画面 主窗 close/hide、退出即强制销毁 覆盖层随窗口一起消失
点击跳过 不拦点击(窗口本身不响应) 默认吞掉点击,不穿透

实测

opened 1280x820 at (80,16)
shown bounds={"x":80,"y":16,"width":1280,"height":821}
painted in 292ms
closed after 6666ms

插件版同样验证过:plugin.log 里 detect native.active=false → inject overlay 28854B,接管正常。

资产

  • DSH-splash-v2.zip —— 原生补丁版 v3.5
  • dsh-splash-1.1.0.tgz —— 插件版

启动画面 v3.4:动画演完再走,关主界面立刻收

Choose a tag to compare

@www02310 www02310 released this 23 Oct 01:12

两个问题

  1. logo 只闪一下就没了 —— 写字 5.76 秒结束、logo 5.88 秒开始淡入(0.45 秒),而启动窗 6.4 秒就撤,等于 logo 刚出现就被关掉,看着就是「没跑完」。
  2. 关掉主界面还有一道启动画面在跑 —— 启动窗是独立窗口,之前只有两条收尾路径:主窗口 show、以及 60 秒兜底。你在主窗口还没 show(或刚 show 就被隐藏)的时候关掉界面,它就一直跑。

改法

  • 最短展示 7.2 秒:logo 淡入完成后还留约 0.9 秒停留。
  • 新增立即收尾:主窗口 close / hide、app.before-quit、window-all-closed → closeDshSplash(true),不等最短展示,直接淡出销毁。
  • 兜底从 60 秒缩到 25 秒;reportFatal 也改成立即收。
  • closeDshSplash(force) 新增 force 参数,区分「演完再走」与「必须马上走」。

实测

opened 1280x820 at (80,16)
shown bounds={"x":80,"y":16,"width":1280,"height":821}
painted in 193ms
close requested at 4079ms, holding 3121ms more
closed after 7405ms

主窗口 4.1 秒就绪,启动窗坚持到 7.4 秒(含 120ms 淡出),写字 + logo 全演完。

资产

  • DSH-splash-v2.zip —— 原生补丁版 v3.4
  • dsh-splash-1.1.0.tgz —— 插件版

启动画面 v3.3:修掉「两份画面叠着放」

Choose a tag to compare

@www02310 www02310 released this 23 Oct 01:08

症状

启动时看到同一段动画出现两份,一大一小/错开一点叠在一起。

原因

启动窗先按「上次记住的尺寸/兜底尺寸」创建并显示,随后为了贴合 DSH 主窗口又调用 setBounds 移动/缩放了一次。窗口已经可见的情况下改几何,DWM 会短暂保留上一帧的合成结果 —— 看到的就是旧位置那份 + 新位置那份。

改法

  • 几何对齐全部提前:ready-to-show 回调里先对 BrowserWindow.getAllWindows() 逐个 dshSplashMatch(),对齐完再 show()。
  • dshSplashMatch() 加了一道闸:窗口一旦 isVisible() 就直接返回,可见后不再改几何。
  • 收尾仍是最短展示 6.4 秒 + 120ms 淡出;boot.log 会打印 shown bounds=...,可直接核对显示时刻的几何。

实测

用洋红背景把启动窗画满整个窗口,截图量出实际覆盖范围 = 1280×821 @ (80,16),与 DSH 主窗口完全重合(屏幕 1440×900)。日志:

opened 1280x820 at (80,16)
shown bounds={"x":80,"y":16,"width":1280,"height":821}
painted in 187ms
closed after 7001ms

只有一次 opened / 一次 shown / 一次 closed,没有第二次显示。

资产

  • DSH-splash-v2.zip —— 原生补丁版 v3.3
  • dsh-splash-1.1.0.tgz —— 插件版

启动画面 v3.2:动画一定演完再进主界面

Choose a tag to compare

@www02310 www02310 released this 23 Oct 00:58

症状

主窗口约 3.8 秒就绪,而动画要 5.9 秒才写完 —— 启动窗按「窗口一显示就关」的规则在 3.85 秒被撤掉,所以看起来是「跑马灯没跑完就跳进主界面」。

改法

  • 启动窗最短展示 6.4 秒:主窗口再早就绪也等动画走完(写字 5.76 秒结束,logo 5.88 秒淡入,留 0.5 秒停留)。
  • 收尾改成 120ms 淡出后销毁,不再硬切。
  • 启动时序写进 %USERPROFILE%\.dsh\splash\boot.log(opened / painted / close requested / closed),以后排查直接看这个文件。

实测(本机 0.2.1-rc.2)

opened 1280x820 at (80,16)
painted in 163ms
close requested at 3925ms, holding 2475ms more
closed after 6615ms

主窗口 3.9 秒就绪,启动窗坚持到 6.6 秒(含淡出),动画完整。

资产

  • DSH-splash-v2.zip —— 原生补丁版 v3.2(解压双击 安装.cmd;已装旧版再跑一次覆盖)
  • dsh-splash-1.1.0.tgz —— 插件版(渲染页注入,不改宿主文件)

启动画面 v3.1:启动窗跟随 DSH 主窗口(不再铺满整屏)

Choose a tag to compare

@www02310 www02310 released this 23 Oct 00:53

改了什么

上一版把启动窗做成了「铺满整块屏幕工作区」,结果点图标后整个屏幕都被盖住。这一版改成跟 DSH 主窗口同大小、同位置:

  • 宿主窗口一创建出来就 setBounds 对齐;窗口移动/缩放时实时跟随。
  • 首次启动没有历史记录时,退回到「工作区尺寸但不超过 1280×860」,居中显示。
  • 收尾时把宿主窗口的位置尺寸写进 %USERPROFILE%\.dsh\splash\window.json,下次启动直接复用——不会先大后小地跳一下。
  • 收尾仍然是全局窗口 show 事件(够大的窗口一显示就关),不会压在已就绪的界面上。

实测(0.2.1-rc.2 / 1440×900):启动窗 = 1280×820 @ (80,16),与 DSH 主窗口完全重合;约 7 秒主窗口就绪时启动窗消失。

资产

  • DSH-splash-v2.zip —— 原生补丁版 v3.1(解压双击 安装.cmd;已装旧版直接再跑一次覆盖)
  • dsh-splash-1.1.0.tgz —— 插件版(渲染页注入,不改宿主文件)

启动画面 v3.0(全屏启动窗 + 可靠收尾)

Choose a tag to compare

@www02310 www02310 released this 22 Oct 14:58

这次修的是「小卡片压在已就绪界面上」

问题出在原生补丁版:启动窗是 480×360 的小卡片,而且只在两个 window.show() 调用点上收尾——宿主换一条路径显示主窗口时,启动窗就留在半空,看起来就是「一个小窗盖着已经能用的主界面」。

改法:

  • 启动窗铺满整块屏幕工作区(screen.getPrimaryDisplay().workAreaSize,取不到时退回 960×640),无边框、居中、不进任务栏——和插件版的全窗口观感一致。
  • 收尾改挂全局事件:app.on("browser-window-created") → 该窗口第一次 show 时关闭启动画面;宽度 < 420 或高度 < 300 的辅助窗不算,避免启动阶段被隐藏窗误触发。原来那两个 show() 插入点已删除,插入点从 4 处减到 2 处,跨版本更不容易对不上。
  • 保留 600ms 最短展示与 60 秒兜底。

实测(本机 0.2.1-rc.2):点图标 → 约 1 秒出现铺满屏的启动窗 → 跑马灯 → 一笔写出 → 主窗口就绪时启动窗消失,全程无叠加。

安装

解压后双击 安装.cmd(先完全退出 DSH)。已装旧版的,直接再跑一次安装即可覆盖。

资产

  • DSH-splash-v2.zip —— 原生补丁版 v3.0
  • dsh-splash-1.1.0.tgz —— 插件版(渲染页注入,不改宿主文件)

dsh-splash 1.1.0(插件版)· 点击不再跳过、起笔更快

Choose a tag to compare

@www02310 www02310 released this 22 Oct 14:51

1.1.0 修的两个问题

  • 加载时点界面不再跳进主页面:clickToSkip 默认改为 false,覆盖层会把点击吞掉,只有显式在配置里打开才允许点击跳过。
  • 起笔更快:动画不再等「React 挂载 + 420ms」也不等焦点事件,宿主把窗口显示出来的那一刻就起笔;前导空场从 1.15 秒压到 0.32 秒,整段从约 7.2 秒缩到约 6.2 秒。
  • 顺带:覆盖层按实测矩形铺满视口(宿主若在 body 上挂了 transform,position:fixed 会被限制在某个盒子里)。
  • 另附:原生补丁版(DSH-splash-v2.zip)。

如实说明:从点图标到出画面

插件是「渲染页注入」,注入表要等宿主 boot 完成才下发——本机实测 点击到起笔 5.5–9.9 秒(宿主插件多、boot 慢)。想要「点图标 1 秒内就出画面」,用原生补丁版:它在 Electron 主进程里开独立启动窗,不等宿主 boot。

两者可同时存在:插件检测到 app.asar 里已有补丁就自动让位,不会叠两层。

安装

dsh plugin --profile <profile> add https://github.com/www02310/dsh-go

dsh-splash v1.0.0(插件版)+ 原生补丁版 v2.0

Choose a tag to compare

@www02310 www02310 released this 22 Oct 11:31

dsh-splash 1.0.0 · 插件版

运行时注入的启动画面:亮白跑马灯点亮 → 一笔写出「DeepSeek Harness」→ 下划线扫过 → 鱼形 logo 淡入 → 进度条与版本号,约 7 秒后自行淡出。

  • 不改宿主任何文件(app.asar 原封不动)
  • 随 DSH 升级自动存活,卸载即干净
  • 覆盖层挂在 closed shadow DOM 里,不污染宿主样式
  • 桌面/热重载都能用;每个窗口只播一次,点击可跳过

安装

dsh plugin --profile <profile> add https://github.com/www02310/dsh-go
# 或者用本 Release 里的预构建包:
dsh plugin --profile <profile> add https://github.com/www02310/dsh-go/releases/download/v2.1/dsh-splash-1.0.0.tgz

桌面客户端的 desktop profile 由 Electron 应用独占,命令行不接受;按 README 的「手动挂载」两条命令即可。

配置:~/.dsh/splash/config.json,或面板 http://127.0.0.1:<port>/dsh-splash/panel。

资产

  • dsh-splash-1.0.0.tgz —— 插件版预构建包(npm 包格式,dsh.bundle 已声明)
  • DSH-splash-v2.zip —— 原生补丁版 v2.0(改 app.asar,覆盖进程启动空窗期;解压双击 安装.cmd)

两种形态二选一;插件检测到 app.asar 里已有原生补丁时会自动让位,不会叠两层。

DSH 启动画面 v2.0

Choose a tag to compare

@www02310 www02310 released this 22 Oct 03:05

DeepSeek Harness 启动画面 v2.0

深色底 → 亮白跑马灯(点阵逐点亮起 + 光束扫过)→ 亮白一笔写出 DeepSeek Harness(Ink Free 手写体逐字母落笔,带辉光笔尖,写完后填色)→ 下划线扫过 → 鱼形 logo 淡入 → 加载条 + 版本号。主窗口就绪后自动关闭,全程约 6 秒。

安装

  1. 完全退出 DSH(托盘右键 →「退出」,关窗口只是最小化)
  2. 解压 DSH-splash-v2.zip,双击 安装.cmd
  3. 重新启动 DeepSeek Harness

说明

  • 已在 DSH 0.2.1-rc.2(Electron 44.7.0) 实测通过;其他版本插入点对不上时会安全退出、不改任何文件
  • 自动探测 DSH 安装目录、复用 DSH 自带 node、自动备份原始 app.asar
  • DSH 自动升级会替换 app.asar,升级后需重新运行一次安装
  • 卸载:双击 卸载.cmd(从备份还原)

包内文件

安装.cmd / 卸载.cmd、apply-splash.mjs(补丁核心,带逐字节自验证)、splash/splash.html(画面本体,可自行修改)、logo.svg