[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81822":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":12,"stars7d":12,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":16,"compositeScore":17,"rankGlobal":9,"rankLanguage":9,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":9,"pushedAt":9,"updatedAt":23,"readmeContent":24,"aiSummary":25,"trendingCount":14,"starSnapshotCount":14,"syncStatus":12,"lastSyncTime":26,"discoverSource":27},81822,"pinstar","reekta92\u002Fpinstar","reekta92","Canvas file editor compatible with Obsidian .canvas files.",null,"Rust",34,2,31,0,3,6,1.43,"GNU General Public License v3.0",false,"main",true,[],"2026-06-12 02:04:20","# pinstar\n\n\u003Cimg width=\"1888\" height=\"1012\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F85c0c26c-f7f6-4e5a-9538-dc8f603e0659\" \u002F>\n\nA terminal-based diagram editor for **Obsidian Canvas**, **Mermaid**, **Graphviz DOT**, and **PlantUML** files. Built with Rust and the Ratatui framework.\n\n## Disclaimer\n`pinstar` is a sub-project of [clin-rs](https:\u002F\u002Fgithub.com\u002Freekta92\u002Fclin-rs). Separated for standalone use\u002Ftesting.\n\n## Usage\n```bash\npinstar \u003CFILE>.canvas|.md|.dot|.puml\n```\n\nIf the file doesn't exist, pinstar creates an empty diagram in the detected format.\n\n### Supported Formats\n| Extension | Format | Layout |\n|-----------|--------|--------|\n| `.canvas` | Obsidian Canvas JSON | Free-form, force-directed |\n| `.md`, `.mermaid` | Mermaid flowchart syntax | Hierarchical (auto) |\n| `.dot`, `.gv` | Graphviz DOT syntax | Hierarchical (auto) |\n| `.puml`, `.plantuml` | PlantUML activity syntax | Hierarchical (auto) |\n\n## Features\n- **Multi-Format Support**: Read, write, and edit Canvas, Mermaid, DOT, and PlantUML diagrams\n- **Spec Compliance**: Full Obsidian `.canvas` JSON support (text, file, link, and group nodes)\n- **Interactive TUI**: Pan, zoom, and navigate node relations inside the terminal using `ratatui`\n- **Inline Editing**: Built-in node content editing via `ratatui-textarea`\n- **Node Shapes**: Rectangle, Diamond, Circle, Cylinder, Stadium (flowchart formats)\n- **Edge Styles**: Solid, Dashed, Dotted\n- **Color Presets**: 10 colors (Default, Red, Orange, Yellow, Green, Cyan, Blue, Purple, Magenta, White)\n- **Hierarchical Layout**: Automatic layout for Mermaid, DOT, and PlantUML with 4 orientations\n- **Undo\u002FRedo**: Full undo\u002Fredo stack\n- **Raw Editor**: Split-pane JSON\u002Ftext editor with live sync\n\n## Keybindings\n\n### Navigation\n| Key | Action |\n|-----|--------|\n| `Arrow keys` \u002F `hjkl` | Select adjacent nodes |\n| `Ctrl+J` \u002F `+` | Zoom in |\n| `Ctrl+K` \u002F `−` | Zoom out |\n| `Ctrl+F` | Fit all nodes into view |\n| `Alt+Enter` | Cycle pane focus |\n\n### Editing\n| Key | Action |\n|-----|--------|\n| `i` \u002F `Enter` | Edit selected node content |\n| `r` | Rename node (ID) |\n| `s` | Resize node |\n| `a` | Open context menu |\n| `x` | Delete selected node |\n| `o` | Set node color |\n| `p` | Set node shape (flowchart only) |\n\n### Connections\n| Key | Action |\n|-----|--------|\n| `c` | Create connection from selected node |\n| `d` | Delete connection to target node |\n| `b` | Delete all connections on selected node |\n\n### Global\n| Key | Action |\n|-----|--------|\n| `Ctrl+S` | Save diagram |\n| `Ctrl+Z` | Undo |\n| `Ctrl+Y` \u002F `Ctrl+Shift+Z` | Redo |\n| `Ctrl+R` | Cycle orientation (flowchart) \u002F Reload from disk (canvas) |\n| `Ctrl+G` | Toggle background grid |\n| `Ctrl+E` | Toggle raw editor pane |\n| `Ctrl+X` | Toggle external editor mode |\n| `Ctrl+L` | Toggle spatial lock |\n| `Ctrl+O` | Toggle orthogonal arrows (canvas only) |\n| `Esc` \u002F `q` | Dismiss \u002F deselect \u002F quit |\n| `?` | Toggle help |\n\n## Mouse Controls\n\n| Action | Effect |\n|--------|--------|\n| Left-click | Select node |\n| Left-double-click | Edit node content |\n| Left-drag (on node) | Move node |\n| Left-drag (empty) | Pan canvas |\n| Right-click (on node) | Node context menu |\n| Right-click (on edge) | Edge context menu |\n| Right-click (empty) | Add node menu |\n| Right-drag | Selection rectangle (multi-select) |\n| Middle-click drag | Pan canvas |\n| Scroll | Zoom in \u002F out |\n\n## Node & Edge Types\n\n### Nodes\n- **Text** — Standard text node with configurable shape and color\n- **File** — Embedded file reference (Canvas only)\n- **Link** — Embedded URL reference (Canvas only)\n- **Group** — Container for grouping child nodes (Canvas only)\n\n### Shapes (flowchart formats)\nRectangle · Diamond · Circle · Cylinder · Stadium\n\n### Edge Styles\nSolid · Dashed · Dotted\n\n### Orientations (flowchart)\nTop-Down · Left-Right · Right-Left · Bottom-Up\n\n### Colors (10 presets)\nDefault · Red · Orange · Yellow · Green · Cyan · Blue · Purple · Magenta · White\n\n## Known Issues \u002F Compatibility\n- Node titles may not be preserved when editing Obsidian Canvas files (Obsidian uses a different title format)\n- No image rendering — images display as simple nodes\n- Diamond and Stadium shapes not available in PlantUML\n- Color editing not available in Mermaid or PlantUML syntaxes\n- Groups only supported in Canvas format\n\n## Technical Stack\n- **Framework**: [Ratatui](https:\u002F\u002Fgithub.com\u002Fratatui\u002Fratatui) v0.30 for terminal rendering\n- **Terminal**: [Crossterm](https:\u002F\u002Fgithub.com\u002Fcrossterm-rs\u002Fcrossterm) v0.29 for cross-platform input\n- **Serialization**: [Serde JSON](https:\u002F\u002Fgithub.com\u002Fserde-rs\u002Fjson) for Canvas spec parsing\n- **Text Editing**: [ratatui-textarea](https:\u002F\u002Fgithub.com\u002Frhysd\u002Fratatui-textarea) for inline editing\n- **Parsing**: `regex` for multi-format parsers\n- **Identifiers**: `uuid` crate for RFC 4122 compliant node tracking\n\n## Installation\n### Pre-built Packages\nPre-compiled binaries and system packages (`.deb`, `.rpm`, `PKGBUILD`) for Debian\u002FUbuntu, Fedora\u002FRHEL, and Arch Linux are available on the GitHub **[Releases](https:\u002F\u002Fgithub.com\u002Freekta92\u002Fpinstar\u002Freleases)** page.\n\n### Via Cargo\n```bash\ncargo install pinstar\n```\n\n## Building from Source\nRequires Rust toolchain (MSRV 1.85).\n\n```bash\ncargo build --release\n```\n","pinstar 是一个基于终端的图表编辑器，支持 Obsidian Canvas、Mermaid、Graphviz DOT 和 PlantUML 文件格式。该项目使用 Rust 语言和 Ratatui 框架构建，提供了多格式支持、交互式文本用户界面以及全面的撤销\u002F重做功能等特性。它能够读取、写入并编辑多种类型的图表文件，并且完全兼容 Obsidian 的 `.canvas` JSON 格式。此外，pinstar 还具备节点内容直接编辑、多种节点形状与边样式选择等功能，非常适合在命令行环境中进行复杂流程图或思维导图的设计与调整。无论是需要快速绘制技术架构图还是整理笔记中的关系图，pinstar 都是一个强大而灵活的选择。","2026-06-11 04:06:50","CREATED_QUERY"]