個人 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.