个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Game cloud saves for everyone.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Rove is a Windows desktop utility for games that do not have dependable built-in cloud saves. It syncs ordinary save folders locally first, then optionally replicates immutable revisions directly to Google Drive or a user-selected folder managed by OneDrive, Dropbox, Syncthing, or another sync client.
Game cloud saves for everyone.
There is no Rove server or VPS. End users never enter developer API keys.
Rove's desktop app is a dark-first, desktop-style interface (library sidebar, status bar, preferences-style settings) with a single orange accent, and a light theme as an option. See the brand implementation guide for the approved assets and rules.
game.json metadata. The immutable save layout continues to use the stable Sync ID, not a title-derived folder name.drive.file scope. OAuth tokens are protected with Windows DPAPI..cloud-saver/v1 in a folder synchronized by another application.Objects use SHA-256 names, manifests are immutable, and a head is published only after its referenced objects and manifest are complete. Modern publications also write a per-device head while continuing to update the legacy compatibility head.
cloud-saver/
├── backend/ Go daemon, SQLite state, Cloud Sync engine, providers, local API
├── app/ Tauri 2 + React desktop application
└── docs/ end-user and contributor documentation
The daemon binds only to 127.0.0.1:7331.
Prerequisites: Go 1.23+, Node.js 20+, Rust, and Visual Studio 2022 Build Tools with the C++ workload.
See CONTRIBUTING.md for the contributor entry point and the complete developer guide for architecture and implementation boundaries.
Install the frontend dependencies once:
cd app
npm install
For local-only and synced-folder development, no provider credential is required. To test Google Drive, set CLOUD_SAVER_GOOGLE_OAUTH_JSON in the same PowerShell window that starts the daemon. The file must be a Google Desktop OAuth client download and must remain outside this repository.
# terminal 1
cd backend
$env:CLOUD_SAVER_GOOGLE_OAUTH_JSON="C:\path\to\downloaded-desktop-oauth.json" # omit when not testing Drive
$env:GOCACHE="$PWD\.cache\go-build"
go run ./cmd/daemon --no-tray --debug
# terminal 2
cd app
.\dev-tauri.cmd
Changing an OAuth environment variable does not update a daemon that is already running. Stop it with Ctrl+C, set the variable, and start it again. Verify the active configuration with:
Invoke-RestMethod http://127.0.0.1:7331/providers/google-drive/status
For JSON-based development, both oauthClientSource and oauthCredentialSource should be oauth_json. See the Google Drive contributor setup for OAuth setup, release builds, sanitized logs, and troubleshooting.
Verification:
cd backend
go test ./...
cd ..\app
npm run type-check
npm run build
cd src-tauri
cargo check
The Tauri release build uses the official autostart plugin and registers Rove.exe --background. The background bootstrap ensures the single daemon is running, opens no main window, and exits.
Installed releases check the stable GitHub Releases update manifest at startup and before a game launch when the last successful check is more than six hours old. Checks time out after three seconds and never block play. Accepted updates download as signed NSIS updater archives in the background, survive application restarts, and install in place after tracked games and active Cloud Sync work close. Manual uninstall is neither required nor recommended. Source/development builds can check the UI state but cannot install updates.
Never commit Google OAuth JSON downloads, client credentials, refresh tokens, save contents, or personal paths. Google requires the Desktop client credential during token exchange even though it cannot be confidential in a distributed desktop binary. Official releases inject it from a protected CI secret. Local developers point CLOUD_SAVER_GOOGLE_OAUTH_JSON at their downloaded file; normal users enter nothing. User refresh tokens remain local and Windows-protected.
The updater public key is committed at app/src-tauri/updater-public-key.txt. Its private key and password must never enter Git; the local key ceremony stores them under ignored .secrets/ files, and releases read them from GitHub Actions secrets. End users and ordinary contributors do not supply signing keys.
The OAuth loading and release-injection paths are defined in backend/internal/auth/googledrive/service.go and scripts/stage-backend-daemon.mjs. For sanitized OAuth-stage logs during local development, start the daemon with --debug or set CLOUD_SAVER_DEBUG=1.