Repository navigation
Releases: www02310/dsh-go
Release list
启动画面 v3.6:启动窗置顶,主窗口压不住它
真正的「没跑完就进页面」
不是动画被销毁了 —— 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.6dsh-splash-1.1.0.tgz—— 插件版(覆盖层在窗口内,无 z-order 问题)
启动画面 v3.5:两版节奏对齐(原生补丁 ⇄ 插件覆盖层)
这一版只做一件事:让两种形态看起来一样
之前原生补丁版的 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.5dsh-splash-1.1.0.tgz—— 插件版
启动画面 v3.4:动画演完再走,关主界面立刻收
两个问题
- logo 只闪一下就没了 —— 写字 5.76 秒结束、logo 5.88 秒开始淡入(0.45 秒),而启动窗 6.4 秒就撤,等于 logo 刚出现就被关掉,看着就是「没跑完」。
- 关掉主界面还有一道启动画面在跑 —— 启动窗是独立窗口,之前只有两条收尾路径:主窗口
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.4dsh-splash-1.1.0.tgz—— 插件版
启动画面 v3.3:修掉「两份画面叠着放」
症状
启动时看到同一段动画出现两份,一大一小/错开一点叠在一起。
原因
启动窗先按「上次记住的尺寸/兜底尺寸」创建并显示,随后为了贴合 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.3dsh-splash-1.1.0.tgz—— 插件版
启动画面 v3.2:动画一定演完再进主界面
症状
主窗口约 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 主窗口(不再铺满整屏)
改了什么
上一版把启动窗做成了「铺满整块屏幕工作区」,结果点图标后整个屏幕都被盖住。这一版改成跟 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(全屏启动窗 + 可靠收尾)
这次修的是「小卡片压在已就绪界面上」
问题出在原生补丁版:启动窗是 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.0dsh-splash-1.1.0.tgz—— 插件版(渲染页注入,不改宿主文件)
dsh-splash 1.1.0(插件版)· 点击不再跳过、起笔更快
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-godsh-splash v1.0.0(插件版)+ 原生补丁版 v2.0
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
DeepSeek Harness 启动画面 v2.0
深色底 → 亮白跑马灯(点阵逐点亮起 + 光束扫过)→ 亮白一笔写出 DeepSeek Harness(Ink Free 手写体逐字母落笔,带辉光笔尖,写完后填色)→ 下划线扫过 → 鱼形 logo 淡入 → 加载条 + 版本号。主窗口就绪后自动关闭,全程约 6 秒。
安装
- 完全退出 DSH(托盘右键 →「退出」,关窗口只是最小化)
- 解压
DSH-splash-v2.zip,双击安装.cmd - 重新启动 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