Skip to content

Moushudyx/game-sl

Repository files navigation

game-sl

游戏存档备份/复原软件(Tauri + React + Ant Design)

项目状态(2026-03-15)

当前版本已经具备可用的「配置管理 + 备份 + 备份列表 + 备注 + 删除 + 复原」主流程,但和最初的 prompt/框架.md 仍有若干差异(见下文对照表)。

已实现功能

  • Windows 平台运行(Tauri 桌面应用)。
  • 启动时初始化工作目录与配置文件:{程序目录}/game-sl/config.json
  • 内置游戏配置模板(可在 UI 中新增/编辑游戏)。
  • 路径模板占位符解析:{AppData}{Steam}{SteamUID}{Home}/{User}
  • 自动检测 Steam 安装目录与 userdata 下可用 Steam UID 列表。
  • 主界面游戏卡片展示、排序(上移/下移/置顶)。
  • 主界面支持删除游戏(双击删除按钮 + 二次确认),并联动清理该游戏全部备份文件。
  • 备份创建:
    • 备份文件名:{游戏名}-Backup-YYYYMMDD-HHMMSS.zip
    • 可选备注写入同名 .txt
    • 更新 lastSave
  • 备份列表:
    • 扫描 backup 目录
    • 识别 .zip/.7z
    • 解析文件名时间戳,失败时回退文件修改时间排序
    • 读取/编辑备注
  • 删除备份:二次确认后将备份及同名备注送入回收站。
  • 复原备份(已实现,不再是纯占位):
    • 二次确认
    • 可配置“复原前额外备份”(默认开启)
    • 先删除现有存档(回收站)再解压
    • 失败时尝试用额外备份回滚
  • 设置页:
    • 相对时间显示开关
    • 复原前额外备份开关
  • 软件信息页:版本信息、GitHub 链接。

prompt/框架.md 对照

已完成

  • 配置文件结构总体符合设计(settings/games/version)。
  • 支持用户目录与 Steam 存档路径模板。
  • 启动后可获取 Steam UID 并供前端选择。
  • 支持备份备注、备注文件、备份列表、备注编辑、删除二次确认。
  • UI 拆分为主界面/配置界面/软件信息界面。

部分完成(存在差异)

  • 备份压缩格式:
    • 设计为 .7z
    • 当前实现为 .zip(列表读取兼容 .7z,但复原仅支持 .zip
  • 复原模块:
    • 设计文档中“现阶段先不做”
    • 当前已实现 zip 复原闭环

未完成

  • 复原 .7z 支持(当前仅 .zip 可复原)。

已知问题与风险

  • lastSave 目前在“备份成功”和“复原成功”都会更新。语义上若定义为“上次备份时间”,则复原后更新会造成显示偏差。
  • 备份列表会显示 .7z,但点击复原会失败(当前复原仅支持 .zip)。
  • 当前 tauri.conf.jsonapp.security.cspnull,生产安全基线偏弱。

下一步开发建议(优先级)

  1. 统一压缩策略:
    • 方案 A:全面切换到 .7z(并补齐复原)
    • 方案 B:明确以 .zip 为主,文档与 UI 文案同步
  2. 统一时间语义:区分“上次备份时间”与“上次复原时间”。
  3. 增加关键流程测试:路径解析、备份/删除/复原、配置迁移。

CSP 建议(支持任意来源图片)

当前需求要求允许用户自定义任意图片来源,可使用“尽量收敛但放开 img-src”的策略。

src-tauri/tauri.conf.json 推荐示例(生产):

{
	"app": {
		"security": {
			"csp": {
				"default-src": "'self'",
				"connect-src": "'self' ipc: http://ipc.localhost",
				"img-src": "* data: blob: asset: http://asset.localhost https://asset.localhost",
				"style-src": "'self' 'unsafe-inline'",
				"font-src": "'self' data:",
				"object-src": "'none'",
				"frame-src": "'none'"
			},
			"devCsp": {
				"default-src": "'self'",
				"connect-src": "'self' ipc: http://ipc.localhost ws://localhost:2333 ws://localhost:23333",
				"img-src": "* data: blob: asset: http://asset.localhost https://asset.localhost",
				"style-src": "'self' 'unsafe-inline'",
				"font-src": "'self' data:",
				"object-src": "'none'",
				"frame-src": "'none'"
			}
		}
	}
}

说明:

  • img-src 放开为 * 以满足“任意来源图片”需求,同时保留 data:/blob:/asset:
  • 其他指令维持收敛,避免把脚本来源也放开。
  • devCsp 单独放开本地 ws/hmr,避免开发期白屏。

运行

pnpm install
pnpm tauri:dev

About

(开发中)一个简单好用的游戏存档管理器 A light-weight game save manager

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors