Since you mentioned you're Neovim nerds: you may enjoy this: I build a declarative rendering engine on top of Neovim itself: morph.nvim [1]. Every Neovim install already has a grid, extmarks, floating windows, and a Lua runtime. On top of morph, I've dog-fooded 14+ interactive TUI applets -- docker, k8s, systemd, AWS, GitHub, HN reader [2].
Aside from declarative rendering, morph does a lot of other stuff: region-specific keymaps, read-only regions, extmark creation/managment/etc.
Since you mentioned you're Neovim nerds: you may enjoy this: I build a declarative rendering engine on top of Neovim itself: morph.nvim [1]. Every Neovim install already has a grid, extmarks, floating windows, and a Lua runtime. On top of morph, I've dog-fooded 14+ interactive TUI applets -- docker, k8s, systemd, AWS, GitHub, HN reader [2].
Aside from declarative rendering, morph does a lot of other stuff: region-specific keymaps, read-only regions, extmark creation/managment/etc.
[1] https://github.com/jrop/morph.nvim
[2] https://github.com/jrop/tuis.nvim