Concepts

Staying up to date

Your code keeps moving while your team works in Soffi: engineers merge to your base branch, reviewers push fixes to pull requests, someone improves the Project's setup. Soffi brings all of it into every Workspace in the background, so nobody has to pull, rebase or resolve conflicts themselves. It only asks you when an update would change UI you're working on.

Your GitHub

Your base branch

Where your team merges finished work

Pull request

Someone pushes new commits to #128 from their editor
Merges and new commits
Soffi · in the background

Project

Takes in what merged, saves when it's safe to, and rebuilds the starting point every Workspace shares.
Project update

Workspace

Brought up to date in the background.

Preview · PR #128

Workspace

Brought up to date in the background.

Preview

Workspace

Brought up to date in the background.

Preview

Each update

Clean update

Merged in the background. The Preview refreshes on its own.

Changes UI you're editing

Needs your input

The project update removes the Pricing button you're editing in this workspace. Keep it here, or use the project's version?

Up to date, without pulling

  • Nothing reaches GitHub until your next Ship
  • Sleeping apps catch up when they wake
  • Check for updates whenever you want
Your base branch reaches every Workspace through the Project, a pull request's new commits reach its Workspace, and only a conflict on UI you're editing becomes a question for you.

What Soffi keeps current

The Project, from your base branch. When work merges into the base branch, Soffi merges it into the Project. If the Project's setup has no unsaved edits and the branch is protected, Soffi saves it on its own. Otherwise the Project's Edit page shows that new work has merged and asks someone to save.

Workspaces, through the Project. Each time the Project is saved and its new starting point is built, every Workspace in it brings the update in, including Workspaces opened from a pull request. Your base branch reaches Workspaces only this way, so every Workspace takes in a setup that has already built.

Workspaces, from their pull requests. When someone pushes to a pull request a Workspace is attached to, from their editor or from another tool, the new commits come into that Workspace within about a minute. See PRs opened outside Soffi.

Knowledge docs and the design system. As the code changes, Soffi keeps the Project's knowledge docs and its design system current. Nobody has to do anything.

What you'll see

Sync status, in the header of the right-hand panel, shows where each repository stands and where its updates come from:

  • Up to date: nothing new is waiting.
  • Pulling in updates…: an update is coming in now.
  • Waiting until you're done editing: Soffi holds updates while you have edits in progress, and Update now brings them in anyway.
  • Will update when the app wakes: the Workspace's app is asleep.
  • Update from PR #N needs approval: see below.
  • Needs your input: Soffi has a question for you.
  • Couldn't bring in updates: something went wrong, and Try again retries.

While an update comes in, the Preview says Pulling in updates from your project… and refreshes when it's done. If an update conflicts with work in the Workspace, Soffi resolves it in a background task you can follow in the Tasks tab, listed as Bringing in updates.

When Soffi asks you

Soffi only brings you in when an update would change UI you edited in this Workspace. It won't overwrite files you changed without an answer from you. The question arrives in Soffi's panel, in plain words:

The project update removes the Pricing button you're editing in this workspace. Keep it here, or use the project's version?

You get one question at a time. A Workspace stops at the first repository with a conflict, and an update from the Project to a Workspace that spans several repositories lands in all of them together.

Pushes that need approval

Pushes from a fork, or from someone without write access to the repository, don't come in on their own. Sync status shows Update from PR #N needs approval, and anyone with write access brings it in with one click, Bring it in. A newer push needs approving again.

Nothing reaches GitHub until you Ship

Updates stay in the Workspace. Soffi never pushes them to your repository by itself; they go out with your work the next time you Ship, as ordinary merge commits. Soffi also never wakes a sleeping app just to update it. The app catches up when it next wakes.

Check for updates

You don't need to do anything for any of this, but Check for updates, at the bottom of Sync status, looks for new work straight away. It's the button to use when you know something just merged and want it now.

Was this helpful?