Fresco - Vue TUI Framework
A high-performance Terminal User Interface framework for Vue.js, similar to React Ink but built with Rust for performance.
Features
- Terminal Control: Cross-platform terminal handling via crossterm
- Flexbox Layout: Layout engine powered by taffy
- CJK Support: Full Unicode text handling including Japanese IME
- Efficient Rendering: Double-buffered differential rendering
Architecture
┌─────────────────────────────────────────────────────────┐
│ Vue Components │
│ (Box, Text, Input) │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ Vue Custom Renderer │
│ (TypeScript) │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ NAPI Bindings │
│ (Rust <-> Node.js bridge) │
└─────────────────────────────────────────────────────────┘
│
┌─────────────────┼─────────────────┐
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ Terminal │ │ Layout │ │ Render │
│ (backend, │ │ (taffy, │ │ (tree, │
│ buffer) │ │ flex) │ │ diff) │
└───────────────┘ └───────────────┘ └───────────────┘
│ │
▼ ▼
┌───────────────┐ ┌───────────────┐
│ Input │ │ Text │
│ (keyboard, │ │ (width, │
│ mouse, ime) │ │ segment) │
└───────────────┘ └───────────────┘