Skip to main content

Editing Concepts

Concepts are the fundamental building blocks of concept maps. They represent ideas, objects, or entities.

Creating Concepts

In Graph View

  • Right-click anywhere on the canvas and select "Add Concept" from the context menu
  • Or double-click anywhere on the canvas to create a new concept

In Text View

  • Type a new concept name in the structured text format
  • Concepts are automatically created when you define relationships

Editing Concept Labels

  • Double-click on a concept node to edit its label inline
  • Or select the concept and use the concept editor panel
  • When selected, a floating toolbar appears with quick editing options

Triple Entry Mode (Fast Keyboard Creation)

When editing a concept label, you can use triple entry mode to quickly create relationships and new concepts:

  1. Double-click on a concept node to edit its label
  2. Type a triple in the format: "Noun verb phrase Noun" (e.g., "Diagrams explain Architecture")
  3. Press Enter or click outside the input

The system will automatically:

  • Update the current concept label to the first noun ("Diagrams")
  • Create a new relationship with the verb phrase ("explain")
  • Create a new concept with the second noun ("Architecture")
  • Automatically enter edit mode on the new concept so you can continue typing more triples

Example workflow:

  1. Double-click a concept and type: "Diagrams explain Architecture"
  2. Press Enter → Creates relationship and new concept
  3. The new "Architecture" concept is automatically in edit mode
  4. Type: "Architecture describes Structure"
  5. Press Enter → Creates another relationship and concept
  6. Continue chaining triples for rapid diagram creation!

This makes it much faster to create complex diagrams using just the keyboard, without needing to use the mouse to drag connections.

Concept Properties

Each concept can have:

  • Label: The display name
  • Position: X and Y coordinates (in graph view)
  • Notes: Markdown-formatted notes
  • Metadata: Custom key-value pairs
  • Visual Styling: Custom colors (fill, border, text) and line styles

Visual Customization

When a concept is selected, a floating toolbar appears above or below the node with options to customize its appearance:

Color Customization

  • Fill Color: Background color of the concept node
  • Border Color: Color of the node border
  • Text Color: Color of the concept label text

Line Style Settings

  • Border Style: Choose from solid, dashed, dotted, or long-dash styles
  • Border Thickness: Adjust from 1px to 8px

All changes are applied instantly and saved automatically.

Editing Notes

  1. Select a concept
  2. Click "Edit Notes" in the concept editor panel
  3. Write your notes in Markdown
  4. Save changes

Editing Metadata

  1. Select a concept
  2. Click "Edit Metadata" in the concept editor panel
  3. Add key-value pairs
  4. Save changes

Deleting Concepts

  • Select a concept and press Delete or Backspace
  • Or right-click and select "Delete"

Deleting a concept will also delete all relationships connected to it.

Note: All deletions can be undone using Cmd+Z (Mac) or Ctrl+Z (Windows/Linux). See Undo and Redo for more information.

Aliases (Ghost Nodes)

A single converter parameter can end up feeding a dozen other converters scattered across a large diagram — a discount rate, a shared capacity constant. Drawn as one node, that means a dozen long influence arrows trailing across everything else. An alias solves this by letting that same parameter be drawn a second (or third, or tenth) time, right next to each cluster of converters that uses it, without duplicating the underlying variable. This is the same idea Stella and iThink call a ghost.

Creating an Alias

  • Select an existing converter, then click the ghost icon (Create alias) in the floating toolbar
  • A new, independently positioned instance of that converter appears next to the original; drag it wherever it's actually useful — typically beside the cluster of converters that reference it
  • Draw an influence arrow to or from the alias exactly as you would to the original; the relationship it creates is still recorded as being between the same two concepts, so simulation, unit checks, and export are completely unaffected by how many times a parameter is drawn

Creating an alias is only offered for converters. Stocks, flows, clouds, and plain concepts can't be aliased in this release, and a pipe (stock/flow) connection can never attach to an alias — pipes always terminate on the original instance.

The Layout Can Create Aliases Too

Some parameters have no good position — a converter feeding two things at opposite ends of a large diagram cannot be near either of them, and no amount of rearranging fixes that. Running the System Dynamics layout will therefore sometimes draw such a converter more than once, adding alias instances near each group of things that use it and attaching each of those influence arrows to the nearest drawing.

