feat: bundle dot-watch helper for live graphviz .dot -> PNG re-render in Studio
pi-studio renders Mermaid natively but has no DOT renderer. Its markdown preview displays local PNG/JPG/GIF/WEBP images, so dot-watch closes the loop for Graphviz: edit .dot -> auto-render <name>.png -> Studio refresh-from-disk shows the update. Uses mtime polling (no inotify dep). - rootfs/usr/local/bin/dot-watch: the helper (executable) - Dockerfile.base: COPY + chmod, following the studio-expose pattern - README.md: 'Graphviz diagrams in Studio' subsection - CHANGELOG.md: Unreleased entry graphviz was already in the base image; no new package.
This commit is contained in:
@@ -276,6 +276,26 @@ Assuming the compose file publishes `127.0.0.1:8765:8765` (see method B):
|
||||
> which is **not** in `-studio` (only the planned `-studio-tex`). HTML
|
||||
> export, KaTeX, Mermaid, and all REPL features work without it.
|
||||
|
||||
### Graphviz diagrams in Studio: `dot-watch`
|
||||
|
||||
pi-studio renders **Mermaid** natively but has **no Graphviz/DOT renderer**.
|
||||
Its markdown preview *does* render local image links (`.png`/`.jpg`/`.gif`/
|
||||
`.webp`), so the workflow for Graphviz is: write a `.dot` file, render it to
|
||||
PNG with `dot`, and preview the PNG (directly, or embedded in a markdown
|
||||
file). The bundled **`dot-watch`** helper automates the re-render so edits
|
||||
show up on Studio's *refresh-from-disk*:
|
||||
|
||||
```bash
|
||||
dot-watch graph.dot # dot engine, 150 dpi -> graph.png
|
||||
dot-watch graph.dot neato 200 # pick layout engine + dpi
|
||||
```
|
||||
|
||||
It polls the file's mtime (no `inotify` dependency) and regenerates
|
||||
`<name>.png` on every save, printing timestamped status and indenting any
|
||||
DOT syntax errors instead of crashing. Then in Studio: open the PNG (or a
|
||||
`.md` that embeds it) and hit **refresh-from-disk** after each edit.
|
||||
Note: SVG is **not** in Studio's local-image-link allowlist — use PNG.
|
||||
|
||||
## docker-compose.yml — basic shape
|
||||
|
||||
```yaml
|
||||
|
||||
Reference in New Issue
Block a user