v0.3.4 · 结构收敛、IPC 类型化与交互优化
0.3.4 · 结构收敛、IPC 类型化与交互优化
内部结构(无界面行为变化)
- 统一导入别名:
@shared/@renderer已配置但此前闲置,现将跨模块的深层相对路径((../)+shared/...及 renderer 内 3 层以上导入)统一改用别名 - 新增
shared/ipc.ts的IPC常量表,作为 preload 与主进程共同的唯一通道来源;新增主进程handle()注册器,把每个 handler 的通道名与入参 / 返回值绑定到IpcApi,通道或签名不一致会直接编译报错 - 抽取共享路径工具
shared/path.ts(normalizeSlashes/dirName/baseName/isAbsolutePath/joinPath/relativeToDir),替换 renderer 与主进程中 5 处重复实现 - 主题色解析抽出
hexToRgb复用;新增通用UiIconButton,ProjectBar快捷按钮改用该组件 + lucide 图标,移除约 130 行内联 SVG 与重复样式 - 新增退出前未保存守卫所用的 IPC 通道(
app:set-dirty/app:confirm-quit/app:quit-request),并纳入通道表回归测试
交互与界面
- 时间轴悬停光标反馈:空白区 / 标记 / BPM 点显示可放置或可拖拽形态,拖动、滚动、框选、快速画笔分别显示对应光标
- 数值输入框支持 ↑/↓ 步进(步进前先提交半输入的值)
- 轨道重命名按 Esc 取消修改(此前只能回车 / 失焦提交)
- Esc 逐层关闭:先关音频分析面板,再关属性卡
- 快捷键可发现性:文件 / 编辑菜单显示 Ctrl+S / Z / Y / X / C / V,撤销 / 重做在无可操作时置灰
- 窄窗口自适应:窗口变窄时依次隐藏缩放 / 采样率 / 网格等次要读数,收紧项目栏与底部走带栏布局,窄窗下隐藏「音量」文字
- 提高次要文字与禁用态在暗色主题下的对比度
- 无障碍:音高跟随开关、速度输入、音量滑杆补充可访问名;播放 / 停止 / 回到起点补充
aria-label;数字微调按钮移出 Tab 与读屏序列 - 工具提示去掉每个实例重复的 Provider,减少组件开销
性能
- 标记绘制按可见拍位区间二分裁剪,屏幕外标记不再逐帧参与遍历
修复
- 插件
callMain:修正invokePlugin参数被多包一层数组的问题,插件主进程处理器现在收到正确展开的参数 - 修复 BPM 密度条颜色不生效:Canvas 不支持以 CSS 变量作为填充色,改用调色板常量着色
- 修复首屏空白工程与打开工程(音频 MD5 静默校验)时误显示「未保存」:系统生成的默认轨道不再标记为已修改;加载工程自带音频不再计入用户编辑(此前整个静默校验与分析期间都会显示未保存)
- 新增退出未保存守卫:关闭窗口时若工程有未保存修改,弹出「保存并退出 / 放弃并退出 / 取消」,经正常保存流程写盘后再退出(此前仅询问是否退出,新建工程未选择保存路径时可能丢失修改)
- 界面细节:首屏 CSS 变量与主题定义对齐,消除启动瞬间的文字色跳变;修复自定义滚动条被标准
scrollbar-color覆盖而不生效;移除 Element Plus 残留样式;设置弹窗关闭按钮统一改用图标 - 样式系统:新增等宽字体、控件尺寸、派生圆角与禁用态透明度 token,统一主编辑器与设置面板的字体 / 尺寸 / 圆角 / 置灰表现;输入框恢复文本可选中;时间线状态栏吸附提示纳入 i18n;轨道行高亮、设置搜索结果闪烁与面板过渡遵循系统「减少动态效果」
- 样式系统(续):字号抽为
--bdg-fs-*命名 token,替换 100 余处重复的calc(Npx * var(--bdg-font-scale));层叠顺序集中为--bdg-z-*;插件菜单状态与轨道便签改用 lucide 图标,移除字符占位与内联 SVG
测试
- 新增
path/ipc(通道表回归)/limits/text单测,并补充theme颜色工具用例 - 新增工程打开回归测试:默认轨道不标脏、打开工程匹配 / 不匹配 / 无音频均保持干净、用户加载音频仍标脏
安装包:Beat-Data-Generator-0.3.4-setup.exe
English summary
- Chore: ignore the Windows reserved device name
nul. - Fix: the unsaved indicator no longer shows on a blank first screen or while opening a project during the silent audio MD5 check. The synthetic default track is not counted as an edit, and loading a project's own audio is not marked dirty (previously the whole silent check + analysis appeared as unsaved).
- Internal: unified
@shared/@rendererimport aliases; added a typedIPCchannel table with a main-processhandle()registrar bound toIpcApi; extracted shared path helpers; added a reusableUiIconButton; added the quit-guard IPC channels. - UI: timeline hover cursors, arrow-key stepping in number inputs, layered Esc closing, shortcut discoverability, narrow-window adaptation, better dim/disabled contrast, and accessibility labels for icon-only controls.
- Perf: culled off-screen markers when drawing the beat grid; removed per-instance tooltip providers.
- Also included: the unsaved-changes quit guard, theme/style token system, and additional unit tests.