The Studio's code sheet and canvas are where you write and see a figure. A set of panels around them does the jobs around the figure. Data → Chart turns a table of numbers into a verified chart and can discover a process from an event log. The Diagram timeline remembers every version of a figure and compares any two of them side by side. TikZ / LaTeX rewrites a figure as LaTeX for a paper. Diagram tools and the Edit label popover let you change a diagram by clicking on it. The Mind map outliner edits a mind map from the keyboard. This page documents every control in each of those panels, what each one does to your figure, which plan each needs, and the messages you may see. The Icon library has its own page, The icon library, and Diagram Intelligence is documented in Flow-systems analysis in Studio.
At a glance
| Panel | Open it with | Shortcut | Where it appears | Plan |
|---|---|---|---|---|
| Data → Chart | Rail: Data → Chart, or drop a .csv, .tsv or JSON-records file on the canvas | ⌘D | Dialog over the canvas | Every plan. flowss Studio Agent: pick the best chart needs AI |
| Icon library | Rail: Icon library | ⌘I | Dialog over the canvas | Every plan |
| Diagram Intelligence | Rail: Diagram Intelligence | ⇧⌘X | Right-hand drawer | Every plan. Fix with the flowss Studio Agent needs AI, and so does Explain this diagram outside Mermaid flowcharts and DBML |
| Diagram timeline | Rail: Diagram timeline, or ⋮ menu Version history… | ⇧⌘H | Right-hand drawer | Every plan. Explain change needs AI |
| TikZ / LaTeX | Rail: TikZ / LaTeX, or ⋮ menu Export as TikZ / LaTeX | ⌘L | Dialog over the canvas | Starter (your own AI key) and up |
| Mind map outliner | Rail: Mind map outliner (shown while a mind map is open), or ⌘K Mind map outliner | None | Floating panel on the canvas | Every plan |
| Diagram tools | Click a label on the rendered diagram | None | Floating panel at the top right of the canvas | Every plan. Ask the flowss Studio Agent… needs AI |
| Edit label | Click a label on the rendered diagram | None | Popover beside the label you clicked | Every plan. Ask the flowss Studio Agent…, and a rename flowss cannot place in the source, need AI |
On Windows and Linux, read ⌘ as Ctrl and ⇧ as Shift. AI here means either your own AI key (Starter and up) or hosted AI points (Plus and up). See AI points and limits and Bring your own AI key.
Opening and closing panels
Every panel on this page can be reached in at least two ways:
- The tool rail. The Studio's rail, down the left of the screen, holds in order: Engines & templates, Show code, Style, Icon library, Data → Chart, Diagram Intelligence, Diagram timeline, TikZ / LaTeX, and Mind map outliner while the figure uses the mind map engine. The rail shows at most six tools. The rest, normally Diagram timeline, TikZ / LaTeX and the outliner, sit in More tools at the end of the rail, whose label shows how many it holds. On a short window, more tools fold away. Clicking a panel's rail button a second time closes it.
- The command palette. Press
⌘Kand type the panel's name. Each panel appears under Go to as a screen. Several also have a verb you can run: Open Data → Chart, Open Icon library, Export as TikZ / LaTeX, Version history… and Mind map outliner. - Keyboard shortcuts. These are listed in the table above. They toggle, so the same keys close the panel.
Escape closes the topmost open Studio surface, one per press, in this order: Settings, the embed dialog, the schema importer, the Explain dialog, the shortcut sheet, TikZ / LaTeX, Diagram Intelligence, Diagram timeline, Icon library, Data → Chart, Comments, Collaborate, the flowss Studio Agent, then the welcome tour. The Mind map outliner is not in this list: close it with its ×.
While your cursor is in a text field, such as the Data → Chart box or the code sheet, Escape does not start closing panels, so press it after clicking outside the field, or use the panel's × or Cancel. Three exceptions close from inside a text field too: the Icon library (from its search box), the full-screen Compare revisions dialog, and the Settings, embed, schema-import, Explain and shortcut dialogs.
Diagram Intelligence and the Diagram timeline share the right-hand drawer with the flowss Studio Agent, Collaborate and Comments, and only one of them shows at a time. Data → Chart, the Icon library and TikZ / LaTeX open as dialogs over the canvas.
Data → Chart
Data → Chart takes rows of data and gives you a chart built from exactly those values. It can do this three ways: with recommended figures that are generated and checked without AI, with a chart builder where you pick the type and the columns, or by letting AI design the chart. If the rows are an event log, the same panel discovers the process behind them and hands it to the BPMN studio.
Getting data in
You can bring rows in four ways:
- Paste. Paste CSV, TSV or a JSON array into the large box. Its placeholder shows the expected shape: a header row first, then one row per line.
- Upload. Click Upload CSV/TSV/JSON and pick a
.csv,.tsv,.txtor.jsonfile of up to 500 KB. - Drop a file on the canvas. Dropping a
.csvor.tsvfile anywhere on the Studio canvas opens this panel with the file already loaded. So does a.jsonfile that holds an array of row objects. Any other JSON is treated as diagram source instead. Files dropped on the canvas can be up to 2 MB. - Type. The box is a plain editor, so you can type or edit rows directly. The table re-reads on every keystroke.
The Delimiter menu, at the top right, sets how columns are separated:
| Option | Meaning |
|---|---|
| auto | Detect it (the default) |
| , | Comma |
| tab | Tab |
| ; | Semicolon, as many European spreadsheets export |
| The vertical bar (pipe) | Pipe-separated values |
JSON is recognised automatically. A JSON array of objects (one object per row) or an object holding such an array under data both work.
What the panel shows once it can read your data
As soon as the rows parse, three things appear under the box:
- A preview table of the first six rows. Each column header carries a type mark:
#for numeric columns andabcfor everything else. - A summary line, for example "48 rows · 3 numeric · 2 categorical". Every row is read when working out a column's type, not just a sample, and dates are recognised.
- Amber notes, when the data was readable but something deserves a look. Nothing is dropped silently, and the notes say what was assumed. The notes you may see:
| Note | What happened |
|---|---|
| "No delimiter could be detected, so every line was read as one column…" | Nothing separated the values, so each line became one cell. Choose the delimiter yourself if the rows should have several columns |
| "Row 7 has fewer values than the 4 columns in the header, so its missing cells were read as blanks…" | A short row was padded. The same note counts and lists several short rows at once. A blank is not a zero, so check those rows |
| "Values are separated by ";"…" | The guessed separator split the rows unevenly, or every comma sat between two digits, so the file was re-read with a better separator |
| "… writes its numbers with a decimal comma, so it was read that way…" | Numbers such as 3,5 were read as 3.5. The note names the columns and quotes an example |
| "… has 3 cells written as "NA" — read as missing values, not text, so the column stays numeric…" | Cells such as NA, n/a, NaN, null, #N/A, . or a lone dash were read as blanks rather than turning a numeric column into text. The note names the columns and the spellings it found |
Recommended figures
Under the preview, a Recommended strip offers up to eight ready-made figures, each a button showing a title and the engine that will draw it. Its heading reads "Recommended — your values embedded verbatim, verified, no AI involved". Hover over a button to see why it was suggested.
These recommendations come from the shape of your data, not from AI:
| Your data looks like | Suggested figure | Engine |
|---|---|---|
| A date or time column and a measure | A line, "*measure* over *time*" | Vega-Lite |
| One value per day | A calendar, "*value* by day" | Calendar Heatmap |
| Source, target and weight columns | A flow, "Flow of *weight*", and a directed network | Sankey flow, Graphviz |
| Source and target columns | A directed network | Graphviz |
| Parent and child columns, optionally with a size | A treemap and a tree | Treemap, Graphviz |
| Region or country codes and a value | A map, "*value* by *region*" | Choropleth |
| A single numeric column | A histogram, "Distribution of *value*" | Vega-Lite |
| Many numeric columns | A heatmap of the measures | Plotly |
| Many labels with weights | A word cloud | Word Cloud |
| Ordered stages whose values never increase | A funnel | Sales / conversion funnel |
| A status column | A board with items dealt into columns | Kanban board |
| Durations plus dependencies | "Task network with critical path" | PERT / CPM network |
| A category and a measure | Sorted bars, "*measure* by *category*" | Vega-Lite |
A category, a measure and a spread column such as sd, sem or ci95 | Bars with error bars, ranked first | Vega-Lite |
| Six or fewer categories and no negative values | A part-of-whole arc, "Share of *measure*" | Vega-Lite |
| Two categories and a measure | A heatmap | Vega-Lite |
| At least 20 rows and up to 12 categories | Box plots, "*measure* spread by *category*" | Vega-Lite |
| Dated labels, with up to 200 rows | A timeline | Timeline (history) |
| Two numeric measures | A scatter, "*y* vs *x*" | Vega-Lite |
A few rules keep these honest:
- Error bars need a clear match. They are offered only when a spread column clearly belongs to the measure. A column named for the measure, such as
weight_sdbesideweight, always wins. A baresdis used only when there is exactly one measure it could belong to. - Some spreads are never drawn as error bars. Columns named as an interquartile range (
iqr) or a median absolute deviation (mad) are never used for error bars, because neither is a distance either side of a mean. - Counts are not measures. Columns called
n,count,repsand similar are treated as counts of observations, not as a second measure. - Id columns stay off the scatter axes. Row counters and id columns are kept off the axes of the scatter plot.
Clicking a recommendation:
- Generates the figure with every value from your data written into it as given.
- Checks the generated figure against your data. If the check fails, nothing is shown and the panel says "Internal check failed — the figure was withheld rather than shown wrong", followed by the reason.
- Opens the figure in a new figure tab, so your current diagram is untouched.
- Shows a confirmation such as "Revenue by region — every value from your data", or the figure's own note, and closes the panel.
- Links the figure to the data it came from (see Refreshing a linked figure below).
Note: On the Free plan the Studio keeps three figures. If you already have three, the new tab cannot be created. A message explains this, and your existing figures are not touched. Delete a figure to make room, or upgrade to Starter for unlimited figures.
Building a chart yourself
Under the recommendations, four menus and a title field let you specify a chart:
| Control | What it sets |
|---|---|
| Chart type | flowss Studio Agent: pick the best chart (the default), Scatter, Line, Bar, Histogram, Box plot, Violin, Heatmap, Pie, Area or Density |
| X axis | Any column. It starts on the first column |
| Y axis | Any column. It starts on the first numeric column after the first column |
| Group / colour | (none) or any column, used to colour or group the marks |
| Title (optional) | A chart title, for example "Treatment response by group" |
When your columns change, for example after pasting a different file, the axis menus reset to sensible defaults. Adding rows under the same headers keeps your choices.
Click Render chart to build it. Cancel closes the panel without changing anything.
When you pick a specific chart type, the chart is built in your browser as a Vega-Lite specification, with no AI. The rows are embedded in it. Each type uses your columns like this:
| Chart type | How your columns are used |
|---|---|
| Scatter | X and Y as numeric axes, filled points, colour by Group / colour, with a tooltip listing every column |
| Line | X (numeric, or ordered categories) against Y, with points on the line |
| Bar | X as categories sorted by Y, highest first |
| Histogram | Bins the Y column (or X, if Y is empty) into at most 20 bins and counts each bin |
| Box plot | Y grouped by X, with whiskers from minimum to maximum |
| Violin | The density of Y for each X category, one violin per category side by side |
| Heatmap | X and Y as ordered categories, cells coloured by Group / colour, or by the first numeric column if none is set |
| Pie | A donut chart whose slice sizes come from Y and slice colours from X |
| Area | X against Y as a filled area |
| Density | A smoothed distribution of Y (or X), one curve per Group / colour value |
With flowss Studio Agent: pick the best chart, flowss sends the column names, your axis and colour suggestions, your title and the data to the flowss Studio Agent, which designs the chart. When the data is larger than about 55,000 characters, only the first 300 rows are sent, with a note telling the flowss Studio Agent it is a sample. The full data never leaves your browser in that case. This option needs AI on your plan and uses one AI call (one point on hosted AI).
Warning: Render chart writes the chart into the figure that is open now, replacing its source. Recommended figures always open in a new tab. If you want to keep the current diagram, start a New figure (⌥⌘N) first, or undo with⌘Zafterwards.
Open in Figure studio
The button Open in Figure studio — rows become a sheet sends your rows to the Figure studio. There they become a sheet you can clean, analyse and export as a journal-ready figure. The panel closes and the Figure studio opens with your data. The Figure studio starts on Starter. If the data is too large to hand over (the hand-off holds about 600,000 characters) or your browser's storage is unavailable, you see "Couldn't stage the data (too large or storage unavailable)." and stay in the Studio.
Discovering a process from an event log
If your rows look like an event log, a banner appears under the summary line, for example "This looks like an event log — 120 cases, 7 activities". An event log needs at least three columns: one that identifies the case, one that names the activity and one that parses as a timestamp. An optional fourth column can name the resource, meaning who or what did the work.
- Click Discover process. The button changes to Hide process.
- If two columns are equally good candidates for a role, a chooser appears in the banner for each tie (even before you click Discover process), labelled for example Activity column — tie, with the reason quoted beneath it. The roles are Case id, Activity, Timestamp and Resource. Pick the right column, and the counts in the banner update at once.
- Read the discovered process. A short plain-language description comes first, with typical times between steps. Under it, Variants lists the five most common paths through the process with how many cases took each, for example "34× Register → Triage → Treat → Discharge", and ends "…and N more variants." when there are more.
- Move the Noise filter slider to hide rare handoffs. It has four stops, 0, 0.1, 0.2 and 0.4, which set how frequent a handoff must be to stay. The line beside it reports, for example, "18 handoffs shown · 4 filtered". The model updates as you move it.
- Click Open in BPMN studio to open the discovered process as a BPMN diagram in a new browser tab, or Download .bpmn to save it as
discovered-process.bpmn.
Anything the BPMN model leaves out, such as filtered handoffs, is listed in small print under the buttons. Rows that could not join a case are reported in an amber box, for example "3 rows could not join a trace:", followed by the first three reasons and a count of the rest. Within each case, events are put in time order before the process is discovered, so a log exported out of order still mines correctly.
The BPMN studio starts on Starter. Download .bpmn works on every plan. To learn more about the process itself, see BPMN.
Refreshing a linked figure
When you generate a figure from Recommended, the panel remembers the exact rows you charted. Reopen Data → Chart later and you will see Linked figure: followed by the figure's title, with a Refresh data button.
- Click Refresh data.
- Click Upload the new file, or paste the new version of the data into the box. Its placeholder reads "Paste the NEW version of the data here — same columns, fresh rows."
- Read What changed. It lists the columns added or missing ("Added columns: …", "Missing column: …"), any column whose kind changed (for example
"dose" changed kind: numeric → text.), the change in row count ("Same row count.", "12 rows added." or "3 rows removed."), and "Up to N% of cells changed value." when values moved. It also includes the engine's own notes, such as a likely column rename. Renames are never assumed, so you have to make a new link to adopt one. The new data also gets the same amber parse notes as the original, and an upload over 500 KB is refused with the same message. - If the new data still fits the figure, click Swap in the refreshed figure. The figure tab you generated is updated (a new tab is made if you have deleted it), and the link now points at the new data.
- If it no longer fits, the panel says Can't refresh: followed by the reason, for example that a column the figure's X axis uses is gone from the new data.
The link lasts while the Studio stays open in that browser tab. Reloading the page forgets it. Cell-by-cell change tracking covers links made from up to 5,000 rows. Above that, the report says the cell-level drift was not measured.
Data → Chart limits
| Limit | Value |
|---|---|
| File upload through the panel's button | 500 KB |
| File dropped on the canvas | 2 MB |
| Rows | 200,000 |
| Columns | 256 |
| Rows in a recommended chart embedded as a chart specification | 5,000 |
| Rows in a recommended Sankey, network, treemap, map, word cloud or board | 500 |
| Data sent to AI for flowss Studio Agent: pick the best chart | About 55,000 characters, or else the first 300 rows |
When a recommendation would exceed its row limit, it is refused with a message such as "6,200 rows is more than a chart spec can carry faithfully (limit 5,000). Aggregate or sample first — nothing is dropped silently."
Diagram timeline
The Diagram timeline keeps up to 50 versions of each figure, with no work from you. You can name the important ones so they are kept for good, compare any version with what is on the canvas now, and bring an old version back.
How versions are captured
About a second and a half after you stop typing, the timeline records the figure's current source and engine as a new version. A burst of typing becomes one version, not one per keystroke. Nothing is recorded if the source is identical to the latest version, or if it is empty.
Each figure keeps 50 versions: every named version, plus the most recent unnamed ones to fill the rest. Naming a version therefore pins it, however old it gets. Versions are stored in this browser and are not synced to your other devices. For history that follows you across devices, see Version history and undo.
Reading the timeline
The header reads Diagram timeline, with a count such as 12 / 50. With no versions yet, the panel says "No revisions yet. The timeline captures a snapshot ~1.5s after each edit; keep working and history will fill in here."
Each version, newest first, shows:
- The engine it was written in, as a coloured chip.
- When: "just now", "45s ago", "12m ago", "3h ago", "6d ago", or the date for versions older than 30 days. These times refresh every minute.
- current, in green, on the version identical to what is on the canvas.
- Its name, as an amber tag, if you gave it one.
- A summary: the first meaningful line of the source (lines starting with
//or#are skipped), shortened to 80 characters. - Its size, for example "42 lines · 1318 chars".
Actions on a version
Hover over a version to show its four actions:
| Action | Tooltip | What it does |
|---|---|---|
| Compare | "Compare with current (side-by-side visual diff)" | Opens the full-screen comparison described below |
| Inline diff | "Diff vs current (inline, +/− lines)" | Shows a line-by-line diff in a strip at the bottom of the panel. Click it again to hide it |
| Name | "Name this snapshot (it'll be pinned)", or "Rename this snapshot" | Asks for a name such as v1: pre-launch. Named versions are pinned. Leave the name blank to remove it |
| Restore | "Restore this revision" | Replaces the figure's source and engine with this version. Not shown on the current version |
The inline diff strip is headed "Diff vs current", followed by the version's age. Added lines are green and marked +. Removed lines are red, struck through and marked −. Close it with the × in its header. Switching to another figure closes it too.
Restoring is an ordinary edit: ⌘Z takes it back, and the restored state becomes the newest version once it settles.
Comparing two versions
Compare opens a full-screen dialog titled "Compare revisions" followed by the engine name, with the two times underneath, for example "14:02 → 14:31".
- Before (left, red marker) draws the version you picked. After (right, green marker) draws the current canvas. Each side shows its engine and time, and each has its own Restore button ("Restore this revision to the canvas").
- Under the drawings, the full line-by-line diff of the two sources is shown. If the sources are identical, it says "No textual difference — both revisions hold identical source."
- Swap exchanges the two sides.
- Explain change asks the flowss Studio Agent to summarise in a few sentences what changed in meaning, not just in syntax. The answer appears in a strip under the header, starting "flowss Studio Agent:". This needs AI on your plan and uses one AI call. If it fails, the strip shows the reason, for example "The flowss Studio Agent couldn't summarise the change".
- Close the dialog with the ×,
Escape, or a click on the dark area around it.
Clearing the timeline
The bin button in the header ("Clear all revisions") deletes every saved version of this figure after you confirm: "Delete all saved revisions for this figure? Undo (Cmd-Z) still works in-session." This cannot be undone. Your current figure is not affected.
Note: The code sheet keeps a separate History strip in its footer. It records a version about three seconds after edits settle, keeps up to 100 per figure, and can diff or restore them, recording the current state before a restore so nothing is lost. The two histories are independent. Use whichever is to hand. See Version history and undo.
TikZ / LaTeX
TikZ / LaTeX rewrites the current figure as a self-contained LaTeX document for a paper or thesis. The result uses the standalone document class and includes every \usepackage and \usetikzlibrary it needs, so it compiles on its own with pdflatex or opens directly in Overleaf. The conversion is done by AI and works with any engine.
Converting a figure
- Open the panel with
⌘L, the rail's TikZ / LaTeX, or Export as TikZ / LaTeX in the ⋮ menu or the command palette. The title bar shows "Export as TikZ / LaTeX" and the figure's engine. - Under the heading "Convert this figure to TikZ / LaTeX", click Convert now (or Convert in the footer). A conversion takes 5 to 15 seconds, and the panel shows "Converting to TikZ / LaTeX… this can take 5–15 seconds". If it fails, the reason appears in a red box with a Try again button.
- Read the LaTeX source in the panel.
- Use the buttons along the bottom:
| Button | What it does |
|---|---|
| Convert / Regenerate | Runs the conversion (the label reads Regenerate once there is a result), for example after you edit the figure. Each run is a new AI call |
| Copy LaTeX | Copies the source to your clipboard. It shows Copied briefly |
| Download .tex | Saves the source as diagram.tex |
| Open in Overleaf | Opens a new Overleaf project in a new tab, containing the source as flowss diagram.tex, set to compile with pdflatex |
Conversions are not started automatically. Opening the panel never spends anything. The last successful result for a figure is kept for the rest of the browser session, so reopening the panel for an unchanged figure shows it at once without another AI call. Any change to the source or engine needs a new conversion.
Plan and cost
TikZ / LaTeX is the one export that uses AI, so it follows the AI rules for your plan:
| Plan | How it runs |
|---|---|
| Free | Not available, because Free has no AI |
| Starter | With your own AI key, added in Settings (⌘,). Calls on your own key are not charged points |
| Plus, Ultra, Enterprise | On hosted AI points (6 points per conversion), or on your own key if you add one |
Conversions on hosted points also have a daily limit per plan: 25 on Plus, 100 on Ultra and 200 on Enterprise. The limits reset at midnight UTC. Conversions on your own key do not count towards them. Figures whose source is larger than 30 KB cannot be converted.
Tip: AI conversion is a careful redraw, not a byte-for-byte translation. Compile the result and compare it with your figure before you submit. For a figure that must match exactly, export it as SVG or PDF and include it as a graphic. See Exporting your work.
Diagram tools
Diagram tools is a small panel for editing a diagram by pointing at it. It appears at the top right of the canvas when you click a label on the rendered diagram, and disappears when you clear the selection.
Selecting something
Click any text label on the rendered diagram, such as a node name or a class title. Three things happen at once:
- The Edit label popover opens beside the label (see below).
- The Diagram tools panel appears, headed "Diagram tools", with the selected label shown under the heading.
- The code sheet scrolls to the line that draws that element, where it can find it.
Labels that are a single character, or only numbers and punctuation, cannot be clicked. On a Cytoscape network, which is drawn on a canvas rather than as text, you tap a node instead. To clear the selection, click the × in the panel's header ("Clear selection").
The tools
| Tool | What it does |
|---|---|
| Delete | Removes the element and every connection to it. A message says what went, for example "Deleted api and 3 connections." |
| Duplicate | Adds a copy labelled with the original's label plus "(copy)", connected from the original |
| Add after | Adds a new node "Next step", connected from the selected one |
| Add child | Adds a new node "Child", connected from the selected one |
| Colour | Opens a palette of 12 colours. The chosen colour fills the element |
| Bigger | Makes the element's text larger (18 px, semi-bold) and adds padding |
| Ask the flowss Studio Agent… | Asks for a free-form instruction and has AI apply it to this element. Use it when no direct tool fits |
The palette's colours are six pastels and six strong tones:
| Pastels | Strong |
|---|---|
#fee2e2 red | #ef4444 red |
#fef3c7 amber | #f59e0b amber |
#dcfce7 green | #10b981 green |
#dbeafe blue | #3b82f6 blue |
#ede9fe violet | #8b5cf6 violet |
#fce7f3 pink | #ec4899 pink |
All tools except Ask the flowss Studio Agent… edit your source directly, with no AI, so they are instant and free. Each is an ordinary edit you can undo with ⌘Z.
Which engines the direct tools support
The direct tools rewrite the engine's own source, so they work on engines whose source they can safely read:
| Tool | Mermaid | Nomnoml | Graphviz | Other engines |
|---|---|---|---|---|
| Delete | Yes | Yes | Yes | No |
| Duplicate | Yes, except class diagrams | Yes | No | No |
| Add after | Yes | Yes | No | No |
| Add child | Yes | Yes | No | No |
| Colour | Yes | Yes | Yes | No |
| Bigger | Yes | No | No | No |
| Ask the flowss Studio Agent… | Yes | Yes | Yes | Yes |
In a Mermaid class diagram, Add after adds a new empty class (named New2, New3 and so on) with an association, Add child adds a new class that inherits from the selected one, and Delete removes the whole class with its relations. Duplicate is not available for class diagrams. For class diagrams, click the class name, not a member line.
On any other engine, a direct tool leaves your figure unchanged and says so in a notice, for example "Duplicate isn't a direct edit on plantuml yet — try asking the flowss Studio Agent below." (the notice uses the engine's short id, and calls the Colour tool "Recolour"). Use Ask the flowss Studio Agent… or edit the source.
Ask the flowss Studio Agent…
- Click Ask the flowss Studio Agent…. Your browser asks for an instruction under the heading "Free-form change to" followed by the label.
- Type the change, for example "split this into two steps: validate and store", and confirm.
- The panel shows AI editing… while it works. The change is applied to the figure it was asked about, even if you switch figures in the meantime.
This needs AI on your plan and uses one AI call. If the AI returns nothing usable, you see "The flowss Studio Agent returned no usable change for this element — try rewording the instruction."
The Edit label popover
The popover that opens when you click a label, titled Edit label, renames the element in place:
- Type the new label in the box. It opens with the current label selected.
- Press
Enteror click Save.Escape, the ×, or a click anywhere outside the popover closes it without changing anything. Saving an unchanged label does nothing.
flowss writes the new label straight into the source wherever it can find the old one there, and the Diagram tools panel follows the renamed element. If the label cannot be located safely, for example because the text on the canvas is generated rather than typed in the source, the rename is handed to AI with the instruction to change nothing else, and AI is editing this element… shows at the top right of the canvas while it works. That fallback needs AI on your plan. Without it, edit the label in the code sheet.
Click Ask the flowss Studio Agent… in the popover to switch it to "Ask the flowss Studio Agent about this element". The box then takes an instruction and the button reads Send to the flowss Studio Agent. Click Just rename to switch back. Asking AI needs AI on your plan.
Note: Switching to Ask the flowss Studio Agent… keeps the label text in the box, so the placeholder ("e.g. add a validation step before this") only shows once you clear it. Select all and type your instruction over the label.
Mind map outliner
The Mind map outliner edits a mind map as an outline, from the keyboard. It drives the Markmap (Markdown) engine: the outline and the map are the same document, so every change you make in the outliner is written straight into the source, and every change to the source shows in the outliner.
Opening it
- While the figure uses the Markmap engine, click Mind map outliner on the tool rail.
- From any figure, run Mind map outliner from the command palette. If the figure is not a mind map, the panel says "The outliner drives the mind-map engine. Start one — your current figure stays in its tab." and offers New mind map, which opens a new figure tab with a starter map. On Free, this counts towards the three-figure limit.
The panel, titled Mind map outline, floats at the top right of the canvas. Close it with its × ("Close outliner").
Editing
The top field is the map's central topic. Each row below is a topic, indented to its level.
| Key | What it does |
|---|---|
Enter | Adds a new topic after this one, at the same level |
Tab | Indents this topic under the topic above it, carrying its subtopics along |
⇧Tab | Outdents this topic one level |
Backspace on an empty topic | Removes it and moves to the topic above |
⌥↑ / ⌥↓ | Moves this topic up or down among its siblings |
↑ / ↓ | Moves between topics |
Empty topic rows show the placeholder "Topic…". Hovering over a row shows the same actions as buttons: Subtopic (Tab) adds a new subtopic directly under this topic, Outdent (⇧Tab), Move up (⌥↑), Move down (⌥↓) and Remove (children are kept). Removing a topic never removes its subtopics: they move up to take its place. Add topic at the bottom adds a topic after the last row, at that row's level. A reminder line along the bottom of the panel reads "↵ sibling · Tab subtopic · ⌫ on empty removes · ⌥↑↓ reorder".
Emoji
The smiley button at the start of a row (Set emoji) opens a picker of 24 emoji: a light bulb, a target, a star, fire, a check mark, a question mark, a warning sign, a pushpin, a rising chart, a money bag, a brain, a heart, a rocket, a microscope, books, people, a trophy, an alarm clock, a seedling, a lock, a palette, a lightning bolt, a jigsaw piece and a globe. Pick one to put it in front of the topic, or click clear to remove it. Emoji are stored as ordinary text characters in the source, so they survive copying, exporting and converting, and the mind map draws them as they are.
What the source looks like
The outliner writes standard Markdown: the central topic as a level-one heading, each top-level topic as a level-two heading, and deeper topics as indented bullets.
# Launch plan
## Research
- Interviews
- Five customers
- Market sizing
## Build
- Beta
You can edit this source directly in the code sheet too. The outliner picks up the change.
Warning: Each edit you make in the outliner rewrites the whole source in exactly this form. Anything else in a hand-written Markmap source, such as paragraphs, deeper heading levels or front matter, may not survive an outliner edit. Undo with ⌘Z if something disappears.
Diagram Intelligence, in brief
Diagram Intelligence (⇧⌘X) reads the structure of the figure on the canvas and reports metrics and findings: cycles, dead ends, unreachable states, critical paths, cut sets, schema problems and, for process diagrams, lead time, throughput and the bottleneck. Red and amber findings offer Fix with the flowss Studio Agent, and Explain this diagram gives a plain-language summary, written by flowss itself for Mermaid flowcharts and DBML and by AI for other engines. Everything it covers, engine by engine, is in Flow-systems analysis in Studio.
Tips
- Start from Recommended. For a quick chart, the recommendations are the fastest and safest route: no AI, values embedded exactly as given, checked against your data, and opened in a new tab so nothing is overwritten.
- Name the versions that matter. Before a review or a big change, name the current version in the Diagram timeline (for example "v2: sent to reviewers"). Named versions are never pruned.
- Compare before you restore. Restore replaces the whole figure. Compare shows you both drawings side by side first, and either side can be restored from there.
- Refresh, don't rebuild. When this month's export arrives with the same columns, use Refresh data on the linked figure, not a new chart. You get a report of exactly what changed, and the figure keeps its place.
- Let the tools write the source. On Mermaid, Nomnoml and Graphviz, the diagram tools write the same source you would have typed, so everything stays readable and diffable. Save Ask the flowss Studio Agent… for changes no tool covers.
- Write mind maps in the outliner.
Enter,Taband⇧Tabbuild a large map faster than writing Markdown by hand, and the map redraws as you type. - Keep TikZ for LaTeX-native figures. TikZ / LaTeX gives you editable LaTeX that matches your paper's fonts. For pixel-exact reproduction, export SVG or PDF instead.
Limits and known constraints
- Render chart overwrites. Render chart replaces the active figure's source, while recommended figures open in a new tab.
- The data link is per tab. It lives while the Studio stays open in that browser tab, and a page reload forgets it.
- Timeline versions are per browser. They are stored in this browser and do not sync. Clearing your browser's site data removes them. If the browser's storage fills up, the timeline keeps your named versions and trims the unnamed ones so the total is 25.
- The timeline caps at 50. Each figure keeps 50 versions: all named ones, plus the most recent unnamed ones.
- TikZ needs AI. It is not available on Free, and it runs on your own key on Starter. Sources over 30 KB cannot be converted, and results are AI redraws, not exact translations.
- Direct tools cover three engines. Diagram tools edit only Mermaid, Nomnoml and Graphviz directly, and Bigger only Mermaid. Every other engine needs Ask the flowss Studio Agent… or a source edit.
- The outliner is for Markmap. It drives the Markmap engine only, and it rewrites the source in its own heading-and-bullet form on every edit. For mind maps on a free-form canvas, see Weave.
- Figure caps apply. On Free, recommended figures and New mind map each create a figure tab, so they are subject to the three-figure limit.
Troubleshooting
| What you see | Where | What it means | What to do |
|---|---|---|---|
| "File too large (max 500 KB). Take a sample or pivot to a subset." | Data → Chart | The uploaded file is over 500 KB | Drop the file on the canvas instead (up to 2 MB), or reduce it first |
| "… is too large to import here (the limit is 2 MB)…" | Canvas drop | The dropped file is over 2 MB | Open it in the Figure studio, which takes up to 200,000 rows |
| "No data yet — paste rows or drop a file." | Data → Chart | The box is empty | Paste or upload rows |
| "No rows found — is the first line a header?" or "Couldn't parse: …" | Data → Chart | The text could not be read as a table | Make sure the first line holds column names, and check the delimiter |
| "That's 250,000 rows — the limit is 200,000. Take a sample or aggregate first." | Data → Chart | Too many rows | Aggregate or sample before charting |
| "300 columns — the limit is 256." | Data → Chart | Too many columns | Remove the columns you do not need |
| "Invalid JSON: …", "This JSON is an object, not a table…", "This JSON is a single value, not a table." or "The JSON array is empty — no rows to chart." | Data → Chart | The JSON is not an array of row objects | Provide [{"col": value, …}, …], or an object with the rows under data |
| "Internal check failed — the figure was withheld rather than shown wrong: …" | Recommended | The generated figure did not match your data | Try another recommendation, or use the chart builder |
| "… rows is more than a … can carry faithfully (limit …)…" | Recommended | The data exceeds that figure type's row limit | Aggregate or sample the data first |
| "AI returned no chart." or "AI returned an unknown engine …" | Render chart (AI) | The AI's answer was unusable | Try again, or choose a specific chart type |
| A message that your plan has no AI, or that hosted AI isn't included | Any AI action | Your plan does not include the AI the action needs | Add your own key (Starter and up), or upgrade. See AI points and limits |
| "Couldn't stage the data (too large or storage unavailable)." | Open in Figure studio | The data is too large to hand over, or browser storage is blocked | Save the rows as a file and open it in the Figure studio directly |
| "Can't refresh: …" | Refresh data | The new data no longer fits the figure | Read the reason. If a column was renamed, generate a new recommendation from the new data |
| "TikZ conversion limit reached for your plan (…/day on …). It resets at midnight UTC…" | TikZ / LaTeX | You have used today's hosted conversions for your plan | Wait until midnight UTC, add your own key in Settings, or upgrade |
| "No LaTeX returned", "Request failed (…)" or "The TikZ conversion failed." | TikZ / LaTeX | The conversion ran but produced nothing usable, or the request failed | Click Try again |
| "AI is unavailable. Add your own API key …" or "Sign in to use TikZ conversion on the platform key…" | TikZ / LaTeX | No AI is available for this conversion | Sign in, or add your own key in Settings (⌘,) |
| "Diagram source is too large to convert (>30 KB)" | TikZ / LaTeX | The source is over 30 KB | Split the figure, or export SVG or PDF instead |
| "Couldn't copy — the clipboard is blocked. Use Download .tex instead." | TikZ / LaTeX | The browser refused clipboard access | Use Download .tex |
| "… isn't a direct edit on … yet — try asking the flowss Studio Agent below." | Diagram tools | That tool does not support this engine | Use Ask the flowss Studio Agent… or edit the source |
| "Couldn't identify this element in the source. Try renaming it first so we have a clean handle." | Diagram tools | The label could not be matched to a single place in the source | Give the element a unique label, or edit the source |
| "Direct delete only works on the class title itself, not member lines. Pick the class header (the bold name)." | Diagram tools | You clicked a class member in a Mermaid class diagram | Click the class name instead |
| "No revisions yet…" | Diagram timeline | Nothing has been captured for this figure yet | Keep editing. Versions appear about 1.5 seconds after you pause |
