UML Wizard logo

UML Wizard User Manual

UML Wizard draws class, sequence, state machine, activity, use case, component and deployment diagrams, organised in projects. It turns class diagrams into source code and source code into class diagrams, and exchanges diagrams with OpenAPI and PlantUML. It runs on Windows, macOS and Linux.

1. Getting started

When no project is open, for example when UML Wizard starts, the main area shows three cards:

The panel on the left lists your Recent Projects; click one to open it. A project file can also be passed on the command line, and is opened at start-up.

Once a project is open, create a diagram with the + button on the toolbar (or Diagram → New Diagram), pick a tool on the drawing toolbar and click the canvas.

New to UML? Help → Learn UML explains each kind of diagram and its notation.

2. The window

The Project Explorer and the tabs stay in step: activating a tab selects its diagram in the Project Explorer, and clicking a diagram in the Project Explorer opens it, or activates its tab when it is already open. Dragging a diagram to a folder does not open it, and selecting a diagram with the arrow keys leaves no tab active until Enter opens it.

On macOS the menus are in the window as on the other platforms, and the application menu in the menu bar (UML Wizard) has About UML Wizard and the standard items, including Quit (⌘Q).

3. Projects and diagrams

Projects

Recent projects

File → Recent Projects lists the 10 most recently opened or created projects, most recent first (Alt+F, P, then 1–9 or 0). While no project is open, the Project Explorer lists them too. A project that no longer exists can be removed from the list when you pick it; Clear Recent Projects empties the list.

Organising diagrams

Diagram properties and tagged values

Select a diagram in the Project Explorer and choose Diagram → Properties… to edit its name, description, author and tagged values (name/value pairs). New diagrams take the project author. Classes, attributes and operations have tagged values too: in a class's Edit… dialog, the tag button next to the stereotype shows the class's, and the one on each attribute or operation row shows that member's. Rows without a name are dropped. Tagged values explains what they are for.

Tabs

Open diagrams, their order and the active tab are saved with the project and restored when it is opened. Diagram → Close All Diagrams closes every tab, asking to save unsaved changes first; the project stays open.

4. Drawing diagrams

Adding and connecting elements

Editing text

Text typed in place uses UML notation:

ElementNotationExample
Attributevisibility name: Type = default+name: string = ""
Operationvisibility name(param: Type, …): ReturnType#pay(amount: decimal): bool
Static, abstractprefix static or abstractstatic +count: int
Visibility+ public, - private, # protected, ~ package
Lifelinename : Typeshop : ShopController
Transitiontrigger [guard] / effectpay [valid] / capture()

Moving and resizing

Drag an element, or select it and press the arrow keys (1 unit; with Shift a 20-unit grid step). Drag the handle at the bottom-right of a selected element to resize it: classes in width, notes, text boxes and resizable nodes (states, actions, use cases, system boundaries, components, deployment nodes, devices, execution environments, artifacts, fork/join bars) in width and height. Lifelines move horizontally and messages vertically. A system boundary, node, device or execution environment takes the elements inside it along.

Clipboard and deleting

Cut, copy and paste elements with Ctrl+X, Ctrl+C and Ctrl+V, the toolbar or right-click. Elements paste into diagrams of their own type; notes and text boxes paste into any diagram. Right-click the background to paste at that point. Delete (⌫ on macOS) removes the selected element, and Undo (Ctrl+Z) and Redo (Ctrl+Y; ⌘⇧Z on macOS) step through every change.

Notes and text boxes

Panning and zooming

Drag empty space, or use the middle button or the wheel, to pan. Ctrl+wheel (⌘+wheel on macOS), Ctrl+Plus, Ctrl+Minus, Ctrl+0 or the toolbar zoom; the zoom level button resets to 100 %, and Fit shows the whole diagram.

5. Formatting and arranging

Fonts

