Library backup
Create backup
Snapshot your library, categories, and tracker links
{#if backupError}
{backupError}
{/if}
{#if backupList.length === 0}
No backups yet — create one above.
{:else}
{#each backupList as backup}
{backup.name}
{/each}
{/if}
{#if restoreFile}
{/if}
{#if validateError}
{validateError}
{/if}
{#if validateResult}
{#if validateResult.missingSources.length === 0 && validateResult.missingTrackers.length === 0}
✓ All sources and trackers present
{:else}
{#if validateResult.missingSources.length > 0}
Missing sources
{validateResult.missingSources.map(s => s.name).join(', ')}
{/if}
{#if validateResult.missingTrackers.length > 0}
Missing trackers
{validateResult.missingTrackers.map(t => t.name).join(', ')}
{/if}
{/if}
{/if}
{#if restoreError}
{restoreError}
{/if}
{#if restoreStatus}
{restoreStatus.state === 'SUCCESS' ? '✓ Restore complete' :
restoreStatus.state === 'FAILURE' ? '✗ Restore failed' : 'Restoring…'}
{#if restoreStatus.totalManga > 0}
{restoreStatus.mangaProgress} / {restoreStatus.totalManga} manga
{/if}
{#if restoreStatus.state !== 'SUCCESS' && restoreStatus.state !== 'FAILURE' && restoreStatus.totalManga > 0}
{/if}
{/if}
App data backup
Export settings
Save all Moku app settings to a .zip via a native save dialog.
Import settings
Restore from a previously exported .zip file. Reloads the app immediately.
{#if appDataError}
{appDataError}
{/if}
{#if appDataMsg}
{appDataMsg}
{/if}
{#if appDataBackupDir}
Auto-backup location
Pre-update snapshots are kept here (last 5).
{/if}