Repository navigation
EK-OmniProbe v1.0.0
·
74 commits
to 0195b56082e6867f7edbbdecf502642c472b9055
since this release
🆕 本次更新
首个正式版本。集中迭代了数据导出、断线重连、终端体验、图表解析与整体 UI 密度。
新增功能
- ✨ 数据导出 - 全方位导出能力:日志面板、串口/RTT 文本均支持 TXT/CSV 导出,图表区支持 CSV(含时间戳与系列值)和 PNG(自适配 Canvas 波形与 Recharts 业务图);统一走 Tauri 原生保存对话框,不再使用浏览器下载兜底
- ✨ 断线自动重连 - 本地串口和 TCP 串口都支持读取出错后自动重连(指数退避 1s 起、上限 5s),重连过程会持续发送状态事件,恢复后自动接续轮询;左侧串口配置卡新增"断线自动重连"开关
- ✨ 终端行编辑模式 - 终端选项新增"行编辑模式"开关,开启后键盘输入先在本地累积成一行(带
>提示符),回车整行发送,↑/↓翻发送历史,Esc清空;与 SendBar 共用一份 localStorage 历史 - ✨ KV 解析模式 - 图表解析新增
key=value模式,自动抽取行内所有key=number对,非数值字段(如filter=none)和单位词(如Hz)自动跳过;自动模式下置信度 ≥ 0.7 时直接命中 KV 配置 - ✨ 窗口状态记忆 - 集成
tauri-plugin-window-state,主窗口尺寸/位置自动保存与恢复 - ✨ 全局快捷键扩展 -
Ctrl+L清空当前模式数据、Ctrl+F聚焦当前模式搜索框、Space在 RTT 模式切换图表暂停
改进
- 🔧 整体 UI 密度放松 - 顶栏 chip、工具栏分组、Popover 内卡片三处高频区统一升一档(
text-[11px]→text-xs、py-1→py-1.5、gap-1→gap-1.5),主壳 padding/gap 由12px升16px,与 32px 大圆角更协调 - 🔧 TopBar 响应式 - 单行布局断点从
2xl提前到lg,1024-1535px 窄屏不再出现 Workspace 卡撑满空行的问题;非装饰性的状态 chip(如串口 FFT 提示)移除 - 🔧 图表工具栏分组 - 7 个按钮按"暂停 / 清空 / 导出 / Time-FFT"加竖线分组,工具栏外壳 padding 同步放松
- 🔧 LogPanel/Sidebar 呼吸感 - 日志行加
leading-relaxed、CardHeader 由py-3升py-4、CardContentspace-y-3、芯片搜索结果max-h-48→max-h-64 - 🔧 终端复制体验 - 选中文字后
Ctrl+C复制(无选区时才发送 SIGINT),Ctrl+Shift+C/V强制复制/粘贴;用户正在选择时点击不再夺焦
性能优化
- 🚀 高速串口刷新率 - 921600bps 等高速场景下,把
appendTerminalChunk、addChartData、incrementParseSuccess/Fail全部并入requestAnimationFrame批量节流,每帧最多 4-5 次 setState;新增addChartDataBatch和incrementParseCounts两个 store 批量 setter - 🚀 终端 chunk 处理 -
processTerminalChunk改为按需复制terminalLines(无\n的 chunk 不再深拷贝 4000 项数组),订阅terminalLines的组件在键盘回显场景跳过 re-render - 🚀 FFT 计算 - Hann 窗按 size 缓存到
Map<number, Float64Array>,FFT 缓冲区跨调用复用,避免每帧重新分配
修复
- 🐛 终端无法复制选区 - 之前点击始终把焦点偷到隐藏 textarea + Ctrl+C 全部当 SIGINT,导致框选完一松手就丢、永远复制不了;按主流终端约定重写
- 🐛 虚拟列表行重叠 - SerialViewer / RttViewer / SerialTerminalViewer 的
useVirtualizer给每行加data-index+ref={rowVirtualizer.measureElement},让 ResizeObserver 测量长行换行后的真实高度,修复行 absolute 定位重叠造成的"文字叠加" - 🐛 Popover 背景透明 - shadcn 默认
bg-popovertoken 在本项目 tailwind 配置里没有定义,导致 SerialSendBar / 各工具栏的 Popover 背景全透;改用项目已有的surface-card样式(带 border / 半透白底 / backdrop-blur) - 🐛 日志/终端模式 TX 混淆 - SendBar 之前不论 textViewMode 总是往日志 store 塞 TX 行,终端模式发送后切回日志会看到"幽灵 TX";改为只在
textViewMode === "log"时记录 TX,终端模式仍由appendTerminalChunk走本地回显
重构
- 🔧 抽取 downsampling.ts / formatChartNumber - ChartViewer 与 SignalPlotCanvas 中重复的降采样和数值格式化函数合并到
src/lib/ - 🔧 删除 RTT 死状态 -
RttState中的line_buffers / channel_read_offsets / channel_buffers三个 HashMap 字段从未被写入,仅在default()/reset()中被清空;按 KISS/YAGNI 直接删除
完整更新历史: CHANGELOG.md