Select an element and choose Format → Font… (or the toolbar's Font button, or right-click it → Font…) to set its font family, size, bold and italic. Format → Diagram Font… (or right-click the background) sets the font of every element that has no font of its own. Class names stay bold and abstract elements italic whatever the font.

Fill and border

Select an element and choose Format → Shape… (or right-click it → Shape…) to set its fill colour, border colour and border thickness: click a colour's swatch to open the colour picker, or type #RRGGBB. Each part can stay on Default, the colour of the current scheme for that kind of element (blue classes, green interfaces, yellow notes, …), which follows the light or dark theme; custom colours are the same in both themes and in exports. Text on a custom fill turns dark or light, whichever reads better. Text boxes have no fill or border until they are given one.

The colour picker

Wherever UML Wizard asks for a colour, the swatch next to the #RRGGBB box opens the colour picker:

OK uses the colour; Cancel keeps the one you had.

Line colour and thickness

Select a relationship, message or connector and choose Format → Line… (or right-click it → Line…) to set its colour and thickness, or keep Default (the scheme's line colour, thickness 1.3). Arrowheads, triangles and diamonds are drawn in the line's colour and thickness, and dashed lines keep their dashes in proportion. The toolbar has a button for each: Shape (paint bucket) for the selected shape and Line (line weights) for the selected connector.

Stacking order

Select a node (a class, lifeline, state, action, use case, component, deployment node, …), note or text box and use Format → Bring to Front (Ctrl+Shift+]), Bring Forward (Ctrl+]), Send Backward (Ctrl+[) or Send to Back (Ctrl+Shift+[), or the stacking buttons on the toolbar. Forward and backward pass the nearest overlapping node. Containers (system boundaries, deployment nodes, devices, execution environments) are stacked among themselves, always under the other nodes, and a container nested in another always stays above it. Notes and text boxes are stacked together, always above the UML elements.

Arrange Diagram

Format → Arrange Diagram (or right-click the background) rearranges the whole diagram so that it reads well, as one step that Undo takes back:

Only positions change (and the size of containers); connectors stay straight lines.

Theme

View → Theme switches between Light and Dark, or System (the default) to follow the operating system, also when it changes while UML Wizard runs. Diagrams are drawn in dark colours in dark mode; exported images always use the light colours. File → Preferences… also sets the theme, the font of the user interface and the default colours of diagrams (see Preferences).

6. Diagram types

UML Wizard draws a subset of UML 2.x (UML 2.5.1) notation. It does not claim full conformance to the OMG specification and has no XMI import or export. Help → About UML Wizard shows the supported version.

Class diagrams

ConstructSupported
ClassifiersClass, abstract class (italic name), interface («interface»), enumeration (literals as attributes), custom stereotype («…»)
Attributesvisibility name: Type = default; static (underlined)
Operationsvisibility name(param: Type, …): ReturnType; static (underlined), abstract (italic)
RelationshipsAssociation, directed association, generalization, realization, aggregation, composition, dependency, with a label and source and target multiplicities
Tagged valuesOn the diagram, classes, attributes and operations (edited in the dialogs, not drawn)
Web API endpointsAn operation with an HTTP method and path is drawn as «GET /orders/{id}» +getOrder(id: string): Order (see OpenAPI)

Sequence diagrams

ConstructSupported
LifelinesObject (name : Type), actor
MessagesSynchronous, asynchronous, reply, create («create»); numbered in the order they are drawn from top to bottom

State machine diagrams

ConstructSupported
StatesSimple state (rounded rectangle), initial pseudostate, final state, choice
TransitionsLabel trigger [guard] / effect; a transition may return to its own state (drawn as a loop)

Activity diagrams

ConstructSupported
NodesAction, initial node, activity final, decision/merge, fork/join bar (horizontal or vertical)
EdgesControl flow with an optional guard, e.g. [approved]

Use case diagrams

ConstructSupported
NodesActor (stick figure), use case (ellipse), system boundary (the use cases inside move with it)
RelationshipsAssociation, «include», «extend», generalization (between actors or between use cases)

Component diagrams

ConstructSupported
NodesComponent («component» with the component icon), interface (lollipop circle)
RelationshipsDependency, realization (component to interface), association

Deployment diagrams

ConstructSupported
NodesNode (3-D box), device («device»), execution environment («executionEnvironment»); they contain other elements and can be nested
Artifacts and componentsArtifact («artifact» with the document icon), component
RelationshipsCommunication path (with a protocol label, e.g. HTTPS), «deploy», «manifest», dependency

An artifact inside an execution environment or node is deployed on it; «deploy» shows the same thing with an arrow.

Every diagram type

Notes (UML comments, attached to elements and connectors with dashed lines), text boxes (free labels, not UML), fonts, fill, border and line colours. The colours and text boxes are not UML notation.

Connections that are refused

Nothing leaves a final node or enters an initial node; only transitions loop back to their own node; system boundaries are not connected; «include» and «extend» connect use cases; generalizations connect two actors or two use cases; realizations end at an interface; «deploy» goes from an artifact to a node, device or execution environment, «manifest» from an artifact to a component; communication paths connect nodes.

Not supported

7. Tagged values

A tagged value is a name and a value, such as status = draft, attached to a model element. It is UML's way of recording information the notation has no place for. UML Wizard keeps tagged values on diagrams, classes (of every kind: classes, abstract classes, interfaces and enumerations), attributes and operations. They are saved with the project, but they are not drawn: they are notes about the model, not part of the picture.

Editing them

OnWhere
A diagramSelect the diagram in the Project Explorer and choose Diagram → Properties…; the tagged values are at the bottom of the dialog.
A classOpen the class's Edit… dialog (double-click its name, press Enter or right-click it) and click the tag button next to the stereotype.
An attribute or operationIn the same dialog, click the tag button at the end of the attribute's or operation's row.

The class dialog shows the tagged values of one element at a time, below the lists of attributes and operations; its heading says whose they are. In every place they are edited the same way:

Tagged values UML Wizard uses

Most tagged values are yours, and UML Wizard only keeps them. A few are set and read by UML Wizard itself:

NameOnSet byUsed by
openapi.…Diagrams, classes, attributes, operations OpenAPI import: whatever the description says that the class diagram has no place for, e.g. the API's description and contact, its servers and security, descriptions and examples of schemas and properties, and responses other than the first successful one. OpenAPI export, which writes them back, so that importing and exporting an OpenAPI description gives it back.
requiredAttributes OpenAPI import, with the value true, for a required property. OpenAPI export: the property is listed as required. Set it yourself to make a property required.
namespaceClasses Import Source Folder (the namespace, package or module of the code) and PlantUML import (the package of the class). Nothing: it records where the class came from. Code generation takes the namespace from its own dialog.

Leave the openapi.… tagged values as they are unless you know the OpenAPI format: they hold JSON, and removing one loses that part of the description when the diagram is exported to OpenAPI. Changing the diagram itself, e.g. a type or a parameter, is always safe; where the two disagree, the diagram wins.

Your own tagged values

Use them for anything you want to keep with the model, for example:

UML Wizard keeps them with the diagram, through saving, copying and pasting classes, undo and redo. They are not drawn, and are not part of exports: PNG images do not show them, PlantUML has no place for them (the export lists how many it left out), code generation does not use them, and OpenAPI export only uses the ones in the table above.

Choose short, lowercase names, and use the same name for the same thing everywhere, e.g. always owner, never Owner in one class and team in another. Do not start your own names with openapi.: OpenAPI export reads every tagged value with that prefix.

8. Exporting an image

  1. Select a diagram in the Project Explorer and choose Diagram → Export → PNG Image…
  2. Enter the output folder (or Browse…) and the file name; .png is added when missing. Either field warns in red when the file already exists, and OK asks before replacing it.
  3. Choose a white or transparent background (shapes filled white and label backgrounds stay white).

The folder and background are offered again for the next export while the app runs. An open diagram is exported as shown, including unsaved changes.

9. Generating code

Select a class diagram in the Project Explorer and choose Diagram → Generate Code…. Pick:

The dialog lists the files it will write, marks the ones that replace existing files, and shows notes on what the language cannot express; OK asks before replacing files. An open diagram is generated as shown, including unsaved changes. Help → How to Generate Code walks through an example.

C#JavaKotlinTypeScriptRubyC++ (C++17)
FilesOrder.csshop/domain/Order.java (folders follow the package)shop/domain/Order.kt (folders follow the package)shop/domain/Order.ts, an ES module importing the types it usesshop/domain/order.rbOrder.h and, when there are stubs, Order.cpp
Class, abstract classclass, abstract classclass, abstract classclass (open when another class extends it), abstract classclass, abstract classclassclass; abstract operations are pure virtual
Interfaceinterfaceinterfaceinterface, whose attributes are abstract propertiesinterface, with propertiesmodule, included by the classes that realize itclass with pure virtual functions and a virtual destructor
Enumerationenumenum (UPPER_SNAKE_CASE constants)enum class (UPPER_SNAKE_CASE constants, with a value when the literals have numbers or strings)enum (PascalCase members, with their values)module of constants and ALLenum class
Attributepublic/protected/package: auto-property; private: _fieldfieldproperty, initialized as Kotlin requires; static ones in a companion objectproperty (! when it has no value, so it compiles with strict)attr_accessor; defaults set in initializemember (inline static when static)
Operationmethod that throws NotImplementedExceptionmethod that throws UnsupportedOperationExceptionfunction that calls TODO()method that throws Errormethod that raises NotImplementedError, with YARD tagsdeclaration, and a definition that throws std::logic_error
Constructor (operation named like its class)constructorconstructorsecondary constructorconstructorinitializeconstructor (explicit with one parameter)
NamesPascalCase members, camelCase parameterscamelCasecamelCasecamelCasesnake_case methods and filesas in the diagram

10. Importing code

Import Source Folder (the start screen, or File → Import Source Folder…) creates a new project from existing code, with a class diagram of its types, laid out automatically.

  1. Pick the folder. For a C# project, pick the project's folder.
  2. The dialog offers the languages the folder has files of, the most common first, and says up front what the import leaves out.
  3. Enter the new project's name, author, description and location.

The diagram opens, and a summary lists what was imported and everything that was left out or shown differently. A folder with no source files of an importable language, or no types, is not imported. The code is not built, so nothing needs to be restored or compiled.

Every source file of the chosen language under the folder is read, leaving out hidden folders (.git, .vs, …), build output and dependencies (bin, obj, build, out, target, dist, packages, node_modules, vendor).

LanguageFilesNotes
C#.csstruct «struct», record «record», static class «static»; partial classes are merged
C++.h, .hpp, .hh, .hxx, .cpp, .cc, .cxxstruct «struct», union «union»; a class with only pure virtual functions is an interface, one with a pure virtual function abstract
Java.javarecord «record»; enumeration constants with their arguments; the package is the namespace
Kotlin.ktdata class «data», object «object», sealed class «sealed», value class «value»; val and var constructor parameters are attributes; companion object members are static
TypeScript.ts, .tsx, .mts, .ctsproperties, accessors and constructor parameter properties are attributes, #private members private; interfaces declared in several places are merged
Ruby.rba module with methods or constants is a mixin: an interface «module», realized by include, extend and prepend; classes reopened in several files are merged
CodeClass diagram
Class, abstract class, interface, enumerationClass, abstract class, interface, enumeration (with the literals' values)
Field, property, attributeAttribute with its visibility, type, static and initial value (constants are static)
Method, constructorOperation with its visibility, parameters, return type, static and abstract
Base class; implemented or included interfaceInheritance; realization (a class) or generalization (an interface)
Field or property whose type is another class of the import (also through nullable types, arrays and collections)Directed association named after the member, multiplicity * for collections and 0..1 for optional values, instead of an attribute
Nested class Outer.InnerA separate class named Outer.Inner
Namespace, package, moduleTagged value namespace

Left out, and counted in the summary: files of other languages; method bodies, comments and documentation; base types that are not part of the import (e.g. Exception); initial values longer than 40 characters; and what each language has that a class diagram cannot show, e.g. events, indexers and operators in C#, annotations in Java and Kotlin, decorators and type aliases in TypeScript, destructors, friends and free functions in C++, and methods defined at run time in Ruby. Ruby declares no types, so Ruby classes are linked only by inheritance and mixins, not by associations.

11. OpenAPI

Diagram → Import → OpenAPI… reads an OpenAPI 3.0 or 3.1, or Swagger 2.0, description (.yaml, .yml or .json) and adds a class diagram to the folder of the Project Explorer selection, laid out automatically. Diagram → Export → OpenAPI… writes the selected class diagram as OpenAPI 3.0: the file's extension chooses YAML or JSON, and the dialog asks for the API's title (the diagram name by default) and version.

OpenAPIClass diagram
Schema of an object (components/schemas)Class; its properties are attributes
Schema with enumEnumeration; the values are its literals
allOf with a $refGeneralization to that schema
Property referring to another schemaAttribute of that type, and a directed association with multiplicity 1, 0..1 or *
Required propertyTagged value required = true on the attribute
Tag (or the first path segment of untagged operations)Interface with the stereotype «api», e.g. PetsApi for the tag pets
Operation (GET /pets/{petId})Operation of that interface, with its parameters, request body and response type; its Method and Path are set

What UML has no place for is kept in tagged values named openapi.… and written back on export, so importing and exporting an OpenAPI 3.0 description gives it back; when the diagram changes, the diagram wins. The import lists anything it could not keep. Help → How to Import and Export OpenAPI has the details, including how the Method and Path of an operation become an endpoint.

12. PlantUML

Diagram → Import → PlantUML… reads a PlantUML file: each diagram in it, from @startuml to @enduml, is added to the folder of the Project Explorer selection and laid out automatically. Its kind is recognised from its content, as PlantUML does, and its title names it. Diagram → Export → PlantUML… writes the selected diagram, of any type, as PlantUML, with its name as the title. Both list what they could not keep.

Not exported: text boxes, fonts, colours, line styles and tagged values. Not imported: styling, combined fragments of sequence diagrams (their messages are kept), composite states (flattened), history states, swimlanes (their actions are kept) and !include. Help → How to Import and Export PlantUML shows how each kind of diagram maps.

13. AI assistant

UML Wizard can use an AI service to draw a diagram from a description, and to talk about and change your diagrams in a chat. The AI is optional and off until you set it up: nothing is sent anywhere before that, and afterwards only when you use an AI command.

Setting up an AI service

  1. Open File → Preferences… and the AI tab.
  2. Choose the Service:
    • Anthropic (Claude): needs an API key from Anthropic. The model is claude-sonnet-5-5 unless you name another, e.g. claude-opus-5-5 for large or subtle diagrams.
    • OpenAI-compatible: OpenAI itself (with an API key), or any service with the same API, including models running on your own computer with Ollama (http://localhost:11434/v1) or LM Studio (http://localhost:1234/v1), which need no key. Enter the Endpoint and the Model, e.g. gpt-4o-mini or llama3.1.
  3. Enter the API key, if the service needs one. It is kept in your system's credential store (Windows Credential Manager, the macOS Keychain, or the Secret Service on Linux), not in the settings file. Instead, you can set the ANTHROPIC_API_KEY or OPENAI_API_KEY environment variable.
  4. Leave Changes on With tool calls, unless the model cannot call tools (some local models cannot; the chat then reports an error from the service). Choose As a whole diagram for those: see Chatting about a diagram.
  5. Click Test Connection: UML Wizard sends a short request and says whether the service answered.

Choosing None (AI off) turns the AI commands off again. On Linux, keeping the key needs the secret-tool command (package libsecret-tools); without it, use the environment variable.

Creating a diagram with AI

  1. In the Project Explorer, select the folder the diagram should go into (or a diagram in it).
  2. Choose Diagram → Create with AI…
  3. Describe the diagram in your own words, and choose its Type, or leave Let the AI choose.
  4. Click OK. A window says what is happening; Cancel stops it.

The new diagram is laid out, added to the folder and opened. Its description says it was created with AI, and from what. If the AI wrote something UML Wizard does not support, it is listed, and the rest of the diagram is kept. Create with AI does not change your existing diagrams: it only adds new ones, which you can edit, undo and delete like any other. To change a diagram with AI, use the chat.

How it works: the AI writes the diagram as PlantUML, which UML Wizard reads with its PlantUML import, checks and lays out. If the answer cannot be read as a diagram, UML Wizard asks the AI once more.

Chatting about a diagram

View → AI Chat (Ctrl+Alt+I) shows the AI chat on the right of the window; it is hidden when UML Wizard starts. It is about the diagram of the active tab: each tab has its own conversation, which is not saved with the project.

The answer appears while the AI writes it, with its formatting: bold, lists and code.

Changes are not made straight away. Under the conversation, Proposed changes lists them, e.g. + class Payment or + Order → Payment (composition):

What the AI adds is placed next to what it is connected to, in free space, without moving anything: a class next to a related class, a state next to the state it follows, an artifact inside the node it is deployed on (which grows to hold it). In an empty diagram, everything the AI adds is arranged. Use Format → Arrange Diagram afterwards if you want the whole diagram tidied.

The first time you send a message in a project, the chat asks whether the project's diagrams may be sent to the service. Allow for This Project sends the message, and UML Wizard remembers the answer for that project; Cancel keeps the message in the box and sends nothing.

Models without tool calling. The AI normally changes a diagram step by step ("add a class", "add a transition"), which needs a model that can call tools. For a model that cannot, set Preferences → AI → Changes to As a whole diagram: the AI then answers with the whole revised diagram in PlantUML. UML Wizard matches it with your diagram by name, so what keeps its name keeps its place, look and tagged values; what is new is placed; what the AI left out is removed. The proposed changes show all of it before you apply it. This works best with class, state machine, use case, component and deployment diagrams; activity diagrams may be rebuilt rather than changed.

The chat sends your messages and the diagram to the AI service. The panel says which service; see Privacy above.

Describing a diagram well

Privacy

When you use an AI command, what you type is sent to the service you chose, and the AI chat also sends the diagram it is about; and is subject to its terms. Choose a local model (Ollama, LM Studio) to keep everything on your computer. Your API key is only sent to that service.

14. Adding languages

Every code generation and code import language is a plug-in: a DLL loaded at start-up from two plugins folders. The built-in ones are in the application's folder. To add a language, put its DLL in your own plug-ins folder and restart UML Wizard:

A plug-in goes there as Name.dll, or as Name/Name.dll with its dependencies. It then appears in the Language box of Generate Code or the language choice of Import Source Folder. To remove it, delete its DLL (or its folder). When both folders have a DLL with the same name, the application's wins.

Help → About UML Wizard → Languages lists every installed language plug-in with its version and provider, and the plug-ins that could not be loaded, with the reason.

MenuItems
FileNew Project, Open Project, Import Source Folder, Recent Projects │ Save Project, Save Project As │ New Folder, Project Properties │ Close Project │ Preferences │ Exit
EditUndo, Redo │ Cut, Copy, Paste, Delete │ Edit Element
ViewProject Explorer, AI Chat │ Theme ▸ (System, Light, Dark)
FormatFont, Diagram Font, Shape, Line │ Bring to Front, Bring Forward, Send Backward, Send to Back │ Arrange Diagram
DiagramNew Diagram ▸ (every type), Create with AI, Rename, Move To, Delete │ Import ▸ (OpenAPI, PlantUML), Export ▸ (PNG Image, OpenAPI, PlantUML), Generate Code │ Close All Diagrams │ Properties
HelpUser Manual, Learn UML │ How to Import and Export OpenAPI, How to Import and Export PlantUML, How to Generate Code │ About UML Wizard

Rename, Move To, Delete, Export, Generate Code and Properties in the Diagram menu act on the diagram selected in the Project Explorer.

16. Keyboard shortcuts

Shortcuts use Ctrl on Windows and Linux and ⌘ on macOS.

KeysAction
Ctrl+Shift+N / Ctrl+ONew project / open project
Ctrl+S / Ctrl+Shift+SSave project / save project as
Ctrl+Z / Ctrl+Y (⌘⇧Z on macOS)Undo / redo
Ctrl+X / Ctrl+C / Ctrl+VCut / copy / paste
Delete (⌫ on macOS)Delete the selected element
Arrow keys / Shift+arrow keysMove the selected element by 1 unit / one grid step (20 units)
F2 / EnterEdit in place / open the Edit dialog
EscCancel an in-place edit or the active tool, and clear the selection
Ctrl+Alt+LShow or hide the Project Explorer
Ctrl+,Open the Preferences
Ctrl+Alt+IShow or hide the AI chat
Ctrl+EnterSend the message in the AI chat
Ctrl+Plus / Ctrl+Minus / Ctrl+0Zoom in / zoom out / actual size
Ctrl+Shift+] / Ctrl+] / Ctrl+[ / Ctrl+Shift+[Bring to front / forward, send backward / to back
F1Open this User Manual

17. Preferences

The Preferences window sets how UML Wizard works and looks for you: where new projects go, the language and font of the application, and the colours diagrams are drawn in. Preferences belong to you, not to a project: they apply to every project you open, and a project you share keeps its own look for others.

Opening the window

The window has four tabs: General, Appearance, Diagram and AI. Each setting is a label on the left with its control on the right.

There is no OK or Cancel: every change applies at once and is saved straight away. Change something back the same way you changed it, then click Close (or press Esc) when you are done. Drag the window's edges to make it larger.

General

SettingWhat it does
Projects folderWhere new projects are created, and where imported source folders become projects, unless you choose another folder at the time. Type the folder or click the folder button at the end of the box to browse for it. Leave it empty to use your Documents folder, which the box then shows in grey. A folder that no longer exists is ignored.
Display languageThe language of menus, panels and dialogs. Open the list, or type the first letters of a language to jump to it. Only English is available so far.

Appearance

These settings change the application itself, not your diagrams.

SettingWhat it does
ThemeSystem follows the light or dark mode of your operating system, also when it changes while UML Wizard runs; Light and Dark keep one. It is the same choice as View → Theme.
FontThe font of menus, panels and dialogs. The list has every font installed on your computer; type the first letters of a font to jump to it. Default puts the application's own font back.
Font sizeThe size of that font, from 10 to 20. Leave it empty for the default size (14), which the box then shows in grey.

The Preview below the settings shows a small window, with a title, text, a text box, a check box and a button, in the font and size you choose, so you can judge them before closing the window. Every window of the application changes as well.

The text of diagrams has a font of its own, which is part of the diagram: set it with Format → Diagram Font… (all the elements of a diagram) or Format → Font… (one element).

Diagram

This tab sets the colours shapes are drawn in, for each type of diagram. Pick the diagram type in the list on the left; its settings appear on the right:

Diagram typeFills
Class diagramClass, Abstract class, Interface, Enumeration, Note
Sequence diagramLifeline, Note
State machine diagramState, Choice, Note
Activity diagramAction, Decision / merge, Note
Use case diagramUse case, System boundary, Note
Component diagramComponent, Interface, Note
Deployment diagramNode, Device, Execution environment, Artifact, Component, Note

Each colour has a swatch and a box with the colour as #RRGGBB:

Open diagrams of that type change as you go, so you can watch the result while you choose.

AI

The AI service the AI commands use: Service, Endpoint, Model, how the chat makes Changes (with tool calls, or as a whole diagram for models without tool calling) and API key, with Test Connection. The API key is kept in your system's credential store when you close the window, not in the settings. See AI assistant for how to set up each service.

Examples

Create new projects in a folder of your own

  1. Open File → Preferences…; the General tab is shown.
  2. Click the folder button at the end of Projects folder and choose the folder.
  3. Click Close. Create a New Project now offers that folder.

Make interfaces stand out in class diagrams

  1. Open the Diagram tab and pick Class diagram.
  2. Click the swatch next to Interface, choose a colour in the colour picker and click OK.
  3. Set Thickness to 2 for bolder outlines, and click Close. Every interface of every class diagram, open or not, is drawn in the new colour.

Make the application easier to read

  1. Open the Appearance tab.
  2. Set Font size to 16, and pick another Font if you like; check the Preview.
  3. Click Close.

Good to know

18. Where settings are kept

The recent projects list (recent-projects.json), your preferences (settings.json) and your plug-ins (plugins) are kept in:

Projects are kept wherever you create them: a project is a single .umlwiz file with all of its diagrams.