Skip to content

Commit ffb5ab2

Browse files
feat(storage): add workspace backup and reset
1 parent d1b3556 commit ffb5ab2

42 files changed

Lines changed: 2408 additions & 366 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/desktop-build.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,5 @@ jobs:
6868
with:
6969
name: "Markdown Viewer ${{ github.ref_name }}"
7070
generate_release_notes: true
71+
prerelease: ${{ contains(github.ref_name, '-') }}
7172
files: desktop-app/release-assets/*

CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,19 @@
33
All notable code changes to **Markdown Viewer** are documented here.
44
Non-code commits (documentation, planning, README-only updates) are excluded.
55

6+
## v3.9.5-beta.1
7+
8+
- **Description:** Added complete workspace backup, encrypted restoration, and destructive reset workflows across the web and desktop applications.
9+
- **Storage and Backup:** Renamed the settings module, fixed its missing icon, added exact workspace usage and total file counts, and added ZIP backup/import with folder-structure preservation.
10+
- **Encrypted Backups:** Added an opt-in control that includes Secret Workspace files as their existing AES-GCM ciphertext. Backups never decrypt secure content, and restored content still requires the original access key.
11+
- **Reset Safety:** Reset now permanently clears documents, folders, preferences, Secret Workspace data, history, and trash. The confirmation provides a direct Backup route, disables repeated submission, and uses the application loading spinner.
12+
- **Performance:** The ZIP engine remains lazy-loaded, while documents continue to use per-document storage, on-demand content loading, and the bounded 20-document in-memory cache.
13+
- **Desktop:** Added offline JSZip packaging, binary ZIP filesystem permissions, seven-platform preview builds, SHA-256 checksums, and prerelease publishing.
14+
- **Date:** 2026-07-29
15+
- **URL:** https://github.com/ThisIs-Developer/Markdown-Viewer/releases/tag/v3.9.5-beta.1
16+
17+
---
18+
619
## v3.9.4
720

821
- **Description:** Expanded Markdown Viewer with durable media workflows, stronger document organization, reliable two-document split previews, and broader deployment and documentation coverage.

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,9 @@ Remote renderer services receive the source of the diagram they render. Do not s
153153
## Important Limits
154154

155155
- Markdown Viewer does not impose a document-count limit. The practical limit is available browser or filesystem storage.
156-
- Browser documents use per-document IndexedDB records and load content on demand. Use **Storage & recovery** to inspect quota and request persistent storage.
156+
- Browser documents use per-document IndexedDB records and load content on demand. Use **Storage and Backup** to inspect exact workspace usage, request persistent storage, export a complete ZIP backup, or restore one.
157157
- Desktop documents live as ordinary `.md` files under `Documents/Markdown Viewer Vault` by default. App upgrades and executable replacement do not remove that vault.
158+
- Workspace backup ZIPs preserve folders and can include Secret Workspace ciphertext. Secure files remain encrypted and require the original access key after import.
158159
- A local Markdown file larger than 10 MB is rejected.
159160
- The public GitHub importer shows at most 30 Markdown files for a repository or folder result.
160161
- Managed source media is limited to 25 MiB before processing; stored payload limits are 300 KiB for still images, 5 MiB for GIFs, and 10 MiB for videos.

assets/i18n/de.json

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,14 +1050,11 @@
10501050
"1 file": "1 Datei",
10511051
"Browser storage": "Browserspeicher",
10521052
"Checking…": "Überprüfen…",
1053-
"Close storage settings": "Speichereinstellungen schließen",
10541053
"Deleted documents are moved to recoverable trash. Desktop edits keep recent history inside the vault.": "Gelöschte Dokumente werden in den wiederherstellbaren Papierkorb verschoben. Desktop-Änderungen bewahren den aktuellen Verlauf im Tresor auf.",
10551054
"Document unavailable": "Dokument nicht verfügbar",
1056-
"Documents": "Dokumente",
10571055
"Documents are stored individually and loaded only when opened. The application does not impose a document-count limit.": "Dokumente werden einzeln gespeichert und erst beim Öffnen geladen. Der Antrag sieht keine Begrenzung der Dokumentenanzahl vor.",
10581056
"Documents are stored locally": "Dokumente werden lokal gespeichert",
10591057
"Keep browser data": "Browserdaten behalten",
1060-
"Keep documents and reset the session": "Dokumente behalten und die Sitzung zurücksetzen",
10611058
"Locate vault": "Tresor suchen",
10621059
"Location": "Standort",
10631060
"Move to\\u2026": "Gehe nach\\u2026",
@@ -1068,20 +1065,13 @@
10681065
"Persistence": "Beharrlichkeit",
10691066
"Private mode is on. Existing documents remain safe; new session changes are not persisted.": "Der private Modus ist aktiviert. Vorhandene Dokumente bleiben sicher; Neue Sitzungsänderungen werden nicht beibehalten.",
10701067
"Private session": "Private Sitzung",
1071-
"Reset app state": "App-Status zurücksetzen",
1072-
"Reset application state": "Anwendungsstatus zurücksetzen",
1073-
"Reset application state?": "Anwendungsstatus zurücksetzen?",
1074-
"Reset state": "Status zurücksetzen",
10751068
"selected file": "ausgewählte Datei",
10761069
"selected files": "ausgewählte Dateien",
10771070
"Selected files are already in that location.": "Ausgewählte Dateien befinden sich bereits an diesem Speicherort.",
10781071
"selected files.": "ausgewählte Dateien.",
10791072
"Storage": "Lagerung",
1080-
"Storage & recovery": "Speicherung und Wiederherstellung",
1081-
"Storage and recovery": "Speicherung und Wiederherstellung",
10821073
"The document could not be read from local storage.": "Das Dokument konnte nicht aus dem lokalen Speicher gelesen werden.",
10831074
"The workspace could not be saved. Existing saved documents were kept.": "Der Arbeitsbereich konnte nicht gespeichert werden. Vorhandene gespeicherte Dokumente wurden beibehalten.",
1084-
"This closes the current session and restores the default layout. Documents, review data, Secret Workspace, history, and trash remain safe.": "Dadurch wird die aktuelle Sitzung geschlossen und das Standardlayout wiederhergestellt. Dokumente, Überprüfungsdaten, Secret Workspace, Verlauf und Papierkorb bleiben sicher.",
10851075
"Unable to load storage settings.": "Speichereinstellungen können nicht geladen werden.",
10861076
"Unable to locate the vault.": "Der Tresor konnte nicht gefunden werden.",
10871077
"Unable to open the vault folder.": "Der Tresorordner kann nicht geöffnet werden.",
@@ -1090,8 +1080,48 @@
10901080
"Vault located. Restart Markdown Viewer to open it.": "Tresor gefunden. Starten Sie Markdown Viewer neu, um es zu öffnen.",
10911081
"Vault location saved": "Tresorstandort gespeichert",
10921082
"Vault location saved. Restart Markdown Viewer to open it.": "Tresorstandort gespeichert. Starten Sie Markdown Viewer neu, um es zu öffnen.",
1093-
"Vault, usage, and persistence": "Tresor, Nutzung und Persistenz",
10941083
"Workspace storage is unavailable.": "Der Arbeitsbereichsspeicher ist nicht verfügbar.",
10951084
"Show": "Anzeigen",
1096-
"Show {{0}} more": "{{0}} mehr anzeigen"
1085+
"Show {{0}} more": "{{0}} mehr anzeigen",
1086+
"3.9.5-beta.1": "3.9.5-beta.1",
1087+
"Back up or restore your workspace": "Sichern oder wiederherstellen Sie Ihren Arbeitsbereich",
1088+
"Backup": "Backup",
1089+
"Backup complete": "Sicherung abgeschlossen",
1090+
"Backup failed": "Sicherung fehlgeschlagen",
1091+
"Clearing the current workspace…": "Den aktuellen Arbeitsbereich löschen…",
1092+
"Clearing workspace settings…": "Arbeitsbereichseinstellungen werden gelöscht…",
1093+
"Close storage and backup": "Speicher und Backup schließen",
1094+
"Collecting workspace files…": "Arbeitsbereichsdateien werden gesammelt…",
1095+
"Compressing workspace…": "Arbeitsbereich wird komprimiert…",
1096+
"Confirm Reset": "Bestätigen Sie das Zurücksetzen",
1097+
"Creating workspace backup": "Arbeitsbereich-Backup erstellen",
1098+
"Import Backup": "Backup importieren",
1099+
"Import workspace backup": "Arbeitsbereich-Backup importieren",
1100+
"Importing workspace backup": "Arbeitsbereich-Backup wird importiert",
1101+
"Include secure workspace files": "Sichere Arbeitsbereichsdateien einschließen",
1102+
"Markdown Viewer is ready for a fresh start.": "Markdown Viewer ist bereit für einen Neuanfang.",
1103+
"Opening a fresh workspace…": "Einen neuen Arbeitsbereich eröffnen…",
1104+
"Permanently delete all workspace data": "Alle Arbeitsbereichsdaten dauerhaft löschen",
1105+
"Permanently deleting workspace files…": "Arbeitsbereichsdateien werden dauerhaft gelöscht…",
1106+
"Preparing a fresh workspace…": "Einen neuen Arbeitsplatz vorbereiten…",
1107+
"Reloading restored workspace…": "Wiederhergestellter Arbeitsbereich wird neu geladen…",
1108+
"Replace current workspace?": "Aktuellen Arbeitsbereich ersetzen?",
1109+
"Reset failed": "Zurücksetzen fehlgeschlagen",
1110+
"Reset workspace": "Arbeitsbereich zurücksetzen",
1111+
"Reset workspace?": "Arbeitsbereich zurücksetzen?",
1112+
"Resetting workspace": "Arbeitsbereich wird zurückgesetzt",
1113+
"Save workspace backup": "Arbeitsbereich-Backup speichern",
1114+
"Secure workspace files will remain encrypted in the backup. They can only be accessed after importing the backup into Markdown Viewer and unlocking them with the correct password.": "Sichere Arbeitsbereichsdateien bleiben im Backup verschlüsselt. Auf sie kann erst zugegriffen werden, nachdem das Backup in Markdown Viewer importiert und mit dem richtigen Passwort entsperrt wurde.",
1115+
"Storage and backup": "Speicherung und Backup",
1116+
"The backup could not be imported.": "Das Backup konnte nicht importiert werden.",
1117+
"The workspace backup could not be created.": "Die Sicherung des Arbeitsbereichs konnte nicht erstellt werden.",
1118+
"The workspace could not be reset.": "Der Arbeitsbereich konnte nicht zurückgesetzt werden.",
1119+
"This permanently deletes all documents, folders, settings, Secret Workspace files, history, trash, and other workspace data. This action cannot be undone.": "Dadurch werden alle Dokumente, Ordner, Einstellungen, Secret Workspace-Dateien, Verlauf, Papierkorb und andere Workspace-Daten dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.",
1120+
"total (": "insgesamt (",
1121+
"Total files": "Gesamtdateien",
1122+
"Unable to create the workspace backup.": "Die Sicherung des Arbeitsbereichs konnte nicht erstellt werden.",
1123+
"Unable to select the workspace backup.": "Die Sicherung des Arbeitsbereichs kann nicht ausgewählt werden.",
1124+
"Validating backup…": "Backup wird validiert…",
1125+
"Workspace reset": "Arbeitsbereich zurückgesetzt",
1126+
"Storage and Backup": "Speicherung und Backup"
10971127
}

0 commit comments

Comments
 (0)