feat(desktop): embed BoosAPI Desktop client as a subproject

Vendor the rebranded BoosAPI Desktop client (Tauri + Vue) into metapi as
a monorepo subdirectory under desktop/. Source only — node_modules,
dist, Cargo target and the upstream .git history are excluded.

desktop/ keeps its own independent Cargo workspace (desktop/src-tauri
with crates/*); it is not part of the backend boosapi crate, so a
`cargo check` at the metapi root still compiles only the backend. Build
the desktop app from desktop/src-tauri per desktop/README.md.

Note: app icons are still placeholder assets pending the final BoosAPI
logo. The updater signing keys live outside the repo and are not
included.
This commit is contained in:
boos
2026-06-22 11:32:57 +08:00
parent d9c78ecc73
commit e0a5f57793
2305 changed files with 449355 additions and 0 deletions
@@ -0,0 +1,62 @@
import { describe, expect, it } from 'vitest'
describe('preProcessMarkdown 测试', () => {
// 导入预处理函数进行测试
function preProcessMarkdown(markdown: string): string {
// 使用更精确的正则表达式来匹配数学公式块
// 匹配 \[ ... \] 格式的数学公式块
return markdown.replace(/\\?\[[\s\S]*?\\?\]/g, (match) => {
// 如果已经是转义的反斜杠,不需要再处理
if (match.startsWith('\\\\[')) {
return match
}
// 处理单反斜杠的情况,将其转换为双反斜杠以保护数学公式内容
let processed = match
// 保护数学公式中的反斜杠命令
processed = processed.replace(
/\\(text|frac|left|right|times|sqrt|sum|int|alpha|beta|gamma|delta|theta|lambda|mu|sigma|pi|infty)/g,
'\\\\$1',
)
// 保护其他常见的反斜杠字符
processed = processed.replace(/\\([{}()[\]|&%$#_^~])/g, '\\\\$1')
return processed
})
}
it('应该正确保护数学公式中的反斜杠', () => {
const input = `\\[
\\text{付费转化率} = \\left( \\frac{\\text{付费用户数}}{\\text{月活用户数}} \\right) \\times 100\\%
\\]`
const processed = preProcessMarkdown(input)
console.log('原始输入:', JSON.stringify(input))
console.log('处理后:', JSON.stringify(processed))
// 验证反斜杠被正确保护
expect(processed).toContain('\\\\text{付费转化率}')
expect(processed).toContain('\\\\left(')
expect(processed).toContain('\\\\right)')
expect(processed).toContain('\\\\frac{')
expect(processed).toContain('\\\\times')
})
it('应该处理列表中的数学公式', () => {
const input = `1. **公式**
\\[
\\text{付费转化率} = \\left( \\frac{\\text{付费用户数}}{\\text{月活用户数}} \\right) \\times 100\\%
\\]`
const processed = preProcessMarkdown(input)
console.log('列表输入:', JSON.stringify(input))
console.log('列表处理后:', JSON.stringify(processed))
expect(processed).toContain('\\\\text{付费转化率}')
expect(processed).toContain('\\\\right)')
})
})