joplin-plugin-incremental-backup 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -44,6 +44,7 @@ Each snapshot is a complete, self-contained copy of your data. Consecutive snaps
44
44
  ├── 20261021T090000/ ← next snapshot (unchanged files hardlinked)
45
45
  ├── _joplin_active_20261021T090000_12345_abcdef/ ← staging dir (only while running)
46
46
  ├── latest.txt ← name of the newest snapshot
47
+ ├── .joplin-incremental-backup ← marker: this is a backup directory
47
48
  └── .backup.lock ← present only while a backup is running
48
49
  ```
49
50
 
@@ -51,6 +52,14 @@ Notes, notebooks, tags and note-tags are each written as a single `<id>.md` file
51
52
 
52
53
  The staging directory is unique per run (embedding the start time, process id, and a random suffix) so two concurrent runs can never write into the same directory. On startup, any leftover staging directories older than the stale-lock threshold are cleaned up — unless another Joplin instance holds a fresh lock, in which case they are left untouched.
53
54
 
55
+ ### Disconnected backup drives
56
+
57
+ The first backup to a directory creates it and writes a marker file, `.joplin-incremental-backup`. After that, the plugin refuses to back up to that directory if the marker is missing, instead of recreating the directory. This protects against an unmounted drive: without the check, a path like `/mnt/backup/joplin` would be recreated on the internal disk, the snapshots would go there, and they would be hidden under the mount point once the drive came back.
58
+
59
+ If you moved or deleted the backups on purpose, create an empty `.joplin-incremental-backup` file in the directory, or choose a different directory.
60
+
61
+ When upgrading from a version without the marker, the first backup adopts your existing backup directory. If that directory does not exist at that point but backups have been made before, the plugin assumes the drive is not mounted and refuses rather than creating it. If it really is a new location, create the directory yourself and the next backup will use it.
62
+
54
63
  ### Scheduler catch-up behaviour
55
64
 
56
65
  When Joplin starts, the plugin checks when the last successful backup finished:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "joplin-plugin-incremental-backup",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "scripts": {
5
5
  "dist": "webpack --env joplin-plugin-config=buildMain && webpack --env joplin-plugin-config=buildExtraScripts && webpack --env joplin-plugin-config=createArchive",
6
6
  "prepare": "npm run dist",
@@ -2,7 +2,7 @@
2
2
  "manifest_version": 1,
3
3
  "id": "io.github.raytray.joplin-incremental-backup",
4
4
  "app_min_version": "3.7",
5
- "version": "1.0.3",
5
+ "version": "1.0.4",
6
6
  "name": "Incremental Backup",
7
7
  "description": "Deduplicated incremental snapshots of your Joplin data using the native Raw export format.",
8
8
  "author": "raytray",
@@ -20,6 +20,6 @@
20
20
  "screenshots": [],
21
21
  "icons": {},
22
22
  "promo_tile": {},
23
- "_publish_hash": "sha256:cfeee5c68acb2a7ddf31f3f1981dea03ff960cefde01932ef16ccaedc48611d2",
24
- "_publish_commit": "main:24c6b70de862802fe79d3c67b2afa903b4662630"
23
+ "_publish_hash": "sha256:a05c0de08c7351568246782a0ef6a0da310188eab923c72626231aa7b866359b",
24
+ "_publish_commit": "main:c56fbc960c9dd41f40acdd0fb75306177e1e28d8"
25
25
  }