feat(console): 开机自启默认关闭,服务管理窗口加手动开关

- DEFAULTS.startup.openAtLogin 与随包 config.json 默认改为 false;
  applyOpenAtLogin 只有显式 true 才注册登录项(缺省/null/false 都不注册)
- config.js 新增 updateConfig():只写回文件里已有的键 + 目标键,不把 DEFAULTS 落盘
- 主进程 setOpenAtLogin():改内存 → 写回 config.json → setLoginItemSettings,
  任一失败都回滚,返回 {ok, openAtLogin};状态快照新增 openAtLogin / openAtLoginSupported
- 渲染层:服务端状态卡片新增「开机自启」滑块(纯 CSS,无依赖),
  切换即时生效并有本地意图守卫,避免被随后到达的陈旧快照冲掉
- 文档:console/README.md 与 docs/部署指南.md 同步

注意:旧包 config.json 里已显式写 true 的用户升级后仍会自启(不悄悄改既有行为),
在窗口里关一次即可;全新安装默认不注册。
This commit is contained in:
AskaEth committed 2026-09-10 00:06:59 +08:00
1 parent 7c59dba9b9
commit 1b78c38bb8
9 files changed
+204 -12

No files matched your search

+59
View File
@@ -349,6 +349,65 @@ h2 {
cursor: pointer;
}
/* 滑块式开关:勾选后轨道变强调色,不依赖任何第三方样式 */
.switch {
display: inline-flex;
align-items: center;
gap: 8px;
cursor: pointer;
}
.switch input {
appearance: none;
-webkit-appearance: none;
position: relative;
flex: none;
width: 34px;
height: 18px;
margin: 0;
border: 1px solid var(--border);
border-radius: 999px;
background: var(--panel-2);
cursor: pointer;
transition:
background 0.15s ease,
border-color 0.15s ease;
}
.switch input::after {
content: "";
position: absolute;
top: 2px;
left: 2px;
width: 12px;
height: 12px;
border-radius: 50%;
background: var(--muted);
transition:
transform 0.15s ease,
background 0.15s ease;
}
.switch input:checked {
border-color: var(--accent);
background: var(--accent);
}
.switch input:checked::after {
transform: translateX(16px);
background: #06202b;
}
.switch input:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 2px;
}
.switch input:disabled {
opacity: 0.45;
cursor: not-allowed;
}
.form-row {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));