strapi-content-sync-pro 1.0.3 → 1.0.5

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.
Files changed (54) hide show
  1. package/README.md +33 -14
  2. package/admin/src/components/BulkTransferTab.jsx +880 -0
  3. package/admin/src/components/ConfigTab.jsx +81 -3
  4. package/admin/src/components/HelpTab.jsx +148 -5
  5. package/admin/src/components/MediaTab.jsx +141 -30
  6. package/admin/src/components/SyncTab.jsx +2 -0
  7. package/admin/src/pages/App/index.jsx +12 -1
  8. package/docs/Screenshot 2026-04-22 183540.png +0 -0
  9. package/docs/Screenshot 2026-04-22 183552.png +0 -0
  10. package/docs/Screenshot 2026-04-23 114332.png +0 -0
  11. package/docs/Screenshot 2026-04-23 114644.png +0 -0
  12. package/docs/Screenshot 2026-04-23 114651.png +0 -0
  13. package/docs/Screenshot 2026-04-23 114737.png +0 -0
  14. package/docs/Screenshot 2026-04-23 114904.png +0 -0
  15. package/docs/Screenshot 2026-04-23 114940.png +0 -0
  16. package/docs/Screenshot 2026-04-23 115003.png +0 -0
  17. package/docs/Screenshot 2026-04-23 115024.png +0 -0
  18. package/docs/Screenshot 2026-04-23 115116.png +0 -0
  19. package/docs/Screenshot 2026-04-23 115141.png +0 -0
  20. package/docs/Screenshot 2026-04-23 115252.png +0 -0
  21. package/docs/Screenshot 2026-04-23 115448.png +0 -0
  22. package/docs/Screenshot 2026-04-23 120534.png +0 -0
  23. package/docs/Screenshot 2026-04-23 122544.png +0 -0
  24. package/docs/Screenshot 2026-04-23 122712.png +0 -0
  25. package/docs/Screenshot 2026-04-23 122730.png +0 -0
  26. package/docs/Screenshot 2026-04-23 122858.png +0 -0
  27. package/docs/Screenshot 2026-04-23 122924.png +0 -0
  28. package/docs/Screenshot 2026-04-23 122937.png +0 -0
  29. package/package.json +13 -4
  30. package/server/src/controllers/bulk-transfer.js +141 -0
  31. package/server/src/controllers/config.js +76 -3
  32. package/server/src/controllers/index.js +2 -0
  33. package/server/src/controllers/sync-media.js +24 -0
  34. package/server/src/routes/index.js +18 -0
  35. package/server/src/services/bulk-transfer.js +837 -0
  36. package/server/src/services/index.js +2 -0
  37. package/server/src/services/sync-media.js +168 -32
  38. package/server/src/services/sync.js +137 -1
  39. package/docs/Screenshot 2026-04-20 160506.png +0 -0
  40. package/docs/Screenshot 2026-04-20 160558.png +0 -0
  41. package/docs/Screenshot 2026-04-20 175903.png +0 -0
  42. package/docs/Screenshot 2026-04-20 175931.png +0 -0
  43. package/docs/Screenshot 2026-04-20 180001.png +0 -0
  44. package/docs/Screenshot 2026-04-20 180041.png +0 -0
  45. package/docs/Screenshot 2026-04-20 180116.png +0 -0
  46. package/docs/Screenshot 2026-04-20 180135.png +0 -0
  47. package/docs/Screenshot 2026-04-20 180202.png +0 -0
  48. package/docs/Screenshot 2026-04-20 180228.png +0 -0
  49. package/docs/Screenshot 2026-04-20 180251.png +0 -0
  50. package/docs/Screenshot 2026-04-20 180301.png +0 -0
  51. package/docs/clipchamp-screen-recording-script.md +0 -0
  52. package/docs/production-readiness-status.md +0 -34
  53. package/docs/production-readiness-test-matrix.md +0 -151
  54. package/docs/test-environments-setup-legacy.txt +0 -60
package/README.md CHANGED
@@ -14,7 +14,7 @@ A powerful Strapi v5 plugin to copy, migrate, and live-sync content, media, and
14
14
  Plugin intro: https://youtu.be/hr3dD6dLgLQ
15
15
 
16
16
  <a href="https://youtu.be/hr3dD6dLgLQ" target="_blank" rel="noopener noreferrer">
17
- <img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20160506.png" alt="Content Sync Pro — watch the intro video" width="100%" />
17
+ <img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20122937.png" alt="Content Sync Pro — watch the intro video" width="100%" />
18
18
  </a>
19
19
 
20
20
  ## Screenshots
@@ -26,24 +26,39 @@ Plugin intro: https://youtu.be/hr3dD6dLgLQ
26
26
 
27
27
  <table>
28
28
  <tr>
29
- <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20160506.png" alt="Content Sync Pro - screenshot 1" width="100%" /></td>
30
- <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20160558.png" alt="Content Sync Pro - screenshot 2" width="100%" /></td>
31
- <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20175903.png" alt="Content Sync Pro - screenshot 3" width="100%" /></td>
29
+ <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20114332.png" alt="Content Sync Pro - screenshot 1" width="100%" /></td>
30
+ <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20114644.png" alt="Content Sync Pro - screenshot 2" width="100%" /></td>
31
+ <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20114651.png" alt="Content Sync Pro - screenshot 3" width="100%" /></td>
32
32
  </tr>
33
33
  <tr>
