Plota docs

11. Troubleshooting

SymptomCauseFix
A connector cuts straight through a shapeSmart Route is off, or the connector is elbow / straight / curved, or it has hand-placed waypointsTurn on Smart Route (R); set the connector's routing to orthogonal; right-click → Clear waypoints
Several connectors arrive at one box stacked on the same pointTheir ports were pinned by hand — pinned ports are never redistributedRe-drag the ends onto the shape's body rather than onto a specific port
The export looks different from the screenThe export dialog's Route connectors around shapes was turned off, or Include header / Include footer differRe-open Ctrl/⌘ ⇧ E and check the toggles; the preview is live
The exported PNG is blurry when printedPNG scale is 3× by defaultRaise the scale, or export SVG, or export PDF at dpi: 300
Text in the PDF cannot be selectedThe PDF artwork is a raster by designExport SVG if you need live text
A label overflows its shapeText fitting is off for that shape — typing a font size by hand sets itInspector ▸ Text fitting ▸ shrink, or resize the shape, or AI labels: shorten to fit
A label ignores **bold**It is an ERD attribute line, a table cell or a UML class compartment — content-driven stencils draw their own textUse markup in the entity/class name, not in the rows
A shape will not moveIt or its layer is lockedCtrl/⌘ L, or the padlock on the layer row
A shape has vanishedIt is hidden, or its layer isPalette → Show all layers and objects
Keyboard shortcuts do nothingFocus is in a text field, the inline editor, or a dialog — modifier-free keys are deliberately ignored thereClick the canvas first, or press Escape
The rulers do not appear with ⇧RThe tooltip is wrong; the binding is Alt RUse Alt R, or the palette (Toggle rulers and guides)
Ctrl/⌘ V did nothingThe cursor was in a text field or the inline label editor — the diagram paste handler deliberately ignores editable targetsClick empty canvas first, then paste
An import "worked" but shapes are plain rectanglesThe source used shapes outside the mapped vocabularyCheck the warnings in the import dialog; morph the rectangles (right-click → Change shape)
A whole SVG arrived as one pictureOnly SVGs exported by this app re-read as a documentAsk the sender for the original format, or trace it elsewhere
Saved diagrams disappearedThey live in localStorage; clearing site data or a different browser profile loses themUse Export ▸ Plota JSON for anything that matters
“Ollama is running but the editor cannot reach it”OLLAMA_ORIGINS does not include this page's origin — a browser-only restriction, which is why curl worksSee the CORS fix
The AI panel says it is using lexical searchThe embedding model could not be fetched, or you are in the single-file buildNothing to fix — search, suggestions and lint still work, just less semantically
“Load local LLM” is disabledNo WebGPU in this browserUse Ollama or an OpenAI-compatible server instead
A big diagram feels sluggish while draggingRouting is the expensive part of a re-render on large pagesTurn Smart Route off while you rearrange, or set the busiest connectors to elbow

Getting more detail#

  • The status bar's history item names the most recent edit; its tooltip gives the depth of the undo stack.
  • runtime_info (in the MCP server) and the copilot's provider card both report what is degraded in the current environment.
  • Import and export failures always name the format that was recognised and what went wrong inside it — read the toast, and the warning block in the import dialog.
  • If something is genuinely missing rather than broken, check Known limitations first.

Iconify search does nothing#

The Icons panel searches the bundled catalogue first and falls back to the public Iconify API when nothing matches. When that fallback fails, the panel names the cause. The common one:

The browser blocked the request because this page was opened from a file:// URL. Serve the .html over http (or set a mirror below) and Iconify search works.

A page opened by double-clicking the .html file runs on a file:// origin, where browsers refuse cross-origin requests. Serving the same file over http fixes it — any static server will do:

python3 -m http.server 8080     # then open http://localhost:8080/diagrammer.html

The other causes are named too: an HTTP status (a proxy refusing the request) and a timeout. In a network that blocks the public API, put a reachable Iconify mirror in the field the panel shows and press Retry; the bundled sets keep working either way.

Ctrl+Z in the code pane#

The code pane keeps its own undo history, separate from the diagram's. Ctrl/⌘ Z there undoes your typing a run at a time and stops at line breaks. A rewrite from outside the editor — From canvas, a template, a generated program — starts a fresh history, so undo cannot walk back into a program that has been superseded.

"Tidy Up says 0 moved"#

That is a result, not a failure. Tidy Up scores your arrangement against every layout it can produce, including an in-place tidy, and applies one only if it beats what you already have. When nothing does, the bar says "Already tidy — nothing beat your arrangement" and spends no undo step. To force a change, choose a specific algorithm in the Layout panel instead of Automatic.

Saving into a folder#

The Workspace panel offers a real folder even when the .html file is opened by double-clicking it — Chromium treats a local file as a secure context, and its directory picker works there. Choose a folder once and every save writes a .json into it. Save to file… does the same for a single path, and Save all N pages to a folder… writes one file per page.

Firefox and Safari have no directory picker at all; there the panel says so and Download .json is the route to disk.