# SeeBoard **Repository Path**: codekpy/see-board ## Basic Information - **Project Name**: SeeBoard - **Description**: 面向希沃大屏(Windows 触控一体机)的笔记白板应用。基于 Tauri 2 + React 19 + TypeScript,书写流畅、界面简洁轻量,仿 Apple/GoodNotes 风格的毛玻璃菜单。 - **Primary Language**: Unknown - **License**: MPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2026-08-08 - **Last Updated**: 2026-09-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: tauri ## README # SeeBoard 大屏笔记白板 面向希沃大屏(Windows 触控一体机)的笔记白板应用。基于 **Tauri 2 + React 19 + TypeScript**,书写流畅、界面简洁轻量,仿 Apple/GoodNotes 风格的毛玻璃菜单。 ## 界面预览 | 浅色主题 · GoodNotes 单栏 | 深色黑板 · 类希沃三栏 | | --- | --- | | ![浅色主题界面预览](docs/screenshots/overview-light.png) | ![深色黑板类希沃布局预览](docs/screenshots/overview-dark-seewo.png) | ### 磨砂质感组件 动态毛玻璃菜单与浮动工具栏:书写时自动隐藏、抬笔显示,模糊强度随系统负载自适应。 ![磨砂质感组件 - 主菜单与选区浮动工具栏](docs/screenshots/frosted-glass.png) ## 功能特性 - **多种笔型**:圆珠笔(固定线宽)、钢笔(速度动态线宽)、荧光笔(半透明高亮),每种笔型独立记忆颜色与粗细 - **流畅书写**:笔画矢量存储(三次贝塞尔路径,无损缩放);**实时贝塞尔拟合预览**消除高速绘制折线割裂感;**锐角保持**(转角 > 60° 锚点切线置零,尖角不被贝塞尔抹圆) - **GoodNotes 式形状识别**:圆珠笔/钢笔按住静止 800ms,自动把手绘笔画吸附为标准形状——直线 / 矩形 / 椭圆(含圆形)/ 三角形 / 平行四边形,模板匹配分类(最近邻 / 简单机器学习)+ 几何判定(锐角检测、对边平行、直角),闭合度门槛防误报;**三角形 / 平行四边形保留真实角点**(不等腰、斜四边形),矩形保证直角 - **几何形状工具**:手动绘制 rect / ellipse / triangle / star / line / arrow,可移动、可局部擦除 - **选择与变换**:框选 / 套索多选(按几何接触判定),整组拖动、等比(默认)/ 自由(Shift)缩放、旋转;笔画经真几何变换,形状 / 图片旋转感知,框与内容一致 - **图片元素**:导入 PNG / JPG / SVG 作为可操作形状——单击显示手柄、拖动 / 旋转 / 等比 + 自由缩放、非破坏式裁切(可反复裁切);橡皮擦不生效,参与框选 / 套索多选与整组变换 - **导入 / 导出**:弹窗选择——导入工程文件(.seeboard)/ 图片;导出 本页 / 全部 × 工程文件 / 位图 PNG(内容边界 2x)/ 矢量 SVG / **PDF**(整页 9:16 白底可打印,多页输出单文件) - **9:16 竖屏页面**:兼容 PDF;进入空白页宽度铺满、顶部对齐,剩余竖向内容靠双指 / 中键平移查看 - **多渲染后端**:默认 WebGL2,可在设置中切换 Vulkan(WebGPU)/ Canvas2D,动态切换不中断书写 - **部分擦除**:橡皮擦按覆盖区域局部擦除笔迹(笔画 / 形状,段级裁剪保形),剩余极少时自动吸附整删;手掌可作大面积擦除 - **手势与输入**:双指捏合缩放 / 平移、中键拖拽平移、手掌误触拒绝、鼠标滚轮缩放(以光标为锚点) - **页面管理**:多页切换、新建 / 删除页面、操作级撤销 / 重做、自动保存 - **窗口控制**:底部主菜单栏含「最小化窗口」按钮 - **动态毛玻璃**:书写时菜单自动隐藏,抬笔后显示;按系统负载动态调整模糊强度,高负载降级为纯白不透明 ## 调试工具 形状识别调试台 `shape-playground.html`(Vite dev 下直接访问 `/shape-playground.html`): 手绘直线 / 圆 / 椭圆 / 三角形 / 矩形即时识别并显示结果(类型 / 旋转 / 尺寸),可叠加标准形状轮廓与矢量化路径(验证角点保持),用于识别算法调优。 GeoGebra 命令与工程测试台 `ggb-playground.html`(Vite dev 下访问 `/ggb-playground.html`): 使用本地 GeoGebra web3d 资源执行正常/失败命令样本,检查错误、XML、Base64 恢复和实例生命周期。 已验证的正常工程样本位于 `samples/ggb-normal-sample.seeboard`,说明见 `samples/ggb-normal-sample.md`。 当前本地 web3d 不支持 `Foot(P,d)` 和 `PerpendicularPoint(P,d)`;SeeBoard 会将已知的 `H=Foot(P,d)` / `H=PerpendicularPoint(P,d)` 兼容转换为 `H=Intersect(d,PerpendicularLine(P,d))`,后续可继续使用 `Segment(P,H)` 和 `Distance(P,H)`。 AI 生成过程中如果命令校验失败而没有 Base64,进入 GGB 编辑器时会回放原始命令并加载可用对象;Base64 加载异常或超时也会自动回退到命令回放。 ## 技术栈 | 层 | 技术 | |----|------| | 前端 | React 19 · TypeScript · Vite · Zustand | | 桌面 | Tauri 2(Rust 后端 · WebView2) | | 渲染 | WebGL2(默认)/ WebGPU / Canvas2D 统一渲染抽象 | | 导出 | 工程 JSON / PNG / SVG / PDF(jsPDF 动态导入) | ## 环境要求 - Windows 10 / 11(需 WebView2 运行时,Win11 一般自带) - Node.js 18+ - Rust 工具链(`rustup` + `cargo`) > 构建与运行缓存不落 C 盘:`seeboard.ps1` 会自动设置 `CARGO_HOME`、`RUSTUP_HOME` 及 npm 镜像源(npmmirror)。 ## 开发与构建 ```powershell # 开发模式(vite HMR + tauri dev) .\seeboard.ps1 dev # 生产构建 .\seeboard.ps1 build # 生成安装程序(MSI/NSIS,简体中文) .\seeboard.ps1 install ``` 前端单独构建:`npm run build` / `npm run dev` / `npm run lint` > 修改渲染 / 输入 / 识别算法后需重启 dev(vite HMR 无法覆盖 canvas context 状态);重新 build 前先停止运行中的 see-board.exe。 ## 项目结构 见 [structure.md](./structure.md) —— 包含完整目录树、各模块职责、架构要点与常见注意事项。 ## 数据存储 应用数据保存在 Windows 用户目录: ``` %APPDATA%\com.seeboard.app\ ├── document.json # 白板工程(页面/笔画/形状/图片,自动保存) └── preferences.json # 用户设置(渲染后端/笔型颜色粗细等) ``` 如教室电脑启用了冰点还原,建议在「设置 → 启动与窗口 → 数据保存目录」选择 D/E 盘等不会被还原的目录。切换目录时 SeeBoard 会复制现有工程和设置,旧目录保留作为回退备份;恢复默认目录时会把数据复制回系统默认目录。 ## License 本项目采用 **Mozilla Public License 2.0(MPL-2.0)** 授权,完整条款见 [LICENSE](./LICENSE)。 - Copyright (c) 2026 KzhCode - 本项目依据 Mozilla Public License 2.0 授权。 - **文件级 Copyleft**:若您修改了本项目的源文件,需以 MPL-2.0 提供这些被修改文件,但无需将整个集成产品开源。 ### 第三方组件声明 - **Linux 运行时依赖 WebKitGTK**(LGPL-2.1):本项目通过 Rust 绑定动态链接系统 WebKitGTK。该库遵循 LGPL-2.1 授权;桌面 Linux 用户默认即动态链接,可自行替换系统库。 - **Windows 运行时依赖 WebView2 Runtime**(Microsoft 专有组件):随安装包分发,遵循 Microsoft 再分发条款。 - 其余前端 / Rust 依赖均为 MIT / Apache-2.0 / BSD-3-Clause 等宽松许可证。 ### 开源许可提示 本项目的每个源代码文件(`.ts` / `.tsx` / `.css` / `.rs`)头部均带有 MPL-2.0 许可声明。使用或修改代码前请阅读 [LICENSE](./LICENSE)。