Skip to content

Settings

Settings is a window that opens over whichever screen you are on, the hub or the editor. Open it from the hub’s left rail, from the leftmost Settings button on the editor toolbar, or with F1. It is a centered card with a vertical tab list on the left and the selected page on the right. Close it with the × in the top-right or with Escape. General is selected when it opens.

Settings values apply application-wide and persist between sessions. They are not stored inside project files.

ControlBehavior
VersionThe running application version, read-only
Check for UpdatesDisabled placeholder. No release feed exists yet and nothing is contacted
LanguageFixed to English, non-interactive
Export Diagnostics…Bundles crash dumps, session logs, captured failed-load projects, the open project and its autosave into one ZIP and hands it to a native save dialog. This is the way to get diagnostics off an iPad. Reports Diagnostics exported or Diagnostics export failed: …
Canvas GridShows/hides the canvas dot grid. On by default
Perf OverlayShows the canvas FPS counter and per-node compute times. Off by default
3D Preview GPUPicks the graphics adapter the native renderer uses, for both the 3D preview and the thumbnail renderer. Lists Automatic (High Performance) plus every adapter the system reports. Takes effect after restarting the app: the native core is created once per launch. If adapters cannot be enumerated the page reads GPU selection is unavailable on this device.
Graphics BackendWindows only, and absent everywhere else. Automatic (DirectX 12) or Vulkan. Takes effect after restarting the app

DirectX 12 is the tested default. Vulkan is an escape hatch for a DirectX 12 driver bug rather than a faster path: presentation goes through the same Direct3D 11 shared-texture bridge either way. Choosing it cannot leave you without a preview - a machine with no Vulkan adapter falls back to DirectX 12 on its own.

A fixed-width theme list on the left, and on the right either a read-only preview of the selected theme’s color tokens or the Customize form.

Built-in themes: Dark (the first-launch default), Light, High Contrast, Soft Dark. Any saved custom theme appears as an extra row. Selecting a theme applies it immediately.

Customize opens a form with:

  • Import from File… loads a .surfacetheme and fills every field.
  • Theme Name
  • Brightness: Dark or Light.
  • Colors: one row per token: label, a live swatch that updates as you type, and a #RRGGBB hex field (six hex characters, no alpha). There are 19 tokens: Surface Base, Surface Raised, Surface Modal, Text Primary, Text Secondary, Text Disabled, Border, Accent, Accent Deep, Status Error, Status Warning, Status Success, Overlay Scrim, and six code-editor tokens (Code Keyword, Code Type, Code Builtin, Code Literal, Code Comment, Code Annotation).
  • Save Theme validates, applies and persists. This is the only setting in the whole window that needs an explicit confirm.

Export Current Theme… writes the active theme to a .surfacetheme file. See Project & File Formats for the file format.

Messages you may see: Theme exported. · Custom theme saved and applied. · Fill in all color fields before saving. · Could not import theme - the file may be invalid. · "<name>" matches a built-in theme name - saving anyway.

ControlBehavior
Reduce MotionReal and saved. Disables non-essential animation; most visibly, dragging a wire uses a static curve instead of the animated “dangly” physics
High Contrast ModeSwitches the active theme to the High Contrast preset. Turning it off returns to Dark, not to whatever theme was active before
Large TextInert. The toggle moves but nothing changes, it is not saved, and it returns to off whenever you leave the page
Canvas Zoom SensitivityMultiplier on every pinch and scroll zoom step. Range 0.1 to 2.0, default 1.0
  • A read-only box showing the full path where imported nodes and subgraphs are stored: your Documents folder. It briefly reads Resolving… first. The location cannot be changed from this page.
  • Open in File Manager: desktop only. Opens that folder in the system file browser. Not present on iPad.
  • Project Tags: the tag vocabulary for projects in the hub. Tags are saved into each .surfacelabs file, so they travel with a project you share, and tags on projects you open are added here automatically.
  • Node Tags: extra labels for nodes in the Node Library, on top of the built-in ones. Filter by them in the library panel; right-click any node to tag it.

Both tag managers work the same way: built-in tags are listed read-only at the top (so you extend the vocabulary rather than duplicating it with near-synonyms), followed by your own tags. Each of yours shows its name (tap to rename inline), a row of preset color swatches plus a “no color” option, a usage count, and a delete control. You can create new tags here.

The last section on the page, and the only part of the manual Settings still owns: its disk footprint.

The manual is not shipped inside the application. Its prose is fetched from surfacelabs.app on first launch and cached on disk, which is what makes it current, searchable and fully offline from then on; the whole corpus is a few hundred KB, so it needs no managing. Illustrations are tens of megabytes, so they are fetched one at a time as you open the articles that use them, and only cost space you have actually looked at. Anything fetched stays available offline.

A status line reports what is on disk - Checking… while it measures, then No illustrations downloaded yet. or a count and a size. Two buttons act on it:

  • Download All Illustrations fetches every illustration in the published manual in one pass, so articles read with their pictures offline. The button names the total size, and reads Downloading <n> of <total>… while it runs.
  • Remove Downloaded Images appears only once something is on disk, and deletes the cached illustrations. They re-download as you read. The prose is untouched.

Until the app has reached surfacelabs.app at least once there is no published image list to work from, so neither button appears and the page says so instead.

Lets an AI assistant read and edit the project you have open. It sees the same graph you do, and its changes appear on the canvas as it makes them. The page holds the server start/stop control, auto-start and read-only toggles, the loopback port (default 4319) and bearer token, ready-to-paste client configuration (including a Claude Desktop .mcpb extension export), a summary of what a connected assistant can do, and a live activity list.

Desktop only. On iPad the page explains that the in-app server runs on Windows, Linux and macOS, and that on that device Surface Labs can still open projects an agent authored elsewhere.

See MCP Server for the full page reference and the tools the server exposes.

The full keyboard shortcut list, grouped into File, Editor, Graph and Canvas. Preset chips switch between Surface Labs, Substance Designer, Blender, Houdini and Nuke binding sets; a Custom chip appears as a status label once you have diverged from a preset. Each row can be rebound, a per-row × restores that row’s default, and Reset All Shortcuts to Defaults restores everything after a confirmation. A Controller section covers game controller input; see Input Devices.

See Shortcuts for the full binding tables.

Only present in development builds; it never appears in a release build. It contains toast-testing buttons for each severity, an Open Native Preview screen for the native GPU core, Export Crash Report…, and a read-out of the active theme’s id and brightness.