Common Client Model for Reovim
This crate provides platform-agnostic abstractions for Reovim clients. It separates wire format (data from server) from rendered state (client-side interpretation), enabling each platform to adapt server data to its specific rendering needs.
Architecture
┌─────────────────────────────────────────────────────────────┐
│ Server (gRPC) │
│ • Raw buffer content │
│ • Cursor position, mode │
│ • Logical layout, overlays │
└─────────────────────────────────────────────────────────────┘
│
▼ Wire Format (this crate)
┌─────────────────────────────────────────────────────────────┐
│ Common Client Model │
│ • LogicalLayout, LogicalOverlay (from server) │
│ • WindowTree, RenderedOverlay (client interpretation) │
│ • Panel, Layout traits │
└─────────────────────────────────────────────────────────────┘
│
▼ Platform implements traits
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ TUI │ │ Web │ │ Android │
│ (Terminal) │ │ (DOM) │ │ (Compose) │
└─────────────┘ └─────────────┘ └─────────────┘
Modules
- [
geometry]: Screen positions, sizes, and rectangles - [
direction]: Navigation and split directions - [
wire]: Wire format types from the server