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 base branch
Project
Pull request
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
Clean update
Changes UI you're editing
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
Pull request
Project
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
Clean update
Changes UI you're editing
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
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.