34
- <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20175931.png" alt="Content Sync Pro - screenshot 4" width="100%" /></td>
35
- <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20180001.png" alt="Content Sync Pro - screenshot 5" width="100%" /></td>
36
- <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20180041.png" alt="Content Sync Pro - screenshot 6" width="100%" /></td>
34
+ <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20114737.png" alt="Content Sync Pro - screenshot 4" width="100%" /></td>
35
+ <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20114904.png" alt="Content Sync Pro - screenshot 5" width="100%" /></td>
36
+ <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20114940.png" alt="Content Sync Pro - screenshot 6" width="100%" /></td>
37
37
  </tr>
38
38
  <tr>
39
- <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20180116.png" alt="Content Sync Pro - screenshot 7" width="100%" /></td>
40
- <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20180135.png" alt="Content Sync Pro - screenshot 8" width="100%" /></td>
41
- <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20180202.png" alt="Content Sync Pro - screenshot 9" width="100%" /></td>
39
+ <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20115003.png" alt="Content Sync Pro - screenshot 7" width="100%" /></td>
40
+ <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20115024.png" alt="Content Sync Pro - screenshot 8" width="100%" /></td>
41
+ <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20115116.png" alt="Content Sync Pro - screenshot 9" width="100%" /></td>
42
42
  </tr>
43
43
  <tr>
44
- <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20180228.png" alt="Content Sync Pro - screenshot 10" width="100%" /></td>
45
- <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20180251.png" alt="Content Sync Pro - screenshot 11" width="100%" /></td>
46
- <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-20%20180301.png" alt="Content Sync Pro - screenshot 12" width="100%" /></td>
44
+ <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20115141.png" alt="Content Sync Pro - screenshot 10" width="100%" /></td>
45
+ <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20115252.png" alt="Content Sync Pro - screenshot 11" width="100%" /></td>
46
+ <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20115448.png" alt="Content Sync Pro - screenshot 12" width="100%" /></td>
47
+ </tr>
48
+ <tr>
49
+ <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20120534.png" alt="Content Sync Pro - screenshot 13" width="100%" /></td>
50
+ <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20122544.png" alt="Content Sync Pro - screenshot 14" width="100%" /></td>
51
+ <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20122712.png" alt="Content Sync Pro - screenshot 15" width="100%" /></td>
52
+ </tr>
53
+ <tr>
54
+ <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20122730.png" alt="Content Sync Pro - screenshot 16" width="100%" /></td>
55
+ <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20122858.png" alt="Content Sync Pro - screenshot 17" width="100%" /></td>
56
+ <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20122924.png" alt="Content Sync Pro - screenshot 18" width="100%" /></td>
57
+ </tr>
58
+ <tr>
59
+ <td width="33%"><img src="https://raw.githubusercontent.com/eharain/strapi-content-sync-pro/master/docs/Screenshot%202026-04-23%20122937.png" alt="Content Sync Pro - screenshot 19" width="100%" /></td>
60
+ <td width="33%"></td>
61
+ <td width="33%"></td>
47
62
  </tr>
48
63
  </table>
49
64
  </details>
@@ -60,6 +75,8 @@ Plugin intro: https://youtu.be/hr3dD6dLgLQ
60
75
  - **Enforcement Checks** - Pre-sync schema compatibility validation, version checks, and server time drift checks.
61
76
  - **Alerts & Logging** - Detailed sync logs. Receive success/failure alerts via Email (using Strapi's email provider) or Webhooks.
62
77
  - **Stats & Run Reports** - Local/remote counts and newest timestamps per content type, with before/after snapshots for each sync run.
78
+ - **Bulk Transfer** - Dedicated top-level tab for one-click full pull or full push across selectable scopes (content, media, Strapi users, admin users). Expands into per-content-type and per-media-profile chunks with page-level progress, selectable chunks, optional deletion sync, and auto-continue or manual chunk-by-chunk stepping.
79
+ - **Pause / Resume / Cancel & Persisted History** - Bulk Transfer jobs can be paused after the current page (cursor, page number, and counters preserved), cancelled without losing progress, and resumed later from the exact saved state. Every run is stored in a persistent history so you can inspect per-chunk results and **restart** or **resume** any previous run — even after a Strapi restart.
63
80
  - **Retention Controls** - Manual clear and automatic retention limits for logs and run reports.
64
81
  - **Secure Communication** - API token authentication combined with HMAC-SHA256 request signing using a shared secret.
65
82
 
@@ -189,6 +206,7 @@ Full media synchronization between Strapi instances:
189
206
  - **Profile-based** — Create media sync profiles with direction, conflict strategy, MIME filters, filename patterns, and execution settings.
190
207
  - **DB + File Sync** — Syncs both the `plugin::upload.file` database rows and the actual file bytes.
191
208
  - **Morph Link Remapping** — Syncs `files_related_morphs` links by mapping file + related entities through documentId, then remapping to local numeric ids before insert.
209
+ - **Live Status + Pause/Resume/Stop** — The Media tab polls status every 2 s while a profile is running or paused and shows live phase and counters (`pushed`, `pulled`, `skipped`, `errors`). Long runs can be paused, resumed, or stopped cooperatively from the UI or via `POST /api/strapi-content-sync-pro/media-sync/profiles/:id/pause|resume|cancel` (URL strategy; rsync runs cannot be paused mid-process).
192
210
 
193
211
  ## Enforcement
194
212
 
@@ -291,7 +309,8 @@ Check the **Logs** tab for detailed sync history including:
291
309
 
292
310
  ## Contributing
293
311
 
294
- Contributions are welcome! Please open an issue or submit a pull request.
312
+ Contributions are welcome! Please open an issue or submit a pull request.
313
+
295
314
 
296
315
  ## License
297
316