v1.5.1: 文传易外链+缩略图改截预览webview+工程整体加密+缩略图压缩
- 配置按钮组新增「文传易」外链(关于之前,系统浏览器打开 http://wenchuanyi.bbitcn.net/) - 缩略图改为对编辑区预览 webview 直接截图(所见即所得),非当前预览页回退按 URL 截图 - 工程 JSON 整体加密(AES-256-GCM,enc:v1: 覆盖整个 JSON) - 缩略图压缩 ≤500KB(PNG→JPEG) - 版本号升至 1.5.1(同步 settings/utils/store/ProjectInfo/AboutPanel 默认值) - 更新开发进度存档与 MEMORY 至 v1.5.1
This commit is contained in:
@@ -241,5 +241,22 @@
|
||||
- **UI 调整 4 项(未提交)**:① 编辑窗体预览区地址栏 `.ct-url` 右侧新增复制地址按钮(`IconCopy` + `navigator.clipboard` + toast,Canvas.tsx);② 页面属性「大屏页面 URL」textarea rows 3→5(PropertyPanel.tsx);③ 配置窗体「当前工程」工程路径行新增「复制」按钮(`.cfg-path` flex 布局,ProjectInfo.tsx);④ Ribbon 配置视图删除「工具」组(含桌面快捷方式按钮),renderer 不再引用 `window.api.createShortcut`(preload/IPC 保留未删,ShortcutPanel 配置菜单页仍可用)。
|
||||
- **修复单屏发布切页闪烁/任务栏闪现(screens.ts,未提交)**:第一版(预设全屏+先 hide 后 show+防御性 setFullScreen)用户实测无效。**第二版彻底方案(已实施)**:Windows 上 hide 全屏窗体本身就会导致任务栏重排闪现,故轮播全部窗体就绪后**保持显示叠放、永不 hide**;切换只 `moveTop()+focus()` 把目标窗体置顶(同尺寸全屏窗体完全叠放),最顶层始终有全屏窗体覆盖任务栏。ready-to-show 任一窗体就绪即 show,并把 `wins[0]` 置顶。400ms/120ms 兜底 focus 同步改为 moveTop 语义。经验:**Windows Electron 多全屏窗体切换禁用 hide/show,用 moveTop 置顶切换**。
|
||||
- **主程序关闭确认+子页面联动退出(ipc.ts,未提交)**:installCloseGuard 改为统一弹「确认退出」对话框(合并未保存警告),确认后先 `closeAllScreens()` 再 `win.close()` → `window-all-closed` → `app.quit()`(before-quit 里 closeAllScreens 幂等无副作用)。此前仅 dirty 时弹「工程尚未保存」,且主窗关后子窗口仍存活 app 不退出。
|
||||
- **轮播取消循环+边界左上角提示(screens.ts,未提交)**:switchCarousel 去掉 `%n` 取模回绕,越界(next<0 或 next>=n)时保持当前页,并新增 `hintAt(win,text)` 在页面左上角注入 DOM overlay(position:fixed 深色圆角小条,2 秒自动移除,`executeJavaScript` 注入,不受页面 CSP 限制)提示「当前已经是第一屏/最后一屏」;自动轮播播到边界后 clearInterval 并置 `state.auto=false`(避免反复提示)。**单屏轮播与交互发布主屏共用 switchCarousel,因此两者同时生效**。
|
||||
- **新增/插入页面默认值调整(store.ts,未提交)**:新增 `blankPage()` 辅助函数:url=''、params=''、desc='' 全留空;screen/ctrl 取现有页面**最大值 +1**(需求更正:先是"取最大值",用户又改为"最大值+1")。addPage 与 insertBefore 共用,同时修正标题拼接 bug `'新页面 ' + pages.length + 1`(字符串拼接得到"新页面 41")→ `(pages.length + 1)`。空 url 经 `pageSrc`/`resolvePageUrl` 安全返回 about:blank。renderer 改动 HMR 生效。
|
||||
- **更新完善「开发进度存档」至 v1.5.1(未提交)**:头部版本/状态、§2 用户工程文件、§4 删除 release 改用 `cmd /c rmdir`(PowerShell `$true`/`$_` 被外层 shell 展开的坑)、产物 1.5.1/135.1MB、§5 代码地图(ipc/preload/crypto 整体加密/WebFrame setPreviewWv/configMenus 文传易)、§6 功能清单重写为 v1.5.1(交互发布/页面默认值/文传易/整体加密/缩略图截预览 webview/版本快捷操作)、§7 截图待办置 ✅、§8 提交历史到 e0d9605+未提交清单、§9 新增外层 shell 展开坑+webview 截图坑。同步更新 MEMORY.md(版本号/打包/功能全景/待办)。
|
||||
- **版本升至 1.5.1 并打包(已生效,未提交)**:同步 package.json version、main/settings.ts 默认 projectVersion、utils.ts 兜底与回退值、store.ts、ProjectInfo.tsx、AboutPanel.tsx 内全部 "0.2.0"→"1.5.1"。`npm run dist` 打包成功,产物 `release/智慧农业大数据可视化控制中心-1.5.1-win.zip`(135MB,zip 绿色版)。打包前需先删 release 目录(`cmd /c rmdir /s /q`,PowerShell `$true` 会被外层 shell 展开导致报错),并设 `ELECTRON_BUILDER_BINARIES_MIRROR=https://npmmirror.com/mirrors/electron-builder-binaries/`。
|
||||
- **缩略图改为截预览 webview(所见即所得,已生效,未提交)**:
|
||||
- 用户反馈截图与预览效果不同。原因:原 `page:snapshot` 主进程新开 1280x720 隐藏窗口截图,与编辑区 webview 渲染不一致。
|
||||
- 改为:`WebFrame.tsx` 创建 webview 时注册到 store(`setPreviewWv(wv)`,卸载清 null);`store.capturePreview` 对当前预览页(at===curIdx)直接 `wv.capturePage()` → `img.toPNG()` → 新 IPC `page:compress`(主进程 `nativeImage.createFromBuffer` → `compressSnapshot` ≤500KB JPEG)返回 dataURL;非当前页回退旧 `page:snapshot`。
|
||||
- env.d.ts 扩展 WebviewTag(capturePage/isLoading)与 NativeImage(toPNG 等)类型。已重启 dev 生效。
|
||||
- **工程 JSON 整体加密 + 缩略图压缩(已生效,未提交)**:
|
||||
- 原实现只加密 PageUrl/PageParams 字段,JSON 其余内容明文(用户反馈"设置密码后文件没被加密")。改为 `project.ts` `writeProjectFile` 在密码存在时**整体加密整个 JSON 字符串**(`encryptText(data)`),`readProjectFile` 检测内容以 `enc:v1:` 开头则整体解密;旧格式(明文/字段级加密)仍兼容逐字段解密。
|
||||
- 缩略图:`ipc.ts` 新增 `compressSnapshot(img, maxBytes=500KB)`,JPEG 输出(先限制最长边≤1600,质量 80→35 递减;仍超则尺寸 1280→480 递减再压),替代原来 PNG `toDataURL()`;保证截图 ≤500KB。已重启 dev 生效。
|
||||
- **版本号快捷操作 + 复制修复(已生效,未提交)**:
|
||||
- `utils.ts` 新增版本函数:`nextMajor`(0.2.0→1.2.0)、`nextMinor`(0.2.0→0.3.0,1→1.1.0)、`nextPatch`(0.2.0→0.2.1,0.2→0.2.1,1→1.0.1),非法回退 '0.2.0'。
|
||||
- ProjectInfo.tsx 版本号文本框后「+1」按钮(`.cfg-ver` flex 样式),点击**次版本 +1**(需求更正:先是大版本,后更正为次版本)并立即 `updateSettings({projectVersion})`,toast「次版本 +1 → 0.3.0」。
|
||||
- store.ts `save()` 每次保存成功**修订号 +1**(`nextPatch`,需求更正:先小版本后改修订号),写入 JSON 并 `updateSettings`,toast「· 修订号 vX.Y.Z」;saveAs() 不 bump。
|
||||
- **复制修复**:Canvas.tsx 地址复制、ProjectInfo.tsx 工程路径复制原用 `navigator.clipboard.writeText`(Electron 中易失败)→ 改走新 IPC `clipboard:write`(主进程 `electron.clipboard.writeText`),preload 暴露 `window.api.clipboard.writeText`。已重启 dev 生效。
|
||||
- **配置按钮组新增「文传易」外链按钮(已生效,未提交)**:configMenus.ts 的 `ConfigMenu` 加 `'wenchuanyi'`、`ConfigMenuMeta` 加可选 `href?: string`;CONFIG_MENUS 在 about 前插入 `{ id:'wenchuanyi', icon:'📥', label:'文传易', desc:'用系统浏览器打开文传易网站', href:'http://wenchuanyi.bbitcn.net/' }`。Ribbon.tsx 配置组渲染:有 href 时 action 调 `window.api.shell.openExternal(m.href)` 且不加 accent(不切换配置页)。新增 IPC 链路:ipc.ts `ipcMain.handle('shell:openExternal', ...)`(已 import shell)+ preload `api.shell.openExternal` + index.d.ts 类型。**已重启 dev(taskkill /F /IM electron.exe + 杀掉 electron-vite node 进程,再 Start-Process npm.cmd run dev)使 main/preload 生效**。
|
||||
- **环境经验**:execute_command 实际在 PowerShell 环境执行(`$_` 会被外层展开为空,`&` 不允许,`grep` 不可用);查进程用 `powershell -NoProfile -Command "Get-CimInstance Win32_Process | Where-Object Name -like '*x*' | Select-Object Name,ProcessId"`(Where-Object 属性过滤语法避免 `$_`)。
|
||||
- **已提交并推送**:Commit `e0d9605` —「修复单屏发布闪烁+编辑界面增强+新增页面默认值优化」,9 文件 +130/−50,push `aa8f070..e0d9605 main -> main`(github.bbitcn.net/fanhongcai/DataViewCenter)。`credential-manager-core is not a git command` 为无害提示。**未跟踪不提交**:用户工程 JSON(`会东智慧蛙箱大数据中心.json`)保留在工作区。
|
||||
- **轮播取消循环+边界左上角提示(screens.ts,已提交 e0d9605)**:switchCarousel 去掉 `%n` 取模回绕,越界(next<0 或 next>=n)时保持当前页,并新增 `hintAt(win,text)` 在页面左上角注入 DOM overlay(position:fixed 深色圆角小条,2 秒自动移除,`executeJavaScript` 注入,不受页面 CSP 限制)提示「当前已经是第一屏/最后一屏」;自动轮播播到边界后 clearInterval 并置 `state.auto=false`(避免反复提示)。**单屏轮播与交互发布主屏共用 switchCarousel,因此两者同时生效**。
|
||||
- **新增/插入页面默认值调整(store.ts,已提交 e0d9605)**:新增 `blankPage()` 辅助函数:url=''、params=''、desc='' 全留空;screen/ctrl 取现有页面**最大值 +1**(需求更正:先是"取最大值",用户又改为"最大值+1")。addPage 与 insertBefore 共用,同时修正标题拼接 bug `'新页面 ' + pages.length + 1`(字符串拼接得到"新页面 41")→ `(pages.length + 1)`。空 url 经 `pageSrc`/`resolvePageUrl` 安全返回 about:blank。renderer 改动 HMR 生效。
|
||||
|
||||
Reference in New Issue
Block a user