pinstar-0.3.4 is not a library.
Visit the last successful build:
pinstar-1.1.3
pinstar
https://github.com/user-attachments/assets/6010b25e-ab7d-4144-8bb3-17e55b99bd11
A terminal-based canvas editor compatible with the Obsidian .canvas JSON specification. Built with Rust and the Ratatui framework.
DISCLAIMER
pinstar is a sub project of clin-rs project, i separated it as a different project for those who only want to use/test this feature.
Usage
Features
- Obsidian Canvas Compatability:
pinstaris compatible with any .canvas Obsidian canvases with just small issues. - Spec Compliance: Read, write, and manipulate
CanvasDataserializable schemas (text, file, link, and group nodes). - Interactive TUI: Pan, zoom, and navigate node relations inside the terminal using
ratatui. - Inline Editing: Built-in node content modification via
ratatui-textarea. - UUID Graph: Resilient node identification and edge resolution logic.
Compatability Issues
- Node titles are not protected when editing a Obsidian canvas. This is because Obsidian uses a different format for their node titles, will be fixed.
- Images render as simple nodes, i've experimented with
Kitty Image Protocolto render images but it tanked the optimization and responsiveness of the app for now no image support.
Technical Stack
- Core Framework: Ratatui for terminal rendering.
- Serialization: Serde JSON for compliant parsing of the
.canvasspec. - Identifiers:
uuidcrate for RFC 4122 compliant node tracking.
Installation
Pre-built Packages
Pre-compiled binaries and system packages (.deb, .rpm, PKGBUILD) for Debian/Ubuntu, Fedora/RHEL, and Arch Linux distributions are available on the GitHub Releases page.
Via Cargo
You can install the crate directly from crates.io:
Building from Source
Requires a standard Rust toolchain (MSRV 1.85 as specified in Cargo.toml).