There are a few things worth knowing about these:

  • They are ordinary aliases. They look the same, behave the same, and are removed the same way as ones you create yourself. Collaborators see them appear when you run the layout, and they export to XMILE like any other ghost.
  • The layout is conservative about it. A converter only gets an extra drawing when duplicating it measurably shortens its arrows by more than the extra node costs a reader — two ghosts where one node would have done is a worse diagram, not a better one. Most converters never get one.
  • A single undo reverses the whole run, the extra drawings included, along with the node repositioning from the same run.
  • If you don't want one, delete it (select it, press Delete). As always, that removes only the drawing — no relationship is ever deleted. Note that the layout doesn't remember the deletion: running it again on the same model will add the drawing back.
  • Your own aliasing decisions win. If you have aliased a converter by hand, or re-pointed one of its edges onto an alias yourself, the layout leaves that converter completely alone — it will not add, move, re-point or remove anything about it.

Running the layout twice on an unchanged model changes nothing: it converges on the set of drawings the current model calls for rather than accumulating one more each time.

Recognizing an Alias

Every alias renders with a dashed border and muted fill, consistently, so it's never mistaken for a second, independent variable. The original instance always keeps its ordinary, undecorated styling. Editing the label, equation, units, or notes from either the original or any alias updates the one underlying concept — every instance stays in sync automatically. This is true of aliases the layout created as well as ones you created; there is no visible difference between them, deliberately — what matters to a reader is that it is the same variable drawn twice.

Deleting an Alias vs. Deleting the Concept

This is the safety property that makes aliasing predictable:

  • Deleting an alias (select it, press Delete) removes only that drawing. The concept, its other aliases, and every relationship attached to it are untouched. If a relationship was pinned to the deleted alias, it simply re-renders against the concept's original position instead.
  • Deleting the original instance removes the concept itself — and every alias of it, along with all of its relationships — exactly as deleting an unaliased concept always has.

Because the original instance is the only one whose deletion has that wider effect, and it's the only instance without the dashed styling, you can always tell which one carries that power at a glance.

Re-pointing an Existing Edge to an Alias

Creating an alias only affects new edges you draw to or from it — editing an existing edge to redirect it onto an alias uses a separate control:

  • Select the influence edge, then use the ghost-icon dropdown at either end of the floating toolbar (source end on the left, target end on the right)
  • Choose one of that end's own concept's aliases to re-point that end to it — the edge immediately renders from/to the alias's position instead
  • Choose "Concept's own position" at any time to clear the pin and return that end to the original instance

Only the edge's rendered position changes. Its polarity, labels, style, and identity as a relationship are untouched, and which two concepts it logically connects (visible in the editor) never changes either. Each end can be pinned independently, so a single edge can run between two aliases, an alias and an original instance, or neither. This control is only offered for influence edges — a pipe (stock/flow) connection can never attach to an alias, matching the same rule as alias creation.

Move Distant Edges to a New Alias

Cleaning up a single cluttered parameter one edge at a time is tedious once it has several long edges. Selecting a converter's original instance adds a second toolbar action for exactly this:

  • Select the converter's original instance (not one of its existing aliases), then click Move distant edges to a new alias in the floating toolbar
  • Confirm the count shown in the dialog — it names exactly how many edges are about to move, so the outcome is predictable before you commit
  • One new alias appears, roughly centered on wherever those edges were heading; drag it the rest of the way into place

The gesture only moves edges that stand out as meaningfully longer than the concept's other edges — if the longest edges aren't a clear outlier compared to the rest, nothing moves and no alias is created, since splitting off edges that aren't actually distant wouldn't help. It also never takes every eligible edge: at least one edge always stays attached to the original instance, so the gesture can never leave it edgeless. Up to 3 edges move at a time, even if more would otherwise qualify. An edge already pinned to a different alias isn't touched — re-point it individually if you want to move it too. The button is hidden once there are no eligible edges left to move, or once none of them are distant enough to be worth splitting off, and it's only ever offered from the original instance, never from an existing alias's own toolbar.

The whole gesture — creating the alias and re-pointing every edge it selects — undoes and redoes as a single step.