fix: 补 .gitattributes(CRLF for .bat) + README 端口 19540 + 提交 console 锁文件

This commit is contained in:
AskaEth committed 2026-09-09 20:57:58 +08:00
1 parent c121111f51
commit b80c64a115
39 files changed
+4217 -345

No files matched your search

+20 -12
View File
@@ -7,8 +7,7 @@ const {
Menu,
Tray,
ipcMain,
powerSaveBlocker,
shell
powerSaveBlocker
} = require('electron')
const { loadConfig, resolveExecutable } = require('./config')
@@ -242,6 +241,18 @@ function main() {
tray.on('double-click', () => showAdmin())
}
// 开机自启:只对打包后的 Windows/macOS 程序有意义,开发态注册的是 electron 可执行文件
function applyOpenAtLogin() {
if (!app.isPackaged || (process.platform !== 'win32' && process.platform !== 'darwin')) return
const wanted = !cfg.values.startup || cfg.values.startup.openAtLogin !== false
try {
app.setLoginItemSettings({ openAtLogin: wanted })
log.push('console', wanted ? '开机自启已启用' : '开机自启已关闭')
} catch (err) {
log.push('console', `设置开机自启失败:${err.message}`)
}
}
function registerIpc() {
ipcMain.handle('service:get-status', () => statusSnapshot())
ipcMain.handle('service:start', () => {
@@ -265,14 +276,6 @@ function main() {
if (displays && displaysEnabled) displays.relayout()
return statusSnapshot()
})
ipcMain.handle('app:open-external', (_event, url) => {
// 只放行 http/https,避免管理窗口被注入的链接拉去执行本地协议
if (typeof url === 'string' && /^https?:\/\//i.test(url)) {
shell.openExternal(url)
return true
}
return false
})
ipcMain.handle('app:open-admin-window', () => {
showAdmin()
return true
@@ -308,8 +311,6 @@ function main() {
})
}
app.on('second-instance', () => showAdmin())
app.whenReady().then(() => {
cfg = loadConfig(resolveConfigPath())
log = new LogBus({
@@ -367,6 +368,13 @@ function main() {
createTray()
registerIpc()
// 单实例锁在 whenReady 之前就生效,但回调要用 cfg;注册放在这里,
// 避免第二个实例在配置加载完成前触发 showAdmin() 读到 null
app.on('second-instance', () => showAdmin())
// 现场无人值守,Console 需要随系统启动(doc 10 §4.3)
applyOpenAtLogin()
// 防熄屏要在服务端起来之前就生效,否则开机后第一段时间屏幕仍会休眠
powerBlockerId = powerSaveBlocker.start('prevent-display-sleep')
log.push('console', `防熄屏已启用(powerSaveBlocker=${powerBlockerId},生效=${powerSaveBlocker.isStarted(powerBlockerId)})`)