反馈改右上角轻提示;侧栏加撤回重做等配置动作
设置页的横幅换成 toast(右滑入、几秒后上移淡出,web/toast.ts 单例): 动作结果看一眼就行,不值得在页面里占一块常驻位置。表单校验类的错误 仍留在各自表单里。 撤回栈就是备份链:撤回把最新备份应用回去并消费掉它,撤回前的状态进 重做栈(.patchbay-redo,同样留 10 份);重做反向;新的正常保存清空 重做栈,不留分叉历史。这两条路复用 applyConfig 的保护链路,用 restoreFrom 参数跳过自建备份——否则备份链会被撤回本身污染,撤两次 等于原地打转。侧栏左下角一排图标:撤回、重做、历史记录(备份列表 弹窗)、更新配置(POST /api/kernel/reload,给 SSH 手改后用)、重启 内核;收拢时容器变窄自动折成一列。 设置页顺手修三处:GEO 行的编辑按钮在输入框开着时再点会闪(blur 关了 click 又开),mousedown.prevent 保焦点、click 显式开关;上传按钮改 「选择或拖放文件」,投放区拖入高亮;恢复策略挪到恢复行下面。
This commit is contained in:
+11
-1
@@ -141,7 +141,14 @@ export const api = {
|
||||
applyConfig: (data: ConfigObject, baseRevision: string) =>
|
||||
request<ApplySuccess>('PUT', '/api/config', { data, baseRevision }),
|
||||
|
||||
listBackups: () => request<{ backups: string[] }>('GET', '/api/config/backups'),
|
||||
/** 备份链(撤回栈)和重做栈深度。侧栏用它决定撤回/重做按钮亮不亮。 */
|
||||
listBackups: () => request<{ backups: string[]; redo: number }>('GET', '/api/config/backups'),
|
||||
|
||||
/** 撤回最近一次改动:应用最新备份并消费掉它,撤回前的状态进重做栈。 */
|
||||
undoConfig: () => request<ApplySuccess>('POST', '/api/config/undo'),
|
||||
|
||||
/** 重做最近一次被撤回的改动。新的正常保存会清空重做栈。 */
|
||||
redoConfig: () => request<ApplySuccess>('POST', '/api/config/redo'),
|
||||
|
||||
/** 配置文件的原文,给「下载当前配置」用。 */
|
||||
configRaw: async (): Promise<string> => {
|
||||
@@ -189,6 +196,9 @@ export const api = {
|
||||
*/
|
||||
restartKernel: () => request<{ ok: true }>('POST', '/api/kernel/restart'),
|
||||
|
||||
/** 让内核重新加载磁盘上的配置文件。给 SSH 手改过配置的场景用。 */
|
||||
reloadKernelConfig: () => request<{ ok: true }>('POST', '/api/kernel/reload'),
|
||||
|
||||
/**
|
||||
* 让内核更新 GEO 数据库。同步接口,下载完才回话,可能要等上几十秒。
|
||||
* 内核只有全量更新这一个口子,没变化的文件靠内容哈希跳过重写。
|
||||
|
||||
Reference in New Issue
Block a user