Files
mio/docs/taolun.md

65 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 项目讨论记录
## 需求确认
1. **双列布局**: 左侧笔记列表,右侧编辑器/预览
2. **SQLite 存储**: 使用 libsql 客户端
3. **Markdown 支持**: 渲染 Markdown 内容
4. **类似 Glow 效果**: 终端 Markdown 渲染
## 技术问题与解决方案
### OpenTUI Markdown 组件问题
**问题**: OpenTUI 的 `<markdown>` 组件无法正确渲染样式(尝试多种方式均失败)
**解决方案**: 实现手动 Markdown 解析器,用 OpenTUI 的 `<text>` 组件手动渲染样式
### Textarea 换行问题
**问题**: textarea 默认 wrapMode 在 React 类型中缺失
**解决方案**: 通过设置 `focused` 属性让 textarea 可用,使用 EditBufferRenderable 的 wrapMode 选项(需要通过底层访问)
### 预览模式换行问题
**问题**: 编辑模式下输入的换行在预览时不显示
**解决方案**: 在 `renderMarkdown` 函数中处理空行,添加 `<text>{" "}</text>`
### 代码块渲染
**问题**: ``` 代码块里的缩进渲染有问题
**解决方案**: 实现代码块检测和渲染逻辑,每行代码单独渲染
### 多选功能
**问题**: OpenTUI 的 `onMouseDown` 事件不包含 ctrlKey/shiftKey 修饰键信息,且 `useKeyboard` 无法捕获修饰键
**解决方案**:
- 尝试使用 `useKeyboard` 监听修饰键但失败(终端可能不发送单独的修饰键事件)
- 改用双击进入"选择模式"的方案:双击任意笔记切换选择模式,在选择模式下点击可多选
### 数据库跨平台路径
**问题**: 硬编码的数据库路径在不同平台不兼容
**解决方案**: 实现 `getDbPath()` 函数,根据 `os.platform()` 判断系统类型
- Windows: `%APPDATA%/mio/cache.db`
- Mac: `~/Library/Application Support/mio/cache.db`
- Linux: `~/.config/mio/cache.db`
## 待解决问题
1. **多选功能**: 双击选择模式的体验不够理想,键盘修饰键方案未能实现
2. **TypeScript 类型错误**: NoteEditor 中存在一些类型错误bold 属性不存在等)
## 构建说明
```bash
npm run dev # 开发模式
npm run build # 编译成 mio.exe
```
数据库位置:`~/.config/mio/cache.db`(所有平台统一)