更新日志
0.1.17
Patch Changes
0.1.16
Patch Changes
- Updated dependencies [53c4c94]
0.1.15
Patch Changes
0.1.14
Patch Changes
- Updated dependencies
- @sciexpr/ai@0.2.1
- @sciexpr/vue@0.9.1
0.1.13
Patch Changes
- Updated dependencies
- @sciexpr/ai@0.2.0
- @sciexpr/vue@0.9.0
0.1.12
Patch Changes
- Updated dependencies
- Updated dependencies
- @sciexpr/ai@0.1.2
- @sciexpr/vue@0.8.3
0.1.11
Patch Changes
- Updated dependencies [5398c29]
0.1.10
Patch Changes
0.1.9
Patch Changes
0.1.8
Patch Changes
0.1.7
Patch Changes
0.1.6
Patch Changes
0.1.5
Patch Changes
- Updated dependencies
- @sciexpr/renderer@0.2.0
- @sciexpr/vue@0.4.1
- @sciexpr/markdown@0.1.3
0.1.4
Patch Changes
0.1.3
Patch Changes
- Updated dependencies
- @sciexpr/vue@0.3.0
- @sciexpr/presets@0.2.0
0.1.2
Patch Changes
0.1.1
Patch Changes
- Updated dependencies
- @sciexpr/core@0.1.1
- @sciexpr/vue@0.2.2
- @sciexpr/chemistry@0.1.1
- @sciexpr/math@0.1.1
- @sciexpr/presets@0.1.2
- @sciexpr/ai@0.1.1
- @sciexpr/parser@0.1.2
- @sciexpr/renderer@0.1.2
- @sciexpr/markdown@0.1.2
v0.8.0 (2026-07-13)
🔍 发包审计 & 质量保障
严重修复 (7 项)
@sciexpr/core: hasMathNodes() 移除 'text' 误判,修复 ExpressionClassifier 纯文本被归类为 math@sciexpr/chemistry/math/physics/presets: tsconfig 补充 "composite": true + "references" 项目引用@sciexpr/vue: tsconfig references 补全全部兄弟包;vite.config external 使用 regex 外部化 codemirror 全家桶
中等修复 (5 项)
@sciexpr/vue: module 字段统一为 .js;vitest.config alias 补全全部兄弟包@sciexpr/chemistry/math/physics/presets: 创建 tsup.config.ts;files 补充 README.md
功能修复 (3 项)
- MarkdownEditor:
onHeaderClear 改用 setValue('') 替代无效的 replaceSelection('') - MarkdownPreviewPane: 空状态文本改为中文"预览内容将在此处显示…"
- useMarkdownEditor: 新增
setValue() 方法替换整个文档内容
🧪 E2E 测试
- 新增 26 条 Playwright E2E 测试,覆盖 MarkdownEditor 全交互链路:
- Initial Render (4) / Clear Button (3) / Toolbar Formatting (5)
- Preview Rendering (4) / Split Pane Drag (2) / Sidebar (2)
- Edge Cases (3) / AI Button (3)
- 新增
playwright.vue.config.ts Vue Playground 专用配置
✅ 验证结果
| 验证项 | 结果 |
|---|
pnpm build | 11/11 包 ✅ |
| vitest (root) | 390/390 ✅ |
| vitest (vue) | 37/37 ✅ |
| playwright E2E | 26/26 ✅ |
| 发包评分 | 92/100 |
v0.7.0 (2026-07-10)
🎨 CategoryPalette — 分类符号快速插入面板
全新的 CategoryPalette 组件位于 Markdown 编辑器工具栏上方,根据左侧侧边栏的分类自动切换显示对应的子分类常用符号,点击即可插入 LaTeX。
三大主分类 & 子分类
| 主分类 | 子分类 |
|---|
| 数学 | 运算、关系、箭头、希腊字母、矩阵、上下标、大型运算、函数、双曲/反三角、其他符号 |
| 物理 | 数学全部 10 类 + 物理常量、SI 单位、量子力学、矢量微积分 |
| 化学 | 化学物质、化学离子、常用符号、希腊字母、化学元素 |
组件
CategoryPalette (@sciexpr/vue) — 上下布局:上排子分类标签(横向滚动),下排符号按钮(自动换行)- 每个符号按钮显示名称 + 符号值,点击即插入 LaTeX 到编辑器
- 矩阵类模板(
\begin{pmatrix}...)自动使用 display math $$...$$ 包裹 - 新增
showPalette prop 控制显隐
数据层
@sciexpr/math: 新增 FUNCTIONS(22 个函数)、HYPERBOLIC_TRIG(7 个双曲/反三角)、MATH_PALETTE_CATEGORIES(10 个子分类 palette 数据)@sciexpr/physics: 新增 PHYSICS_PALETTE_CATEGORIES(物理常量 / SI 单位 / 量子力学 / 矢量微积分,全部引用 ALL_CONSTANTS / ALL_UNITS 避免重复)@sciexpr/presets: 新增 palette-chem.ts,导出 CHEM_PALETTE_CATEGORIES(5 个化学子分类,希腊字母从 @sciexpr/math 统一引用)@sciexpr/vue: 新增 data/category-palette.ts 聚合层,导出 MASTER_PALETTE_DATA、getPaletteSymbols、getCommonSymbols、searchPaletteSymbols
通信链路
EditorSidebar 新增 update:activeCategory emit,主分类切换时通知 MarkdownEditorMarkdownEditor 集成 CategoryPalette,activeCategory 状态联动
🔧 渲染器修复
\left/\right 尾随空格修复
LatexReverseRenderer 的 symbol 节点渲染器对所有以字母结尾的 LaTeX 命令添加尾随空格,导致 \left( → \left (,KaTeX 解析失败- 修复:排除 delimiter 前缀命令(
\left、\right、\middle、\big* 等),改用 Set.has() 精确匹配
Delimiter 内 Group 节点解包
- AST 序列化时 group 节点包裹
{...},在 \left 后变成 \left({...}\right) - KaTeX 将
{ 识别为分隔符,导致渲染错误 - 修复:delimiter 渲染时检测 group 节点,直接展平 children 而非包裹
{...}
🐛 公式修复
- 洛伦兹变换(
lorentz-transform):\prime → '(ASCII 引号),修复侧边栏渲染 - 相对论速度叠加(
velocity-addition):同上 - 动量守恒(
momentum-conservation):\prime → ' 一致性修复
♻️ 数据去重 — 消除 70 个内联重复
- math
greek palette(20 项):从内联副本 → 引用 GREEK_LOWERCASE/GREEK_UPPERCASE 筛选 - physics
constants palette(15 项):从内联副本 → 引用 ALL_CONSTANTS + fromConstant() 辅助函数 - physics
units palette(20 项):从内联副本 → 引用 ALL_UNITS + fromUnit() 辅助函数 - chem
greek palette(15 项):从内联副本 → 引用 @sciexpr/math GREEK_LOWERCASE/GREEK_UPPERCASE
📊 统计
- 11 个 npm 包 / 26 组件测试 / 全新 6 文件 1,500+ 行
- 所有包 TypeScript 编译零新增错误
v0.5.1 (2026-07-08)
🔧 代码审计 — 质量修复与优化
🔴 类型系统增强
- ExpressionNode.kind 从
string 改为 ExpressionNodeKind 字面量联合类型,提升类型安全 - 修复
core/parser/renderer 测试文件中 8 个 TS 编译错误(类型缩窄/缺失字段/未使用导入) - AI 测试补充
ValidationError.severity 和 IAINormalizerProvider.detectAndFix 字段
🟡 不可变性 & 逻辑优化
- chem-parser: 消除 AST 节点突变 —
charge/chargeSign 改为 createChemElement 重建 - chem-parser: 化学基团原子计数使用不可变
map 替代 in-place mutation - MathML renderer: Script 节点
sub+sup 同时存在时避免重复渲染,改用 if-else if - AI Pipeline: 缓存 key 加入
expressionType,避免数学/化学补全错误共享 - AI Pipeline:
eventListeners/emit/off 中 any[] → unknown[] 提升类型安全
🟢 代码清理
- 移除 tokenizer 中
\\ newline 死代码分支 - Latex renderer: 化学元素 count 从
HO2 修正为 HO_{2}(LaTeX 下标格式) - 清理 6 个 Vue composables 中共 20 行未使用的导入
🟡 配置修复
- 根
tsconfig.json references 补全 math/chemistry 两个遗漏的包 - Vue
tsconfig 新增 env.d.ts 支持 .vue 模块类型声明 ShortcutDef.action 改为可选,BUILTIN_SHORTCUTS 移除空函数
✅ 新增测试
- 19 个 Vue 组件运行时测试(
@vue/test-utils + jsdom) - Formula (5) / LivePreview (4) / Toolbar (5) / AutocompleteDropdown (5)
- JSDoc 注释增强: 6 个核心工厂函数添加
@param / @returns
📊 统计
- 9 个 npm 包 / 313 个单元测试 + 26 个组件测试 / 9/9 TS 编译零错误
v0.5.0 (2026-07-06)
🎯 M9-M11: 质量保障 → 1.0.0 就绪
🧪 测试增强
- 📈 测试覆盖率从 70.54% → 87.78%(Statements)
- 📊 分支覆盖率 82.28%,函数覆盖率 97.00%
- 🧪 单元测试从 164 → 313 个(+149)
- ⚡ 新增 22 个性能基准测试(Benchmark)
- Parser: 简单符号 ~2M ops/s / 化学式 ~1.8M ops/s
- Renderer: Unicode ~12.9M ops/s / KaTeX ~12.4M ops/s
- 🎭 新增 Playwright E2E 测试框架
🎮 在线 Demo 站点
- 🌐 全新 交互式公式编辑器页面(
/demo) - 🧮 实时 KaTeX 渲染预览
- 🔧 工具栏:分式 / 根式 / 上下标 / 括号 / 希腊字母 / 矩阵
- 📋 8 组快速预设(二次公式、欧拉公式、勾股定理…)
- ⌨️ 键盘快捷键(Ctrl+/ 分式、Ctrl+S 根式)
- 📑 可展开的代码示例(code-group)
🛠️ 工程化
- ⚙️ VitePress 自定义主题 &
FormulaDemo 组件 - 📦 更新
package.json scripts: test:bench / test:e2e / test:e2e:ui - 🎯 覆盖率阈值配置:Statements ≥85% / Branches ≥80% / Functions ≥85%
📊 统计
- 9 个 npm 包 / 313 个测试 / 22 个性能基准 / E2E 框架
v0.4.0 (2026-07-06)
@sciexpr/presets v0.1.0 → v0.1.1
- 📐 30+ 数学公式模板 — 微积分 / 代数 / 三角 / 线性代数 / 统计
- ⚡ 60+ 物理模板 — 力学 / 旋转运动 / 电磁学 / 热力学 / 量子力学 / 相对论
- ⚗️ 20+ 化学模板 — 常见化合物 / 经典反应 / 电化学
- 🧪 离子模板 — 阳离子 / 阴离子检索
- 🔬 元素预设 — 按周期 / 族检索
- 🔤 希腊字母预设 — 24 小写 + 11 大写 (含变体)
- 🔍 按分类/标签/ID 搜索模板
📊 统计
v0.3.0 (2026-07-06)
@sciexpr/chemistry v0.1.0
- 🔬 118 元素完整周期表数据(中/英文名、电负性、氧化态、电子排布、常见化合物)
- ✅ 化学式验证器(元素符号验证、化学式文本验证、AST 节点验证)
- ⚖️ 化学反应平衡检查器(元素守恒、物质计数)
- 🔢 氧化数计算器(常见氧化态、金属/非金属判断、电负性查询)
@sciexpr/math v0.1.0
- 📐 符号库 — 22 希腊小写 + 11 大写 + 7 运算符 + 19 关系符 + 12 箭头 + 17 杂项
- 🧮 矩阵工具 — 验证、转置、加法、乘法、标量乘法、2×2/3×3 行列式
- 📝 LaTeX 生成 — 矩阵/行列式/模板
📊 统计
v0.6.0 (2026-07-09)
🎉 @sciexpr/physics v0.1.0
物理常量库 (CODATA 2018)
- 基本常量: c, h, ħ, G, g, R, Nₐ, k_B 等
- 电磁学常量: e, ε₀, μ₀, α, Φ₀, G₀, Z₀
- 原子物理常量: mₑ, mₚ, mₙ, a₀, R_∞, μ_B, μ_N
- 热力学常量: R, k, σ, M_u, T₀, p₀, V_m
- 按符号/分类/关键词搜索
SI 单位制与换算
- 7 个基本单位 + 17 个导出单位 + 8 个非 SI 单位
- 单位换算(eV↔J, ℃↔K, bar↔Pa, atm↔bar ...)
- 量纲分析 & 量纲一致性检查
3D 向量运算
- 点积、叉积、模长、单位向量、夹角
- 加/减/标量乘
- 矢量微积分 LaTeX 生成(梯度/散度/旋度/拉普拉斯)
Bra-Ket 量子力学记号
- 左矢/右矢/内积/模方
- 含算符期望值、对易子、反对易子
物理公式验证
📊 统计
- 10 个 npm 包 / 313+ 单元测试 / 26 个组件测试 / 22 个性能基准
v0.1.0 (2026-07-06)
🎉 首个版本
@sciexpr/core v0.1.0
- 17 种 AST 节点类型
- 节点工厂、遍历器、序列化器、分类器
@sciexpr/ai v0.1.0
- 4 个 SPI 接口 + AIPipeline + 4 套 Prompt 模板
- 内置回退:补全 / 知识库 / 规范化 / 格式化
@sciexpr/parser v0.1.0
- LaTeX 词法分析器 + 解析器
- 化学式解析器 + ParserRegistry
@sciexpr/renderer v0.1.0
- KaTeX / Unicode / MathML / LaTeX 四种渲染器
@sciexpr/markdown v0.1.0
- markdown-it 插件:
$...$ / $$...$$ / \ce{...}
@sciexpr/vue v0.2.0
- 7 个组件 + 5 个 Composable + Storybook
📊 统计
- 6 个 npm 包 / 101 个测试 / 7 个 Vue 组件