Skip to main content

Settings

Per-Project Settings

Per-project settings are scoped to a single Spruce project. Edit them from Settings → Per-project settings (with that project open). Some fields travel with the project (shared via git), others are machine-local.

Shared project config: project.yaml

Settings stored in the project's project.yaml are pushed with the rest of the project:

FieldWhat it is
nameProject display name
badgeColor badge for the sidebar (hex)
baseBranchThe branch Spruce creates worktrees from. Default main.
focusBarFilterRules for the focus bar (see The Focus Bar)
defaultViewName of the view loaded when the project opens
codeRepositories[]Shared metadata for each linked code repo (remote URL, display name)

Machine-local config: workspace.yaml

Settings stored in workspace.yaml are per-machine and not pushed. They handle paths and local-only state:

FieldWhat it is
codeRepositories[].localPathWhere each linked repo is cloned on this machine
worktreeStoragePathWhere Spruce creates worktrees for Start Working
Git identityPer-project user.name / user.email if you override it here

Linking code repositories

Under Settings → Code repositories, you can:

  • Add an existing local path; Spruce records the path + remote URL.
  • Clone a remote; Spruce clones and records both.
  • Edit a linked repo's display name.
  • Unlink a repo (leaves files on disk; it just forgets about them).

Each linked repo appears as a top-level root in the file tree on the Code page.

Focus bar filter

Define rules that drive which artifacts appear in the focus bar across every page. See The Focus Bar for available rule types.

Worktree storage path

By default, Spruce creates worktrees in a per-project directory it manages. You can set a custom path here, e.g. if you want all worktrees under ~/src/worktrees/<project>/.