Files
mio/docs/taolun.md

62 lines
2.2 KiB
Markdown
Raw Normal View History

# Project Discussion
## Requirements
1. **Two-column layout**: Note list on the left, editor/preview on the right
2. **SQLite storage**: Using libsql client
3. **Markdown support**: Render Markdown content
4. **Glow-like effect**: Terminal Markdown rendering
## Technical Issues and Solutions
### OpenTUI Markdown Component Issue
**Problem**: OpenTUI's `<markdown>` component could not render styles correctly (tried multiple methods, all failed)
**Solution**: Implement a custom Markdown parser using OpenTUI's `<text>` components for manual rendering
### Textarea Wrap Issue
**Problem**: Default wrapMode in textarea React types is missing
**Solution**: Make textarea usable by setting `focused` attribute, access EditBufferRenderable's wrapMode option through underlying access
### Preview Mode Line Break Issue
**Problem**: Line breaks from edit mode not showing in preview
**Solution**: Handle empty lines in `renderMarkdown` function, add `<text>{" "}</text>`
### Code Block Rendering
**Problem**: Indentation rendering issues inside ``` code blocks
**Solution**: Implement code block detection and rendering logic, render each code line separately
### Multi-select Feature
**Problem**: OpenTUI's `onMouseDown` event doesn't include ctrlKey/shiftKey modifier info, and `useKeyboard` couldn't capture modifier keys
**Solution**:
- Tried using `useKeyboard` to listen for modifier keys but failed (terminal may not send separate modifier key events)
- Switched to double-click "selection mode" approach: double-click any note to toggle selection mode, click to multi-select in selection mode
### Cross-platform Database Path
**Problem**: Hardcoded database path not compatible across platforms
**Solution**: Implement `getDbPath()` function to use `~/.config/mio/cache.db` for all platforms
## Unresolved Issues
1. **Multi-select feature**: Double-click selection mode experience is not ideal, keyboard modifier key approach couldn't be implemented
2. **TypeScript type errors**: Some type errors in NoteEditor (bold attribute doesn't exist, etc.)
## Build Instructions
```bash
npm run dev # Development mode
npm run build # Build to mio.exe
```
Database location: `~/.config/mio/cache.db`