feat: 去除构建时版控变量 + 窗口标题动态版控 + 退出登录保留缓存 (0.0.24)

版控体系重构(13 文件):
- 移除 build.mjs --personal/--enterprise 参数和 EDITION 环境变量
- 统一安装包文件名:船长-HeiXiu-{os}-{版本号}-Setup.{ext}
- 简化 package.json 构建脚本,移除 :enterprise 变体
- scripts/*.mjs 不再接受 edition 参数
- 移除 shared/constants/app.ts 的 parseEdition()

窗口标题动态版控:
- 新格式:船长-HeiXiu-{os}-{版本号}(登录前)/ ·{版控} 后缀(登录后)
- 链路:AppProvider(account_type) → useEffect → appRuntime IPC → main process
- 移除 updater.ts 更新检查 API 的 edition 查询参数

本地存储生命周期修正:
- 退出登录不再自动清空缓存(user_id 隔离,重新登录命中缓存)
- clearUserStorage 添加 isOpen() 竞态守卫
- 移除 closeDatabase() 避免退出→重新登录后数据库不可用
- 手动「清理缓存」按钮保留

文档:
- CHANGELOG.md 新增 0.0.24 条目
- TODO.md 新增已完成项
This commit is contained in:
2026-06-22 13:36:42 +08:00
parent e4d66a2ac0
commit 8b697e775d
95 changed files with 1158 additions and 1295 deletions

View File

@@ -1,6 +1,57 @@
# 更新日志
> 每次发版前修改此文件,`npm run build:win` 打包后会自动读取生成 update-info.json。
---
## 0.0.242026-06-22
**去除构建时版本变量 + 窗口标题动态版控 + 退出登录保留缓存**
### 版控体系重构
- **去除构建时 `EDITION` 环境变量**`--personal`/`--enterprise` 参数从 `build.mjs` 移除,`vite.config.ts` 不再注入 `process.env.EDITION``.env.*` 清理相应行
- **统一的安装包文件名**`船长-HeiXiu-{os}-{版本号}-Setup.{ext}`(移除 `${env.EDITION}`
- **`package.json` 简化**:移除 3 条 `:enterprise` 构建脚本
- **`scripts/*.mjs` 统一**`upload-oss`/`generate-update-info`/`publish-release` 不再接受 `edition` 参数
### 窗口标题动态版控
- **新格式**`船长-HeiXiu-{os}-{版本号}`(未登录)/ `船长-HeiXiu-{os}-{版本号}·{版控}`(登录后)
- **运行时链路**`AppProvider` 根据 `user.account_type` 派生 `edition``useEffect``window.appRuntime.setWindowEdition()` → IPC `set-window-title` → 主进程 `buildWindowTitle``mainWindow.setTitle`
- **Edtion 类型守卫**`src/vite-env.d.ts` + `electron/electron-env.d.ts` 双端类型声明
- **更新检查 API** 移除 `edition` 查询参数
### 本地存储生命周期修正
- **退出登录不再自动清缓存**`AppProvider.logout()` 移除 `clearUserStorage()` 调用。数据已按 `user_id` 隔离,同一用户重新登录缓存直接命中
- **`clearUserStorage` 竞态修复**:添加 `isOpen()` 前置守卫,防止数据库未初始化时执行 SQL移除尾部 `closeDatabase()`,确保退出→重新登录周期内数据库持续可用
- **手动清理保留**`DataManageSetting` 的「清理缓存」按钮仍可主动触发
---
## 0.0.232026-06-22
**三栏等比缩放修复 + 代码重组**
### 三栏布局修复
- **约束逻辑修正**:双遍最小值约束改为 clamp + 超限兜底,修复窗口缩小至 1036px 以下时中列被挤出视口
- **双触发器**`ResizeObserver` + `window.resize` 事件双重驱动,防止 React 批量更新吞掉重绘
- **三栏等比缩放**:旧算法只保 left:right 比例,中列被动吸收剩余;新算法通过 `prevWidthRef` 反推中列上次宽度,三栏按各自占比同步缩放——窗口从半屏拉到全屏保持 ≈1:1:1
### 代码重组(第二轮)
- **src/utils/**11 文件精简为 7 文件 —— `env.ts`(platform+device)、`bus.ts`(event-bus+ipc+logger)、`display.ts`(display+logo+type)、`media-upload.ts`
- **controls/**14 文件精简为 6 文件 —— `simple-widgets.tsx`(6合1)、`upload-widgets.tsx`(ImageInput+VideoInput 去重)、`list-upload-widgets.tsx`(ImageListInput+AudioListInput)
- **FormField 提升**:从 `auth/components/` 提升到 `src/components/ui/``FieldConfig` 类型同步移到 `ui/types.ts`
- **data-sync 归位**:从 `settings/sections/` 移到 `infrastructure/storage/`
- **electron/main/ 分组**3 个 IPC handlerlog-ipc/safe-storage-ipc/storage-ipc收拢到 `ipc/` 子目录
- **shell/ → frame/**`src/components/shell/` 重命名为 `frame/`,更直观表达"应用框架"
- **storage/ 分层**15 文件平铺 → `core/`4+ `stores/`5+ `services/`4+ 入口
### 文档
- 37 个文件夹全部生成 README.md不进 Git
- PROJECT.md 目录树同步更新
---
## 0.0.222026-06-18