# Rollback Whale [中文](README.zh.md) | English **A well-fed guardian that helps DeepSeek Harness swim back to a healthy checkpoint.** Rollback Whale is an independently installable DSH plugin. It adds a compact power-style menu to the sidebar and a complete checkpoint manager to Settings. The recovery guardian and its payload store live outside the DSH checkout, so a broken UI or plugin composition does not remove the command-line escape hatch. ## Install ```sh dsh plugin --profile web add github:ccbili30-collab/dsh-plugin-rollback-whale ``` Restart the Web profile after installation. When DSH is launched from a Git checkout, Rollback Whale finds the source root automatically. Otherwise set `DSH_SOURCE_HOME=/path/to/deepseek-harness` before launch. To remove it: ```sh dsh plugin --profile web remove dsh-plugin-rollback-whale ``` ## Screenshots | Quick power menu | Management in Settings | | --- | --- | | ![Rollback Whale power menu](assets/rollback-whale-button.png) | ![Rollback Whale settings](assets/rollback-whale-settings.png) | ## What it protects - Creates immutable checkpoints from the current Git checkout and DSH control files. - Stores checkpoints under `~/.dsh-recovery` by default, outside both the checkout and `DSH_HOME`. - Verifies every payload with SHA-256 before restore. - Creates an automatic rescue checkpoint, shuts DSH down, restores offline, and restarts the original launcher. - Provides `rollback-whale` as a boot-independent CLI when the Web profile cannot start. Credentials, conversations, attachments, storage data, workspaces, and installed dependencies are deliberately excluded. This is safe rollback—not a data-erasing factory reset. ## Emergency CLI ```sh rollback-whale list rollback-whale create --source /path/to/deepseek-harness --label "before plugin install" rollback-whale verify CHECKPOINT_ID rollback-whale restore CHECKPOINT_ID --confirm CHECKPOINT_ID --offline --source /path/to/deepseek-harness ``` Stop DSH before using the manual `restore` command. UI-initiated restore handles shutdown and restart through the detached guardian. ## License MIT