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.
General
Section titled “General”| Control | Behavior |
|---|---|
| Version | The running application version, read-only |
| Check for Updates | Disabled placeholder. No release feed exists yet and nothing is contacted |
| Language | Fixed 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 Grid | Shows/hides the canvas dot grid. On by default |
| Perf Overlay | Shows the canvas FPS counter and per-node compute times. Off by default |
| 3D Preview GPU | Picks 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 Backend | Windows 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.
Appearance
Section titled “Appearance”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
.surfacethemeand 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
#RRGGBBhex 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.
Accessibility
Section titled “Accessibility”| Control | Behavior |
|---|---|
| Reduce Motion | Real and saved. Disables non-essential animation; most visibly, dragging a wire uses a static curve instead of the animated “dangly” physics |
| High Contrast Mode | Switches the active theme to the High Contrast preset. Turning it off returns to Dark, not to whatever theme was active before |
| Large Text | Inert. The toggle moves but nothing changes, it is not saved, and it returns to off whenever you leave the page |
| Canvas Zoom Sensitivity | Multiplier on every pinch and scroll zoom step. Range 0.1 to 2.0, default 1.0 |
Library
Section titled “Library”- 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
.surfacelabsfile, 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.
Documentation
Section titled “Documentation”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.
MCP Server
Section titled “MCP Server”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.
Shortcuts
Section titled “Shortcuts”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.