mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-07-06 22:55:56 +08:00
### What this PR does Before this PR: - Backup system used a complex nested structure that was harder to maintain - No support for legacy backup format (LAN transfer) - Limited path security validation - electron-store config.json was stored in userData root, not included in backups After this PR: - Implements direct backup and restore methods for IndexedDB and Local Storage - Adds legacy backup (LAN transfer) functionality for backward compatibility - Implements startup restoration support - Enhances path security with `resolveAndValidatePath` to prevent directory traversal attacks - Simplifies BackupManager constructor and methods - Adds Joplin and Siyuan icons - Updates backup metadata structure and progress handling - Moves electron-store config.json to userData/Data directory so it's included in backups - Adds automatic migration from legacy config location Fixes # ### Why we need it and why it was done in this way The following tradeoffs were made: - Added path validation overhead for enhanced security - Legacy backup format support increases code complexity but ensures backward compatibility The following alternatives were considered: - Keeping the old backup structure, but it was harder to maintain and extend Links to places where the discussion took place: N/A ### Breaking changes The backup format has been updated to a new version. Existing backups created with older versions will still be supported through the legacy backup functionality. ### Special notes for your reviewer - The `resolveAndValidatePath` utility prevents path traversal attacks by validating that resolved paths stay within expected directories - The BasicDataSettings component was extracted to improve code organization - Tests have been updated to cover the new backup functionality - electron-store config location changed from `userData/config.json` to `userData/Data/config.json` with automatic migration ### Checklist This checklist is not enforcing, but it's a reminder of items that could be relevant to every PR. Approvers are expected to review this list. - [x] PR: The PR description is expressive enough and will help future contributors - [x] Code: [Write code that humans can understand](https://en.wikiquote.org/wiki/Martin_Fowler#code-for-humans) and [Keep it simple](https://en.wikipedia.org/wiki/KISS_principle) - [x] Refactor: You have [left the code cleaner than you found it (Boy Scout Rule)](https://learning.oreilly.com/library/view/97-things-every/9780596809515/ch08.html) - [x] Upgrade: Impact of this change on upgrade flows was considered and addressed if required - [x] Documentation: A [user-guide update](https://docs.cherry-ai.com) was considered and is present (link) or not required. Check this only when the PR introduces or changes a user-facing feature or behavior. - [ ] Self-review: I have reviewed my own code (e.g., via [`/gh-pr-review`](/.claude/skills/gh-pr-review/SKILL.md), `gh pr diff`, or GitHub UI) before requesting review from others ### Release note ```release-note Enhanced backup system with new format (v6), legacy backup support, improved path security, and config.json now included in backups ``` --------- Signed-off-by: kangfenmao <kangfenmao@qq.com>