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,225 @@
export type TestLabSampleId = 'baseline' | 'thinking' | 'diff' | 'stress'
export type TestLabFrameworkId = 'vue3' | 'vue2' | 'react' | 'angular'
export interface TestLabFrameworkCard {
id: TestLabFrameworkId
label: string
note: string
origin: string
localPort: number | null
}
export interface TestLabSampleCard {
id: TestLabSampleId
title: string
summary: string
content: string
}
export const TEST_LAB_FRAMEWORKS: ReadonlyArray<TestLabFrameworkCard> = [
{
id: 'vue3',
label: 'Vue 3',
note: '完整特性 / 主 playground',
origin: 'https://markstream-vue.simonhe.me',
localPort: null,
},
{
id: 'vue2',
label: 'Vue 2',
note: '兼容层回归 / 老项目',
origin: 'https://markstream-vue2.pages.dev',
localPort: 3334,
},
{
id: 'react',
label: 'React',
note: 'hooks / 渲染对照',
origin: 'https://markstream-react.pages.dev',
localPort: 4174,
},
{
id: 'angular',
label: 'Angular',
note: 'standalone / parity lab',
origin: 'https://markstream-angular.pages.dev',
localPort: 4175,
},
] as const
export const TEST_LAB_SAMPLES: ReadonlyArray<TestLabSampleCard> = [
{
id: 'baseline',
title: '基础回归',
summary: '标题、强调、数学、Mermaid、infographic 和 D2 一次看全。',
content: `# Markstream Test Lab
在这里可以快速验证 **Vue 3 / Vue 2 / React / Angular** 四套渲染器的表现是否一致。
## 基础格式
- **加粗**
- *斜体*
- \`inline code\`
- [链接](https://github.com/Simon-He95/markstream-vue)
## 数学
行内公式:$E = mc^2$
块级公式:
$$
\\int_0^1 x^2 dx = \\frac{1}{3}
$$
## Mermaid
\`\`\`mermaid
flowchart LR
Prompt --> Parser --> Renderer --> Preview
\`\`\`
## 代码块
\`\`\`ts
export function compareFramework(name: string) {
return \`\${name} test page is ready.\`
}
\`\`\`
## Infographic
\`\`\`infographic
infographic list-row-simple-horizontal-arrow
data
items
- label 输入
desc markdown
- label 渲染
desc 解析与增量更新
- label 对照
desc 跨框架检查
\`\`\`
## D2
\`\`\`d2
App: Angular
Parser: Markdown AST
Renderer: Enhanced HTML
Lab: Playground/Test
App -> Parser -> Renderer -> Lab
\`\`\`
`,
},
{
id: 'thinking',
title: 'Thinking 嵌套重节点',
summary: '检查 custom thinking 节点里是否还能稳定渲染 Mermaid、代码块和列表。',
content: `# Thinking / Nested Blocks
<thinking>
在这个 thinking 容器里,我们希望 Angular 和 Vue / React 一样,仍然按正常 markdown 节点树渲染。
## Nested Mermaid
\`\`\`mermaid
flowchart TD
Thinking --> Parse
Parse --> Mermaid
Parse --> CodeBlock
\`\`\`
## Nested Code Block
\`\`\`ts
export function ensureParity(name: string) {
return \`nested renderer ok: \${name}\`
}
\`\`\`
- nested list item
- another item
</thinking>
外层正文不应该被吞掉。
`,
},
{
id: 'diff',
title: 'Diff 与代码流',
summary: '观察 diff code block、长文本和流式更新的稳定性。',
content: `# Diff Regression
下面这个样例更适合观察 **code block stream** 和折叠逻辑:
\`\`\`diff typescript
diff --git a/src/render.ts b/src/render.ts
index 0000000..1111111 100644
--- a/src/render.ts
+++ b/src/render.ts
@@ -1,7 +1,12 @@
-export function render(input) {
- return input
+export function render(input: string) {
+ if (!input.trim())
+ return 'empty'
+
+ const normalized = input.replace(/\\r\\n/g, '\\n')
+ return normalized
}
\`\`\`
再加一段普通代码,方便对比 Monaco / MarkdownCodeBlock / PreCodeNode:
\`\`\`tsx
export function TestHarness() {
return (
<section>
<h2>Regression</h2>
<p>Streaming should remain smooth.</p>
</section>
)
}
\`\`\`
`,
},
{
id: 'stress',
title: '结构压力',
summary: '列表、表格、引用、HTML 和长段落一起压一遍。',
content: `# Structural Stress
> 这个样例用于检查复杂结构在 streaming 中是否抖动、错位或丢节点。
## 列表
1. 第一层
- 第二层
- 第三层
2. 继续
## 表格
| Framework | Route | Purpose |
| --- | --- | --- |
| Vue 3 | \`/test\` | 主调试台 |
| Vue 2 | \`/test\` | 兼容回归 |
| React | \`/test\` | 跨框架对照 |
| Angular | \`/test\` | baseline 对照 |
## HTML
<details>
<summary>展开看一段 HTML</summary>
<p>如果这里的结构错了,通常说明 HTML block / inline 的边界处理有问题。</p>
</details>
## 长段落
Markstream 现在不仅要处理单次完整渲染,还要处理 AI 场景下不断追加的 markdown 内容,所以这个页面更像一个回归驾驶舱。你可以一边编辑左侧输入,一边切换 Vue 2、React 或 Angular 的 test page,用同一段内容观察差异,判断问题是解析层、组件层,还是框架适配层。
`,
},
] as const