Files
mio/docs/taolun.md

2.1 KiB
Raw Blame History

项目讨论记录

需求确认

  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 属性不存在等)

构建说明

npm run dev    # 开发模式
npm run build  # 编译成 mio.exe

数据库位置:~/.config/mio/cache.db(所有平台统一)