# 项目讨论记录 ## 需求确认 1. **双列布局**: 左侧笔记列表,右侧编辑器/预览 2. **SQLite 存储**: 使用 libsql 客户端 3. **Markdown 支持**: 渲染 Markdown 内容 4. **类似 Glow 效果**: 终端 Markdown 渲染 ## 技术问题与解决方案 ### OpenTUI Markdown 组件问题 **问题**: OpenTUI 的 `` 组件无法正确渲染样式(尝试多种方式均失败) **解决方案**: 实现手动 Markdown 解析器,用 OpenTUI 的 `` 组件手动渲染样式 ### Textarea 换行问题 **问题**: textarea 默认 wrapMode 在 React 类型中缺失 **解决方案**: 通过设置 `focused` 属性让 textarea 可用,使用 EditBufferRenderable 的 wrapMode 选项(需要通过底层访问) ### 预览模式换行问题 **问题**: 编辑模式下输入的换行在预览时不显示 **解决方案**: 在 `renderMarkdown` 函数中处理空行,添加 `{" "}` ### 代码块渲染 **问题**: ``` 代码块里的缩进渲染有问题 **解决方案**: 实现代码块检测和渲染逻辑,每行代码单独渲染 ### 多选功能 **问题**: 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`(所有平台统一)