Repository navigation
Releases: CKNB888/NightDisplay
Release list
NightDisplay 4.0.1
NightDisplay 4.0.1
修正版。功能、模式、界面和 4.0.0 一致:默认走虚拟屏,本机真黑,远程画面不冻、不闪。
这一版修掉了两处用户看得到的错误信息、诊断包里的一处脱敏错误,以及深度 QA 的等待逻辑。
下载
| 文件 | 适合谁 |
|---|---|
NightDisplay-4.0.1-Setup.exe |
大多数人。装到当前用户目录,不需要管理员;驱动安装由程序里的向导负责,全程只弹一次 UAC |
NightDisplay-4.0.1-portable.zip |
想放 U 盘、不装东西的人。解压即用,resources\vdd 里带着驱动 |
SHA256SUMS.txt |
校验用 |
系统要求:Windows 10 2004(build 19041)及以上,x64。需要系统自带的 WebView2
(Win11 全都有;Win10 若没有,装一次微软的 Evergreen Runtime)。
这版修了什么
1. 诊断包不再把目录名、产品名当账号名改写
4.0.0 把"数据目录的最后一段"当账号名全局替换。Windows 上默认数据目录是
%LOCALAPPDATA%\NightDisplay,最后一段是产品名,结果诊断包里每一处 NightDisplay
都被抹成 <user>——NightDisplay.exe 变成 <user>.exe,真正的账号名反而没动。
现在只在数据目录本身就是一个用户主目录(上一段是 Users / home)时,才把最后一段当账号名
单独替换;路径里的账号名仍由 \Users\、/home/ 标记的扫描处理。日志是 JSONL,路径里的反斜杠
被转义成 \\,4.0.0 的匹配没处理这种写法,C:\\Users\\<账号>\\... 这一整类行原样留在包里;
现在转义写法同样会被抹掉。
2. 黑幕模式下,夜间报告按真正执行的模式上报
overlay 生效时,报告曾经仍写「虚拟屏生效」:effective 只从配置里的 cfg.mode 推导,
而命令行 --mode overlay 和 auto → 黑幕 的自动降级都会覆盖这个值,于是 virtual_screen
是 None,成功判定永远为假,界面只显示「未知原因」——黑幕其实已经正常显示并排除了采集。
夜间修复 ensure_night 走的是同一条路。现在引擎负责把报告标注成这次真正执行的模式。
顺带修掉 overlay 兜底路径上的两处误报:实体屏仍未接桌面 在 overlay 下不成立也不该成立
(overlay 靠窗口遮黑、完全不碰拓扑);步骤没有失败 不再把 gamma/背光算进去,
这两层是产品自己定义的可选增强,改成关键步骤继续卡着、增强层单独如实报告。
3. 深度测试补齐"重启后仍在时段内自动入夜"的等待
上一轮唯一失败的检查是这一项,读到 state=day。不是没入夜:--action reconcile 在
"计划已启用但常驻进程不在"时只负责把常驻进程拉起来就返回,真正按时间入夜由常驻进程
异步完成,测试拿到返回值立刻读配置,必然读到还没改的状态。现在等状态落定(最多 45 秒),
并把等待时长写进报告,以后能一眼分清"真的没入夜"还是"等得不够久"。
4. CI 从 Cargo.toml 读版本号
打包、深测、发布三个作业不再写死版本号,统一从 [workspace.package] version 读进
APP_VERSION,下次升版只改一行。标签与代码版本的一致性检查保留:v4.0.1 必须等于
APP_VERSION,否则打包作业直接失败。
从 4.0.0 升级
直接装新的就行,数据目录、配置和计划都不变(%LOCALAPPDATA%\NightDisplay),
不用重跑向导。
已知限制(请先读完再判断适不适合你)
- 不是所有显卡组合都能做到零闪。下面这些情况仍然可能有一帧黑:
驱动在SDC_APPLY内部重初始化输出(部分老 Intel 核显 + HDMI 外接)、
实体屏和虚拟屏刷新率无法同时满足、多显卡跨适配器路径集被驱动拒绝、
系统里已有第三方虚拟屏且命中匹配规则。程序保证的是"一次提交、不产生零 target、
校验不过就什么都不改",不保证每一台机器的驱动都配合。 - DDC/CI 背光在一体机和部分笔记本内屏上不可用。这类机器夜间是纯黑但背光仍亮,
自检会点名是哪块屏。 - 采集排除的黑幕只在 Win10 2004+ 可用;系统接受了请求不等于每种远程采集方式都兼容。
- 断电、强制关机时看门狗也活不了,下次启动才恢复。
- CI 没有在真实一体机上验证过,也没法在 CI 里验证远程会话。没跑过的机型和远程软件,
不标注为"已保证兼容"。
反馈
有问题请附上「设置 → 导出诊断包」的 zip(已脱敏)和远程软件名称、显卡型号。
个人使用免费;接受赞助、商业授权与私人定制 —— 微信 1837620622(添加请备注来意)。
NightDisplay 4.0.0 — Rust 重写
NightDisplay 4.0.0
Rust 重写;只保留 Windows。核心变化:默认走虚拟屏,本机真黑,远程画面不冻、不闪。
下载
| 文件 | 适合谁 |
|---|---|
NightDisplay-4.0.0-Setup.exe |
大多数人。装到当前用户目录,不需要管理员;驱动安装由程序里的向导负责,全程只弹一次 UAC |
NightDisplay-4.0.0-portable.zip |
想放 U 盘、不装东西的人。解压即用,resources\vdd 里带着驱动 |
SHA256SUMS.txt |
校验用 |
系统要求:Windows 10 2004(build 19041)及以上,x64。需要系统自带的 WebView2
(Win11 全都有;Win10 若没有,装一次微软的 Evergreen Runtime)。
这版做了什么
1. 黑屏方式变了:虚拟屏优先,不再靠"盖一层窗口"
- 默认模式
virtual_screen:把桌面交给随包的虚拟显示驱动,实体屏保留在显示配置里
但不接桌面。本机看到的是真黑(显示器没有输出),远程软件抓着的那块采集表面
一直活着,所以不冻、不闪。 - 整个切换是一次
SetDisplayConfig:先SDC_VALIDATE校验,不过就什么都不改;
过了再一次SDC_APPLY。切换后活动 target 数永远 ≥ 1。 - 虚拟屏在常驻进程启动时就"预热"好(克隆进桌面但不接管),入夜只改一个标志位。
- 驱动不行时自动降级到黑幕模式(
overlay:采集排除的黑幕 + gamma + 背光),
并在界面写清楚为什么降级。 screen_off保留为手动选项,界面标着"动鼠标会亮"。
2. 首次运行向导:一次 UAC,六个步骤,每步都给真实结果
授权并准备后台服务 → 虚拟显示驱动(必需,装完必须能在显示配置里看到虚拟屏)→
开机自启与看门狗 → 本地防触控与锁屏 → 15 秒真实自检 → 勾选「已确认远程能连」。
任何一步失败都给出确切的手动命令或链接;设置里的「重新授权 / 修复」只重跑失败的那几步。
3. 三条自启路径 + 看门狗 + 崩溃恢复
HKCU Run、登录计划任务、SYSTEM 权限的开机计划任务(延迟 30 秒,没人登录也能进夜间)
同时登记,单实例锁让它们互相幂等。用户自己关掉自启后,程序不会再把它加回来。
关机/注销前先还原 gamma、背光和拓扑;进程被强杀时独立看门狗在几秒内接手。
4. 全新界面(Tauri 2 + WebView2)
深色侧边栏(首页 / 定时计划 / 显示模式 / 运行日志 / 设置 / 关于),首页有倒计时环,
自定义开关,托盘菜单(立即黑屏 / 恢复 / 暂停 / 打开设置 / 退出),关窗进托盘。
窗口大小位置记住,100%–200% 缩放都清晰。界面永远不以管理员身份运行。
5. 诊断
- 「运行日志 → 夜间会话」:上一次夜间每一步(预热、拓扑、模式匹配、落定、活动路径、
gamma、背光、防触控、锁屏、恢复)的耗时和真实结果,失败和跳过分开显示; - 「导出诊断包」:一个 zip,含按组件分开的日志、脱敏后的配置、自检 JSON、
显示器/DDC 报告、Windows 与显卡驱动版本、最近 5 次会话摘要。
不含远程账号、不含桌面内容。 --action selfcheck打印 JSON + 中文摘要;--debug提高日志级别。
从 3.x 升级
直接装新的就行,数据目录不变(%LOCALAPPDATA%\NightDisplay),计划和开关都会读进来。
第一次打开会让你走一遍向导(3.x 的配置里没有新版的授权记录)。
已知限制(请先读完再判断适不适合你)
- 不是所有显卡组合都能做到零闪。下面这些情况仍然可能有一帧黑:
驱动在SDC_APPLY内部重初始化输出(部分老 Intel 核显 + HDMI 外接)、
实体屏和虚拟屏刷新率无法同时满足、多显卡跨适配器路径集被驱动拒绝、
系统里已有第三方虚拟屏且命中匹配规则。程序保证的是"一次提交、不产生零 target、
校验不过就什么都不改",不保证每一台机器的驱动都配合。 - DDC/CI 背光在一体机和部分笔记本内屏上不可用。这类机器夜间是纯黑但背光仍亮,
自检会点名是哪块屏。 - 采集排除的黑幕只在 Win10 2004+ 可用;系统接受了请求不等于每种远程采集方式都兼容。
- 断电、强制关机时看门狗也活不了,下次启动才恢复。
- CI 没有在真实一体机上验证过,也没法在 CI 里验证远程会话。没跑过的机型和远程软件,
不标注为"已保证兼容"。
反馈
有问题请附上「设置 → 导出诊断包」的 zip(已脱敏)和远程软件名称、显卡型号。
v3.0.12
Retry saving state when Windows denies the replace A 15-second test could restore the screen and then fail to write config.json, so the check kept waiting for daytime. The save now retries, and on Windows it writes the file in place if the rename stays blocked.
v3.0.11
Stay black across login and keep the daily hours editable Closing the window hides it in the tray. A login inside the scheduled period stays black. The start and end hours can be changed while the daily plan is on.
v3.0.10
时间改成小时和分钟下拉,不用手填。测试 15 秒点一下就黑,到点自己亮回来。 Windows 安装向导为中文,装完桌面有图标,开机登录后自己运行。 实体屏被顶亮时先盖上纯黑窗口并留着,远程仍看虚拟屏。 程序开着时卸载,也会关掉开机登录自启。
v3.0.9
NightDisplay 3.0.9 - 计划夜间虚拟屏或关屏临时失败时,不再关掉每日计划,也不主动把屏幕亮回去。 - 防窥黑幕窗口被拆掉后会重新盖上,夜间不亮出设置窗口。 - Mac 基础关屏被键鼠点亮后会再次关屏。
v3.0.8
NightDisplay 3.0.8 - 读取 HKCU Run 里的 NightDisplay 命令失败时,不再跳过开机自启。 - 读不到就当作没有这项。偏好是开,就按当前程序写上。
v3.0.7
NightDisplay 3.0.7 - 开机自启仍只写 HKCU Run 的 NightDisplay 这一项。 - 程序路径变了,再次打开会改写 Run 里的旧命令。 - 卸载计划与自启后,自启偏好改为关,下次打开不会把 Run 值写回去。 - 注册表探测值 NightDisplayEnvTest 写完即删,失败时再删一次。
v3.0.6
NightDisplay 3.0.6 - 黑幕只替换文档列出的 13 个系统光标。中途失败立刻重载方案,失败的空白光标不二次销毁。 - cursor-hidden.json 记下跨进程标记。强杀、应急、测试恢复和中止测试都能把光标装回来。 - 环境诊断保留驱动安装时间,七天冷却不会被刷新清掉。 - 已有虚拟屏时仍按偏好写开机自启,写完回读,失败不挡住打开。 - 损坏的显示备份改走系统拓扑;Linux 改走 xrandr --auto。 - 同一套硬件上,自动模式按测通的防窥黑幕或基础关屏启用计划。能力变了必须重测。 - 仅虚拟屏或基础关屏被强杀后,下次启动先恢复实体屏。恢复失败不假装已经回到白天。 - 优先空闲的内置 VDD by MTT,不抢已经活动的 UU 虚拟屏。 - PowerShell 计划任务失败时,先删同名任务,再由 schtasks /F 覆盖。
v3.0.5
Let each platform package without waiting on the others Windows tests, the installer, and Windows QA no longer share a matrix with macOS. A missing Apple Silicon runner cannot skip the Windows package.