Hi there, just released this tool here. It addresses a longtime pain point for so many of us. It’s my 1st release on Fab, don’t go hard on it please. Thanks.
Stop screaming, 'Who locked the map?!' SafeSave adds a real-time Traffic Light to your toolbar that warns you of conflicts before you save.
Feature List:
Blue Light: "Auto-detects when teammates push updates."
Red Light: "Prevents merge conflicts with a Safe-Update protocol."
No Jargon: "Replaces command lines with simple 'Push/Pull' buttons."
Hey! This tool looks like something that we were looking for! Could you tell me whether you tried to launch it on 5.5? I can see that in compatibility section you stated that it works only with 5.7 but I wonder whether this is out of the scope or you simply haven’t tested it there
Hey there, thanks for your interest. In fact I first submitted it as 5.5 plugin, but Fab told me that it needs to be a 5.7 plugin to show up. So I went back, an now it’s basically fully compatible with 5.5, 5.6 and 5.7.
The launcher unfortunately won’t allow users to download the plugin unless we have 5.7 installed currently. I haven’t published anything to fab yet, but it should be possible to mark it as compatible with multiple engine versions. I have 5.3, 5.5, and 5.6 installed and I see this when I try to download the plugin:
Personally I haven’t really had many issues with merge conflicts so far when working with a small team through perforce, but I would like to have this plugin for is to have a ‘sync all’ button in the editor. I’m not sure why there isn’t already one natively. The editor seems to track which files need to be updated, but forces you to navigate to the individual assets in the content browser and right click each one to sync, only offering you a multi-file sync option if the first asset you sync has dependencies that are also out of date.
The alternative is to close the entire editor, sync all, and re-open, which slows my workflow unnecessarily since the editor has built-in features for syncing files at runtime.
Also, the github issues link you provided seems to be set to private as it just displays as a 404 page for me.
Hi there, thanks for the message. I first submitted as a 5.5 plugin specifically, but Fab said that it needs to be a 5.7 plugin.
Edit: I submitted a 5.6 version today, hopefully it’ll go live soon.
GitHub link was on private for some reason indeed, fixed now.
Hey all, v0.6 was just released as a radically new version. I’ll just copy the current description and the changelog here. Have fun with SafeSave!
SafeSave — Source Control Safety for Unreal Engine
SafeSave is a compact UE editor toolbar that keeps your source control status and unsaved assets impossible to ignore. It reduces risky syncs, prevents lost work, and keeps teams aligned with clear, always‑on signals.
USP & Benefits
Always‑On Safety Signals — The toolbar label shows branch/workspace | state at a glance.
Clear Risk Visibility — Conflicts, Diverged, Behind, Changes, Unsaved, and Login Required are color‑coded.
SafeSave is now a UE 5.6+ editor plugin that surfaces source control risk directly in the Unreal Editor toolbar for both Git and Plastic SCM, blocks unsafe sync actions, exposes diagnostics for broken SCM states, includes automated editor validation, and ships as a Fab-ready source package.
Added
Added a toolbar widget that shows source control state in branch | state form.
Added a toolbar dropdown with save, refresh, status details, and provider-specific source control actions.
Added Git status parsing based on git status --porcelain=v2 -b.
Added Git state handling for Clean, Changes, Ahead N, Behind N, Conflicts, and Diverged.
Added Plastic SCM workspace detection using cm getworkspacefrompath.
Added Plastic SCM branch and workspace parsing using cm workspaceinfo and cm status.
Added Plastic SCM pending-change and conflict parsing from machinereadable status output.
Added a Plastic SCM Login Required state for missing or expired credentials.
Added a Plastic SCM Update Workspace action when the workspace is valid and safe to update.
Added a settings panel in Editor Preferences -> Plugins -> SafeSave.
Added status polling settings for dirty-asset checks and SCM polling cadence.
Added Git auto-fetch settings and interval controls.
Added a status details dialog that exposes repo, workspace, branch, counts, and CLI error output.
Added the SafeSave.StressTest console command for developer and demo sanity checks.
Added editor automation coverage for module registration, toolbar registration, status rendering, command gating, and live SCM probing.
Added a disposable Git end-to-end automation flow to validate real repository transitions.
Added a disposable divergent Git test that creates a real ahead 1 / behind 1 state.
Added a live Plastic probe test that validates machine-specific Plastic availability and auth conditions.
Added an optional configured Plastic workspace test gated by SAFESAVEPLASTICWORKSPACE.
Added a dedicated HTML validation report documenting successful UE editor validation coverage.
Added a Markdown showcase storyboard for screenshots, Fab imagery, and a short promo video.
Changed
Reworked the toolbar from a simpler Git-oriented status widget into a source-control-aware Git and Plastic SCM toolbar.
Standardized plugin wording across UI and settings so the plugin is not described as Git-only where that is no longer accurate.
Switched toolbar iconography to stable Unreal AppStyle icons rather than plugin-specific icon assets for action affordances.
Updated the status label, tooltip, and details text so Git and Plastic SCM use the same user-facing model.
Updated settings text to describe generic SCM polling while keeping Git-only notes where required for auto-fetch behavior.
Expanded the HTML manual to document the current states, command gating, diagnostics, validation, and packaging workflow.
Produced a Fab-ready host-project package layout instead of relying on stale local build output.
Fixed
Fixed a visibility bug where unsaved assets disappeared from the toolbar when source control was missing.
Fixed a visibility bug where unsaved assets disappeared when no repository or workspace was found.
Fixed a visibility bug where unsaved assets disappeared during Plastic Login Required states.
Fixed Git and Plastic status-command failure handling so post-detection CLI failures surface as explicit Status Error states instead of being misread as healthy or ambiguous repos.
Fixed toolbar labels to preserve unsaved work visibility in degraded states, including:
SCM Missing | Unsaved N
No SCM Repo | Unsaved N
Login Required | Unsaved N
Fixed Git pull gating so Pull (Rebase) is only enabled when Behind > 0 and Ahead == 0.
Fixed Git push gating so Push is only enabled when Ahead > 0 and Behind == 0.
Fixed diverged-branch behavior so both pull and push are disabled when the branch is ahead and behind at the same time.
Fixed Plastic Update Workspace gating so it disables correctly for Login Required and Status Error conditions.
Fixed the stress-test developer command wiring by registering it during module startup and unregistering it during shutdown.
Fixed status-change toast styling so degraded states use warning or failure presentation instead of always using success styling.
Fixed packaging consistency by generating a clean Fab-ready package from a staged host project rather than reusing stale binaries.
Toolbar States and Behavior
SafeSave now explicitly documents and renders these important states:
Clean
Changes
Unsaved N
Ahead N
Behind N
Conflicts
Diverged
SCM Missing
No SCM Repo
Login Required
Status Error
Composite degraded labels keep unsaved work visible instead of hiding it.
Status Error is now the canonical state when the provider exists and the repo or workspace is found, but the status command itself fails.
Show Status Details is the primary inspection path for CLI diagnostics when a provider command fails.
Command Gating Rules
Git Pull (Rebase) requires:
Git active
client available
repo detected
upstream configured
no unsaved assets
clean working tree
no Status Error
Behind > 0
Ahead == 0
Git Push requires:
Git active
client available
repo detected
upstream configured
no unsaved assets
clean working tree
no Status Error
Ahead > 0
Behind == 0
Plastic Update Workspace requires:
Plastic active
client available
workspace detected
valid authentication
no unsaved assets
clean workspace
no Status Error
Diverged and unresolved provider states intentionally block update actions.
Added an explicit “Submit Content” menu action mapped directly to Unreal’s native source control check-in window.
Added Preemptive Open Alerts: SafeSave now queries the provider when you double-click an asset and fires a large toast warning (“LOCKED by Teammate”) if another user already has it checked out.
Added Active Save Blocking: “Save All” now intercepts the dirty file list, queries the SCM provider, explicitly blocks locked files from being saved locally, and automatically issues checkout commands for the remaining assets.
Added visual Locked (N) and Checkout Req (N) state overrides to the toolbar label.
Changed
Reworked git pull --rebase gating. You can now execute a pull even if you are in a diverged state (Ahead > 0 and Behind > 0), allowing developers to stack local commits without leaving the editor.
Changed default polling intervals to reduce baseline overhead. Dirty file checks are now every 5 seconds (up from 1s) and SCM polling is every 15 seconds (up from 5s).
Suspended all background updates while Play In Editor (PIE) is active to prevent micro-stutters during gameplay testing.
Switched underlying process execution from blocking FPlatformProcess::ExecProcess to a monitored background thread wrapper.
All background CLI commands now have a hard 60-second timeout to prevent deadlocking the editor if a network request hangs.
Fixed
Fixed an indefinite editor deadlock caused by Git attempting to prompt for credentials in a headless background thread. Injected -c core.terminalPrompt=false and -c core.sshCommand="ssh -o BatchMode=yes" into all background Git calls.
Fixed file lock contention errors (“Another git process seems to be running”) by passing --no-optional-locks to background Git queries.
Fixed a localization bug where Plastic SCM auth detection failed on non-English operating systems. SafeSave now runs a fallback cm whoami check when cm commands fail to robustly verify login status.