@buoy-gg/time-machine 7.0.36 → 7.0.39

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 (132) hide show
  1. package/README.md +40 -35
  2. package/lib/commonjs/components/HeaderActions.js +91 -0
  3. package/lib/commonjs/components/HeaderActions.js.map +1 -0
  4. package/lib/commonjs/components/HeaderReloadButton.js +22 -25
  5. package/lib/commonjs/components/HeaderReloadButton.js.map +1 -1
  6. package/lib/commonjs/components/TimeMachineBody.js +68 -13
  7. package/lib/commonjs/components/TimeMachineBody.js.map +1 -1
  8. package/lib/commonjs/components/floating/NamePromptModal.js +193 -0
  9. package/lib/commonjs/components/floating/NamePromptModal.js.map +1 -0
  10. package/lib/commonjs/components/floating/TimeMachineFloatingTool.js +715 -0
  11. package/lib/commonjs/components/floating/TimeMachineFloatingTool.js.map +1 -0
  12. package/lib/commonjs/components/floating/armedPoint.js +92 -0
  13. package/lib/commonjs/components/floating/armedPoint.js.map +1 -0
  14. package/lib/commonjs/components/floating/barSettings.js +66 -0
  15. package/lib/commonjs/components/floating/barSettings.js.map +1 -0
  16. package/lib/commonjs/components/list/CaptureBar.js +2 -0
  17. package/lib/commonjs/components/list/CaptureBar.js.map +1 -1
  18. package/lib/commonjs/components/list/RestoreOutcomeCard.js +2 -0
  19. package/lib/commonjs/components/list/RestoreOutcomeCard.js.map +1 -1
  20. package/lib/commonjs/components/list/SnapshotRow.js +37 -13
  21. package/lib/commonjs/components/list/SnapshotRow.js.map +1 -1
  22. package/lib/commonjs/components/list/SourcesStrip.js +127 -83
  23. package/lib/commonjs/components/list/SourcesStrip.js.map +1 -1
  24. package/lib/commonjs/components/list/UndoDeleteBar.js +3 -1
  25. package/lib/commonjs/components/list/UndoDeleteBar.js.map +1 -1
  26. package/lib/commonjs/components/preview/RestorePreviewScreen.js +7 -2
  27. package/lib/commonjs/components/preview/RestorePreviewScreen.js.map +1 -1
  28. package/lib/commonjs/components/sources.js +19 -8
  29. package/lib/commonjs/components/sources.js.map +1 -1
  30. package/lib/commonjs/index.js +42 -0
  31. package/lib/commonjs/index.js.map +1 -1
  32. package/lib/commonjs/preset.js +6 -4
  33. package/lib/commonjs/preset.js.map +1 -1
  34. package/lib/commonjs/store/snapshotVault.js.map +1 -1
  35. package/lib/commonjs/store/sourceIds.js +9 -0
  36. package/lib/commonjs/store/sourceIds.js.map +1 -0
  37. package/lib/commonjs/store/sourceSettings.js +79 -0
  38. package/lib/commonjs/store/sourceSettings.js.map +1 -0
  39. package/lib/commonjs/store/timeMachineStore.js +75 -10
  40. package/lib/commonjs/store/timeMachineStore.js.map +1 -1
  41. package/lib/commonjs/sync/timeMachineSyncAdapter.js +5 -1
  42. package/lib/commonjs/sync/timeMachineSyncAdapter.js.map +1 -1
  43. package/lib/commonjs/ui/SwipeActionsRow.js +14 -3
  44. package/lib/commonjs/ui/SwipeActionsRow.js.map +1 -1
  45. package/lib/commonjs/ui/primitives.js +2 -0
  46. package/lib/commonjs/ui/primitives.js.map +1 -1
  47. package/lib/commonjs/ui/tmTheme.js +18 -5
  48. package/lib/commonjs/ui/tmTheme.js.map +1 -1
  49. package/lib/module/components/HeaderActions.js +85 -0
  50. package/lib/module/components/HeaderActions.js.map +1 -0
  51. package/lib/module/components/HeaderReloadButton.js +24 -27
  52. package/lib/module/components/HeaderReloadButton.js.map +1 -1
  53. package/lib/module/components/TimeMachineBody.js +71 -16
  54. package/lib/module/components/TimeMachineBody.js.map +1 -1
  55. package/lib/module/components/floating/NamePromptModal.js +188 -0
  56. package/lib/module/components/floating/NamePromptModal.js.map +1 -0
  57. package/lib/module/components/floating/TimeMachineFloatingTool.js +708 -0
  58. package/lib/module/components/floating/TimeMachineFloatingTool.js.map +1 -0
  59. package/lib/module/components/floating/armedPoint.js +82 -0
  60. package/lib/module/components/floating/armedPoint.js.map +1 -0
  61. package/lib/module/components/floating/barSettings.js +57 -0
  62. package/lib/module/components/floating/barSettings.js.map +1 -0
  63. package/lib/module/components/list/CaptureBar.js +2 -0
  64. package/lib/module/components/list/CaptureBar.js.map +1 -1
  65. package/lib/module/components/list/RestoreOutcomeCard.js +2 -0
  66. package/lib/module/components/list/RestoreOutcomeCard.js.map +1 -1
  67. package/lib/module/components/list/SnapshotRow.js +37 -13
  68. package/lib/module/components/list/SnapshotRow.js.map +1 -1
  69. package/lib/module/components/list/SourcesStrip.js +130 -84
  70. package/lib/module/components/list/SourcesStrip.js.map +1 -1
  71. package/lib/module/components/list/UndoDeleteBar.js +3 -1
  72. package/lib/module/components/list/UndoDeleteBar.js.map +1 -1
  73. package/lib/module/components/preview/RestorePreviewScreen.js +7 -2
  74. package/lib/module/components/preview/RestorePreviewScreen.js.map +1 -1
  75. package/lib/module/components/sources.js +13 -6
  76. package/lib/module/components/sources.js.map +1 -1
  77. package/lib/module/index.js +7 -1
  78. package/lib/module/index.js.map +1 -1
  79. package/lib/module/preset.js +6 -4
  80. package/lib/module/preset.js.map +1 -1
  81. package/lib/module/store/snapshotVault.js.map +1 -1
  82. package/lib/module/store/sourceIds.js +5 -0
  83. package/lib/module/store/sourceIds.js.map +1 -0
  84. package/lib/module/store/sourceSettings.js +69 -0
  85. package/lib/module/store/sourceSettings.js.map +1 -0
  86. package/lib/module/store/timeMachineStore.js +74 -9
  87. package/lib/module/store/timeMachineStore.js.map +1 -1
  88. package/lib/module/sync/timeMachineSyncAdapter.js +5 -1
  89. package/lib/module/sync/timeMachineSyncAdapter.js.map +1 -1
  90. package/lib/module/ui/SwipeActionsRow.js +14 -3
  91. package/lib/module/ui/SwipeActionsRow.js.map +1 -1
  92. package/lib/module/ui/primitives.js +2 -0
  93. package/lib/module/ui/primitives.js.map +1 -1
  94. package/lib/module/ui/tmTheme.js +18 -5
  95. package/lib/module/ui/tmTheme.js.map +1 -1
  96. package/lib/typescript/components/HeaderActions.d.ts +7 -0
  97. package/lib/typescript/components/HeaderActions.d.ts.map +1 -0
  98. package/lib/typescript/components/HeaderReloadButton.d.ts.map +1 -1
  99. package/lib/typescript/components/TimeMachineBody.d.ts.map +1 -1
  100. package/lib/typescript/components/floating/NamePromptModal.d.ts +9 -0
  101. package/lib/typescript/components/floating/NamePromptModal.d.ts.map +1 -0
  102. package/lib/typescript/components/floating/TimeMachineFloatingTool.d.ts +6 -0
  103. package/lib/typescript/components/floating/TimeMachineFloatingTool.d.ts.map +1 -0
  104. package/lib/typescript/components/floating/armedPoint.d.ts +14 -0
  105. package/lib/typescript/components/floating/armedPoint.d.ts.map +1 -0
  106. package/lib/typescript/components/floating/barSettings.d.ts +7 -0
  107. package/lib/typescript/components/floating/barSettings.d.ts.map +1 -0
  108. package/lib/typescript/components/list/SnapshotRow.d.ts +5 -1
  109. package/lib/typescript/components/list/SnapshotRow.d.ts.map +1 -1
  110. package/lib/typescript/components/list/SourcesStrip.d.ts +3 -1
  111. package/lib/typescript/components/list/SourcesStrip.d.ts.map +1 -1
  112. package/lib/typescript/components/preview/RestorePreviewScreen.d.ts.map +1 -1
  113. package/lib/typescript/components/sources.d.ts +7 -2
  114. package/lib/typescript/components/sources.d.ts.map +1 -1
  115. package/lib/typescript/index.d.ts +3 -1
  116. package/lib/typescript/index.d.ts.map +1 -1
  117. package/lib/typescript/preset.d.ts +4 -2
  118. package/lib/typescript/preset.d.ts.map +1 -1
  119. package/lib/typescript/store/snapshotVault.d.ts +6 -0
  120. package/lib/typescript/store/snapshotVault.d.ts.map +1 -1
  121. package/lib/typescript/store/sourceIds.d.ts +3 -0
  122. package/lib/typescript/store/sourceIds.d.ts.map +1 -0
  123. package/lib/typescript/store/sourceSettings.d.ts +9 -0
  124. package/lib/typescript/store/sourceSettings.d.ts.map +1 -0
  125. package/lib/typescript/store/timeMachineStore.d.ts +16 -1
  126. package/lib/typescript/store/timeMachineStore.d.ts.map +1 -1
  127. package/lib/typescript/sync/timeMachineSyncAdapter.d.ts +4 -0
  128. package/lib/typescript/sync/timeMachineSyncAdapter.d.ts.map +1 -1
  129. package/lib/typescript/ui/SwipeActionsRow.d.ts.map +1 -1
  130. package/lib/typescript/ui/tmTheme.d.ts +17 -4
  131. package/lib/typescript/ui/tmTheme.d.ts.map +1 -1
  132. package/package.json +10 -7
@@ -1 +1 @@
1
- {"version":3,"names":["_floatingToolsCore","require","_useTimeMachine","_routeRestore","ICONS","storage","StorageIcon","redux","ReduxIcon","zustand","ZustandIcon","jotai","JotaiIcon","query","QueryIcon","route","RoutesIcon","sourceIcon","id","TimeMachineIcon","ROUTE_SOURCE_ID","exports","useSourceStatuses","remoteProviders","remoteRoute","useTimeMachineState","localProviders","useSnapshotProviders","providers","map","p","label","status","routeAvailable","available","canNavigate","canCapture","canRestore","detail","isAttached","source"],"sourceRoot":"../../../src","sources":["components/sources.ts"],"mappings":";;;;;;;;;AAUA,IAAAA,kBAAA,GAAAC,OAAA;AASA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AApBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAuBA;AACA;AACA;AACA;AACA;AACA;;AAOA,MAAMG,KAAiC,GAAG;EACxCC,OAAO,EAAEC,8BAAW;EACpBC,KAAK,EAAEC,4BAAS;EAChBC,OAAO,EAAEC,8BAAW;EACpBC,KAAK,EAAEC,4BAAS;EAChBC,KAAK,EAAEC,4BAAS;EAChBC,KAAK,EAAEC;AACT,CAAC;AAEM,SAASC,UAAUA,CAACC,EAAU,EAAc;EACjD,OAAOd,KAAK,CAACc,EAAE,CAAC,IAAIC,kCAAe;AACrC;;AAEA;AACO,MAAMC,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,OAAO;AAE/B,SAASE,iBAAiBA,CAAA,EAAmB;EAClD,MAAM;IAAEC,eAAe;IAAEC;EAAY,CAAC,GAAG,IAAAC,mCAAmB,EAAC,CAAC;EAC9D,MAAMC,cAAc,GAAG,IAAAC,oCAAoB,EAAC,CAAC;EAE7C,MAAMC,SAAyB,GAC7BL,eAAe,IACfG,cAAc,CAACG,GAAG,CAAEC,CAAC,KAAM;IAAEZ,EAAE,EAAEY,CAAC,CAACZ,EAAE;IAAEa,KAAK,EAAED,CAAC,CAACC,KAAK;IAAE,GAAGD,CAAC,CAACE,MAAM,CAAC;EAAE,CAAC,CAAC,CAAC;EAE1E,MAAMC,cAAc,GAAGV,eAAe,GAClCC,WAAW,EAAEU,SAAS,KAAK,IAAI,GAC/B,IAAAC,yBAAW,EAAC,CAAC;EAEjB,OAAO,CACL,GAAGP,SAAS,EACZ;IACEV,EAAE,EAAEE,eAAe;IACnBW,KAAK,EAAE,OAAO;IACdK,UAAU,EAAEH,cAAc;IAC1BI,UAAU,EAAEJ,cAAc;IAC1B;IACA;IACA;IACAK,MAAM,EAAEL,cAAc,GAClB,4DAA4D,GAC5D;EACN,CAAC,CACF;AACH;;AAEA;AACO,SAASM,UAAUA,CAACC,MAAoB,EAAW;EACxD,OAAOA,MAAM,CAACJ,UAAU;AAC1B","ignoreList":[]}
1
+ {"version":3,"names":["_floatingToolsCore","require","_react","_useTimeMachine","_routeRestore","_sourceIds","_sourceSettings","ICONS","storage","StorageIcon","redux","ReduxIcon","zustand","ZustandIcon","jotai","JotaiIcon","query","QueryIcon","route","RoutesIcon","sourceIcon","id","TimeMachineIcon","useSourceStatuses","remoteProviders","remoteRoute","useTimeMachineState","localProviders","useSnapshotProviders","disabled","useSyncExternalStore","subscribeSourceSettings","getDisabledSources","providers","map","p","enabled","label","status","has","routeAvailable","available","canNavigate","ROUTE_SOURCE_ID","canCapture","canRestore","detail","isAttached","source"],"sourceRoot":"../../../src","sources":["components/sources.ts"],"mappings":";;;;;;;;;;;;;;AAUA,IAAAA,kBAAA,GAAAC,OAAA;AASA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AACA,IAAAK,eAAA,GAAAL,OAAA;AAvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAoCA;AACA;AACA;AACA;AACA;AACA;;AAOA,MAAMM,KAAiC,GAAG;EACxCC,OAAO,EAAEC,8BAAW;EACpBC,KAAK,EAAEC,4BAAS;EAChBC,OAAO,EAAEC,8BAAW;EACpBC,KAAK,EAAEC,4BAAS;EAChBC,KAAK,EAAEC,4BAAS;EAChBC,KAAK,EAAEC;AACT,CAAC;AAEM,SAASC,UAAUA,CAACC,EAAU,EAAc;EACjD,OAAOd,KAAK,CAACc,EAAE,CAAC,IAAIC,kCAAe;AACrC;AAEO,SAASC,iBAAiBA,CAAA,EAAmB;EAClD,MAAM;IAAEC,eAAe;IAAEC;EAAY,CAAC,GAAG,IAAAC,mCAAmB,EAAC,CAAC;EAC9D,MAAMC,cAAc,GAAG,IAAAC,oCAAoB,EAAC,CAAC;EAC7C,MAAMC,QAAQ,GAAG,IAAAC,2BAAoB,EACnCC,uCAAuB,EACvBC,kCAAkB,EAClBA,kCACF,CAAC;EAED,MAAMC,SAAyB,GAAGT,eAAe,GAC7CA,eAAe,CAACU,GAAG,CAAEC,CAAC,KAAM;IAAE,GAAGA,CAAC;IAAEC,OAAO,EAAED,CAAC,CAACC,OAAO,KAAK;EAAM,CAAC,CAAC,CAAC,GACpET,cAAc,CAACO,GAAG,CAAEC,CAAC,KAAM;IACzBd,EAAE,EAAEc,CAAC,CAACd,EAAE;IACRgB,KAAK,EAAEF,CAAC,CAACE,KAAK;IACd,GAAGF,CAAC,CAACG,MAAM,CAAC,CAAC;IACbF,OAAO,EAAE,CAACP,QAAQ,CAACU,GAAG,CAACJ,CAAC,CAACd,EAAE;EAC7B,CAAC,CAAC,CAAC;EAEP,MAAMmB,cAAc,GAAGhB,eAAe,GAClCC,WAAW,EAAEgB,SAAS,KAAK,IAAI,GAC/B,IAAAC,yBAAW,EAAC,CAAC;EAEjB,OAAO,CACL,GAAGT,SAAS,EACZ;IACEZ,EAAE,EAAEsB,0BAAe;IACnBN,KAAK,EAAE,OAAO;IACdO,UAAU,EAAEJ,cAAc;IAC1BK,UAAU,EAAEL,cAAc;IAC1BJ,OAAO,EAAEZ,eAAe,GACpBC,WAAW,EAAEW,OAAO,KAAK,KAAK,GAC9B,CAACP,QAAQ,CAACU,GAAG,CAACI,0BAAe,CAAC;IAClC;IACA;IACA;IACAG,MAAM,EAAEN,cAAc,GAClB,4DAA4D,GAC5D;EACN,CAAC,CACF;AACH;;AAEA;AACO,SAASO,UAAUA,CAACC,MAAoB,EAAW;EACxD,OAAOA,MAAM,CAACJ,UAAU,IAAII,MAAM,CAACZ,OAAO;AAC5C","ignoreList":[]}
@@ -9,6 +9,18 @@ Object.defineProperty(exports, "RESTORE_ORDER", {
9
9
  return _timeMachineStore.RESTORE_ORDER;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "SAFETY_SNAPSHOT_NAME", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _timeMachineStore.SAFETY_SNAPSHOT_NAME;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "TIME_MACHINE_FLOATING_TOOL_ID", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _TimeMachineFloatingTool.TIME_MACHINE_FLOATING_TOOL_ID;
22
+ }
23
+ });
12
24
  Object.defineProperty(exports, "TimeMachineModal", {
13
25
  enumerable: true,
14
26
  get: function () {
@@ -45,12 +57,24 @@ Object.defineProperty(exports, "createTimeMachineTool", {
45
57
  return _preset.createTimeMachineTool;
46
58
  }
47
59
  });
60
+ Object.defineProperty(exports, "isSourceEnabled", {
61
+ enumerable: true,
62
+ get: function () {
63
+ return _sourceSettings.isSourceEnabled;
64
+ }
65
+ });
48
66
  Object.defineProperty(exports, "navigateToRoute", {
49
67
  enumerable: true,
50
68
  get: function () {
51
69
  return _routeRestore.navigateToRoute;
52
70
  }
53
71
  });
72
+ Object.defineProperty(exports, "openTimeMachineFloatingTool", {
73
+ enumerable: true,
74
+ get: function () {
75
+ return _TimeMachineFloatingTool.openTimeMachineFloatingTool;
76
+ }
77
+ });
54
78
  Object.defineProperty(exports, "replaceTimeMachineFromSnapshot", {
55
79
  enumerable: true,
56
80
  get: function () {
@@ -63,6 +87,18 @@ Object.defineProperty(exports, "setRemoteTimeMachineHandler", {
63
87
  return _timeMachineStore.setRemoteTimeMachineHandler;
64
88
  }
65
89
  });
90
+ Object.defineProperty(exports, "setSourceEnabled", {
91
+ enumerable: true,
92
+ get: function () {
93
+ return _sourceSettings.setSourceEnabled;
94
+ }
95
+ });
96
+ Object.defineProperty(exports, "subscribeSourceSettings", {
97
+ enumerable: true,
98
+ get: function () {
99
+ return _sourceSettings.subscribeSourceSettings;
100
+ }
101
+ });
66
102
  Object.defineProperty(exports, "timeMachineStore", {
67
103
  enumerable: true,
68
104
  get: function () {
@@ -84,8 +120,10 @@ Object.defineProperty(exports, "timeMachineToolPreset", {
84
120
  var _routeRestore = require("./store/routeRestore");
85
121
  var _preset = require("./preset");
86
122
  var _TimeMachineModal = require("./components/TimeMachineModal");
123
+ var _TimeMachineFloatingTool = require("./components/floating/TimeMachineFloatingTool");
87
124
  var _timeMachineSyncAdapter = require("./sync/timeMachineSyncAdapter");
88
125
  var _timeMachineStore = require("./store/timeMachineStore");
126
+ var _sourceSettings = require("./store/sourceSettings");
89
127
  /**
90
128
  * @buoy-gg/time-machine
91
129
  *
@@ -102,12 +140,16 @@ var _timeMachineStore = require("./store/timeMachineStore");
102
140
 
103
141
  // Components
104
142
 
143
+ // The floating restore bar (one armed point, one tap to restore)
144
+
105
145
  // External-sync adapter (auto-registered by @buoy-gg/core)
106
146
 
107
147
  // Programmatic snapshot control (also used by tests / power users)
108
148
 
109
149
  // Route capture / restore ("also take me back to the screen I was on")
110
150
 
151
+ // Per-source on/off switches (the Sources strip); off = never captured or restored
152
+
111
153
  // Buoy Desktop remote-mirror seam
112
154
 
113
155
  // A reload-mode restore that also restores the route can't navigate itself —
@@ -1 +1 @@
1
- {"version":3,"names":["_routeRestore","require","_preset","_TimeMachineModal","_timeMachineSyncAdapter","_timeMachineStore","armPendingRouteRestoreOnLoad"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,IAAAA,aAAA,GAAAC,OAAA;AAGA,IAAAC,OAAA,GAAAD,OAAA;AAGA,IAAAE,iBAAA,GAAAF,OAAA;AAOA,IAAAG,uBAAA,GAAAH,OAAA;AAGA,IAAAI,iBAAA,GAAAJ,OAAA;AA5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;;AAGA;;AAOA;;AAGA;;AAYA;;AAWA;;AAWA;AACA;AACA;AACA;AACA;AACA,IAAAK,oCAA4B,EAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_routeRestore","require","_preset","_TimeMachineModal","_TimeMachineFloatingTool","_timeMachineSyncAdapter","_timeMachineStore","_sourceSettings","armPendingRouteRestoreOnLoad"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,IAAAA,aAAA,GAAAC,OAAA;AAGA,IAAAC,OAAA,GAAAD,OAAA;AAGA,IAAAE,iBAAA,GAAAF,OAAA;AAOA,IAAAG,wBAAA,GAAAH,OAAA;AAMA,IAAAI,uBAAA,GAAAJ,OAAA;AAGA,IAAAK,iBAAA,GAAAL,OAAA;AAwBA,IAAAM,eAAA,GAAAN,OAAA;AA1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;;AAGA;;AAOA;;AAMA;;AAGA;;AAaA;;AAWA;;AAOA;;AAWA;AACA;AACA;AACA;AACA;AACA,IAAAO,oCAA4B,EAAC,CAAC","ignoreList":[]}
@@ -5,9 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.createTimeMachineTool = createTimeMachineTool;
7
7
  exports.timeMachineToolPreset = void 0;
8
+ var _reactNative = require("react-native");
8
9
  var _sharedUi = require("@buoy-gg/shared-ui");
9
10
  var _TimeMachineBody = require("./components/TimeMachineBody");
10
- var _HeaderReloadButton = require("./components/HeaderReloadButton");
11
+ var _HeaderActions = require("./components/HeaderActions");
11
12
  var _jsxRuntime = require("react/jsx-runtime");
12
13
  /**
13
14
  * Pre-configured Time Machine tool for FloatingDevTools.
@@ -27,9 +28,10 @@ const timeMachineToolPreset = exports.timeMachineToolPreset = {
27
28
  slot: "both",
28
29
  icon: ({
29
30
  size,
30
- color
31
+ color,
32
+ slot
31
33
  }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.TimeMachineIcon, {
32
- size: size,
34
+ size: slot === "dial" && _reactNative.Platform.OS !== "web" ? size * 1.5 : size,
33
35
  color: color || _sharedUi.TIME_MACHINE_ICON_COLOR
34
36
  }),
35
37
  component: _TimeMachineBody.TimeMachineBody,
@@ -39,7 +41,7 @@ const timeMachineToolPreset = exports.timeMachineToolPreset = {
39
41
  subtitle: "snapshot & restore app state",
40
42
  searchable: true,
41
43
  searchPlaceholder: "Filter…",
42
- headerActions: /*#__PURE__*/(0, _jsxRuntime.jsx)(_HeaderReloadButton.HeaderReloadButton, {})
44
+ headerActions: /*#__PURE__*/(0, _jsxRuntime.jsx)(_HeaderActions.TimeMachineHeaderActions, {})
43
45
  }
44
46
  };
45
47
 
@@ -1 +1 @@
1
- {"version":3,"names":["_sharedUi","require","_TimeMachineBody","_HeaderReloadButton","_jsxRuntime","timeMachineToolPreset","exports","id","name","description","slot","icon","size","color","jsx","TimeMachineIcon","TIME_MACHINE_ICON_COLOR","component","TimeMachineBody","modal","subtitle","searchable","searchPlaceholder","headerActions","HeaderReloadButton","createTimeMachineTool","options"],"sourceRoot":"../../src","sources":["preset.tsx"],"mappings":";;;;;;;AAWA,IAAAA,SAAA,GAAAC,OAAA;AAIA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AAAqE,IAAAG,WAAA,GAAAH,OAAA;AAhBrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASO,MAAMI,qBAAqB,GAAAC,OAAA,CAAAD,qBAAA,GAAG;EACnCE,EAAE,EAAE,cAAc;EAClBC,IAAI,EAAE,cAAc;EACpBC,WAAW,EAAE,6DAA6D;EAC1EC,IAAI,EAAE,MAAe;EACrBC,IAAI,EAAEA,CAAC;IAAEC,IAAI;IAAEC;EAAwC,CAAC,kBACtD,IAAAT,WAAA,CAAAU,GAAA,EAACd,SAAA,CAAAe,eAAe;IAACH,IAAI,EAAEA,IAAK;IAACC,KAAK,EAAEA,KAAK,IAAIG;EAAwB,CAAE,CACxE;EACDC,SAAS,EAAEC,gCAAe;EAC1B;EACA;EACAC,KAAK,EAAE;IACLC,QAAQ,EAAE,8BAA8B;IACxCC,UAAU,EAAE,IAAI;IAChBC,iBAAiB,EAAE,SAAS;IAC5BC,aAAa,eAAE,IAAAnB,WAAA,CAAAU,GAAA,EAACX,mBAAA,CAAAqB,kBAAkB,IAAE;EACtC;AACF,CAAC;;AAED;AACO,SAASC,qBAAqBA,CACnCC,OAAgD,GAAG,CAAC,CAAC,EACrD;EACA,OAAO;IACL,GAAGrB,qBAAqB;IACxBG,IAAI,EAAEkB,OAAO,CAAClB,IAAI,IAAIH,qBAAqB,CAACG,IAAI;IAChDC,WAAW,EAAEiB,OAAO,CAACjB,WAAW,IAAIJ,qBAAqB,CAACI;EAC5D,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_sharedUi","_TimeMachineBody","_HeaderActions","_jsxRuntime","timeMachineToolPreset","exports","id","name","description","slot","icon","size","color","jsx","TimeMachineIcon","Platform","OS","TIME_MACHINE_ICON_COLOR","component","TimeMachineBody","modal","subtitle","searchable","searchPlaceholder","headerActions","TimeMachineHeaderActions","createTimeMachineTool","options"],"sourceRoot":"../../src","sources":["preset.tsx"],"mappings":";;;;;;;AAWA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAIA,IAAAE,gBAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AAAsE,IAAAI,WAAA,GAAAJ,OAAA;AAjBtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUO,MAAMK,qBAAqB,GAAAC,OAAA,CAAAD,qBAAA,GAAG;EACnCE,EAAE,EAAE,cAAc;EAClBC,IAAI,EAAE,cAAc;EACpBC,WAAW,EAAE,6DAA6D;EAC1EC,IAAI,EAAE,MAAe;EACrBC,IAAI,EAAEA,CAAC;IAAEC,IAAI;IAAEC,KAAK;IAAEH;EAAsD,CAAC,kBAC3E,IAAAN,WAAA,CAAAU,GAAA,EAACb,SAAA,CAAAc,eAAe;IACdH,IAAI,EAAEF,IAAI,KAAK,MAAM,IAAIM,qBAAQ,CAACC,EAAE,KAAK,KAAK,GAAGL,IAAI,GAAG,GAAG,GAAGA,IAAK;IACnEC,KAAK,EAAEA,KAAK,IAAIK;EAAwB,CACzC,CACF;EACDC,SAAS,EAAEC,gCAAe;EAC1B;EACA;EACAC,KAAK,EAAE;IACLC,QAAQ,EAAE,8BAA8B;IACxCC,UAAU,EAAE,IAAI;IAChBC,iBAAiB,EAAE,SAAS;IAC5BC,aAAa,eAAE,IAAArB,WAAA,CAAAU,GAAA,EAACX,cAAA,CAAAuB,wBAAwB,IAAE;EAC5C;AACF,CAAC;;AAED;AACO,SAASC,qBAAqBA,CACnCC,OAAgD,GAAG,CAAC,CAAC,EACrD;EACA,OAAO;IACL,GAAGvB,qBAAqB;IACxBG,IAAI,EAAEoB,OAAO,CAACpB,IAAI,IAAIH,qBAAqB,CAACG,IAAI;IAChDC,WAAW,EAAEmB,OAAO,CAACnB,WAAW,IAAIJ,qBAAqB,CAACI;EAC5D,CAAC;AACH","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_sharedUi","require","INDEX_KEY","SNAP_PREFIX","loadIndex","raw","persistentStorage","getItem","parsed","JSON","parse","Array","isArray","saveIndex","metas","setItem","stringify","saveSnapshot","snapshot","serialized","meta","sizeBytes","length","id","next","filter","m","loadSnapshot","deleteSnapshot","removeItem","patchMeta","patch","apply","map","stored","setSnapshotScope","scope","setSnapshotExclusions","excludedKeys","setSnapshotRestoreRoute","restoreRoute","markSnapshotRestored","at","lastRestoredAt","duplicateSnapshot","name","copy","Date","now","toString","createdAt","undefined","data","readSnapshot","restoreDeletedSnapshot","renameSnapshot"],"sourceRoot":"../../../src","sources":["store/snapshotVault.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_sharedUi","require","INDEX_KEY","SNAP_PREFIX","loadIndex","raw","persistentStorage","getItem","parsed","JSON","parse","Array","isArray","saveIndex","metas","setItem","stringify","saveSnapshot","snapshot","serialized","meta","sizeBytes","length","id","next","filter","m","loadSnapshot","deleteSnapshot","removeItem","patchMeta","patch","apply","map","stored","setSnapshotScope","scope","setSnapshotExclusions","excludedKeys","setSnapshotRestoreRoute","restoreRoute","markSnapshotRestored","at","lastRestoredAt","duplicateSnapshot","name","copy","Date","now","toString","createdAt","undefined","data","readSnapshot","restoreDeletedSnapshot","renameSnapshot"],"sourceRoot":"../../../src","sources":["store/snapshotVault.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ROUTE_SOURCE_ID = void 0;
7
+ /** Id of the route "source": a device capability, not a snapshot provider. */
8
+ const ROUTE_SOURCE_ID = exports.ROUTE_SOURCE_ID = "route";
9
+ //# sourceMappingURL=sourceIds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ROUTE_SOURCE_ID","exports"],"sourceRoot":"../../../src","sources":["store/sourceIds.ts"],"mappings":";;;;;;AAAA;AACO,MAAMA,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,OAAO","ignoreList":[]}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ensureSourceSettingsLoaded = ensureSourceSettingsLoaded;
7
+ exports.getDisabledSources = getDisabledSources;
8
+ exports.isSourceEnabled = isSourceEnabled;
9
+ exports.resetSourceSettingsForTests = resetSourceSettingsForTests;
10
+ exports.setSourceEnabled = setSourceEnabled;
11
+ exports.subscribeSourceSettings = subscribeSourceSettings;
12
+ var _sharedUi = require("@buoy-gg/shared-ui");
13
+ /**
14
+ * Which sources Time Machine is allowed to touch.
15
+ *
16
+ * A source switched off here is left out of every capture and every restore,
17
+ * from the tool, the bar, the desktop and MCP alike: "off" has to mean off
18
+ * everywhere, or the one path that forgets it is the one that breaks the app.
19
+ * The case this exists for is a store whose full replace the app cannot
20
+ * survive (a Zustand store holding live handles, say): leave it off and the
21
+ * rest of the state still round-trips.
22
+ *
23
+ * Persisted as the set of ids that are OFF, so a source that registers for
24
+ * the first time tomorrow starts on, and the default is "everything".
25
+ */
26
+
27
+ const setting = (0, _sharedUi.definePersistedSetting)(_sharedUi.devToolsStorageKeys.timeMachine.disabledSources(), [], {
28
+ sanitize: value => Array.isArray(value) ? value.filter(v => typeof v === "string") : []
29
+ });
30
+ let disabled = new Set();
31
+ let loaded = false;
32
+ let loadPromise = null;
33
+ const listeners = new Set();
34
+ const notify = () => listeners.forEach(listener => listener());
35
+ function ensureSourceSettingsLoaded() {
36
+ if (loaded) return Promise.resolve();
37
+ if (!loadPromise) {
38
+ loadPromise = setting.load().then(ids => {
39
+ // A toggle made while the read was in flight wins over the disk copy.
40
+ if (disabled.size === 0) {
41
+ disabled = new Set(ids);
42
+ notify();
43
+ }
44
+ }).finally(() => {
45
+ loaded = true;
46
+ });
47
+ }
48
+ return loadPromise;
49
+ }
50
+ function subscribeSourceSettings(listener) {
51
+ listeners.add(listener);
52
+ return () => {
53
+ listeners.delete(listener);
54
+ };
55
+ }
56
+
57
+ /** Stable across renders until something changes, for useSyncExternalStore. */
58
+ function getDisabledSources() {
59
+ return disabled;
60
+ }
61
+ function isSourceEnabled(id) {
62
+ return !disabled.has(id);
63
+ }
64
+ function setSourceEnabled(id, enabled) {
65
+ if (enabled === !disabled.has(id)) return;
66
+ const next = new Set(disabled);
67
+ if (enabled) next.delete(id);else next.add(id);
68
+ disabled = next;
69
+ notify();
70
+ void setting.save([...next]);
71
+ }
72
+
73
+ /** Test seam: forget everything without touching storage. */
74
+ function resetSourceSettingsForTests() {
75
+ disabled = new Set();
76
+ loaded = false;
77
+ loadPromise = null;
78
+ }
79
+ //# sourceMappingURL=sourceSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_sharedUi","require","setting","definePersistedSetting","devToolsStorageKeys","timeMachine","disabledSources","sanitize","value","Array","isArray","filter","v","disabled","Set","loaded","loadPromise","listeners","notify","forEach","listener","ensureSourceSettingsLoaded","Promise","resolve","load","then","ids","size","finally","subscribeSourceSettings","add","delete","getDisabledSources","isSourceEnabled","id","has","setSourceEnabled","enabled","next","save","resetSourceSettingsForTests"],"sourceRoot":"../../../src","sources":["store/sourceSettings.ts"],"mappings":";;;;;;;;;;;AAaA,IAAAA,SAAA,GAAAC,OAAA;AAbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA,MAAMC,OAAO,GAAG,IAAAC,gCAAsB,EACpCC,6BAAmB,CAACC,WAAW,CAACC,eAAe,CAAC,CAAC,EACjD,EAAE,EACF;EACEC,QAAQ,EAAGC,KAAK,IACdC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,GAAGA,KAAK,CAACG,MAAM,CAAEC,CAAC,IAAK,OAAOA,CAAC,KAAK,QAAQ,CAAC,GAAG;AACxE,CACF,CAAC;AAED,IAAIC,QAAQ,GAAG,IAAIC,GAAG,CAAS,CAAC;AAChC,IAAIC,MAAM,GAAG,KAAK;AAClB,IAAIC,WAAiC,GAAG,IAAI;AAC5C,MAAMC,SAAS,GAAG,IAAIH,GAAG,CAAa,CAAC;AACvC,MAAMI,MAAM,GAAGA,CAAA,KAAMD,SAAS,CAACE,OAAO,CAAEC,QAAQ,IAAKA,QAAQ,CAAC,CAAC,CAAC;AAEzD,SAASC,0BAA0BA,CAAA,EAAkB;EAC1D,IAAIN,MAAM,EAAE,OAAOO,OAAO,CAACC,OAAO,CAAC,CAAC;EACpC,IAAI,CAACP,WAAW,EAAE;IAChBA,WAAW,GAAGd,OAAO,CAClBsB,IAAI,CAAC,CAAC,CACNC,IAAI,CAAEC,GAAG,IAAK;MACb;MACA,IAAIb,QAAQ,CAACc,IAAI,KAAK,CAAC,EAAE;QACvBd,QAAQ,GAAG,IAAIC,GAAG,CAACY,GAAG,CAAC;QACvBR,MAAM,CAAC,CAAC;MACV;IACF,CAAC,CAAC,CACDU,OAAO,CAAC,MAAM;MACbb,MAAM,GAAG,IAAI;IACf,CAAC,CAAC;EACN;EACA,OAAOC,WAAW;AACpB;AAEO,SAASa,uBAAuBA,CAACT,QAAoB,EAAc;EACxEH,SAAS,CAACa,GAAG,CAACV,QAAQ,CAAC;EACvB,OAAO,MAAM;IACXH,SAAS,CAACc,MAAM,CAACX,QAAQ,CAAC;EAC5B,CAAC;AACH;;AAEA;AACO,SAASY,kBAAkBA,CAAA,EAAwB;EACxD,OAAOnB,QAAQ;AACjB;AAEO,SAASoB,eAAeA,CAACC,EAAU,EAAW;EACnD,OAAO,CAACrB,QAAQ,CAACsB,GAAG,CAACD,EAAE,CAAC;AAC1B;AAEO,SAASE,gBAAgBA,CAACF,EAAU,EAAEG,OAAgB,EAAQ;EACnE,IAAIA,OAAO,KAAK,CAACxB,QAAQ,CAACsB,GAAG,CAACD,EAAE,CAAC,EAAE;EACnC,MAAMI,IAAI,GAAG,IAAIxB,GAAG,CAACD,QAAQ,CAAC;EAC9B,IAAIwB,OAAO,EAAEC,IAAI,CAACP,MAAM,CAACG,EAAE,CAAC,CAAC,KACxBI,IAAI,CAACR,GAAG,CAACI,EAAE,CAAC;EACjBrB,QAAQ,GAAGyB,IAAI;EACfpB,MAAM,CAAC,CAAC;EACR,KAAKhB,OAAO,CAACqC,IAAI,CAAC,CAAC,GAAGD,IAAI,CAAC,CAAC;AAC9B;;AAEA;AACO,SAASE,2BAA2BA,CAAA,EAAS;EAClD3B,QAAQ,GAAG,IAAIC,GAAG,CAAC,CAAC;EACpBC,MAAM,GAAG,KAAK;EACdC,WAAW,GAAG,IAAI;AACpB","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.RESTORE_ORDER = void 0;
6
+ exports.SAFETY_SNAPSHOT_NAME = exports.RESTORE_ORDER = void 0;
7
7
  exports.replaceTimeMachineFromSnapshot = replaceTimeMachineFromSnapshot;
8
8
  exports.setRemoteTimeMachineHandler = setRemoteTimeMachineHandler;
9
9
  exports.timeMachineStore = void 0;
@@ -12,6 +12,8 @@ var _sharedUi = require("@buoy-gg/shared-ui");
12
12
  var _dataViewer = require("@buoy-gg/shared-ui/dataViewer");
13
13
  var _snapshotVault = require("./snapshotVault");
14
14
  var _routeRestore = require("./routeRestore");
15
+ var _sourceSettings = require("./sourceSettings");
16
+ var _sourceIds = require("./sourceIds");
15
17
  /**
16
18
  * Time Machine orchestrator — snapshot CRUD + capture/restore across every
17
19
  * registered StateSnapshotProvider (storage, redux, zustand, jotai, query,
@@ -39,7 +41,22 @@ const RESTORE_ORDER = exports.RESTORE_ORDER = ["storage", "redux", "zustand", "j
39
41
  function defaultSnapshotName(route) {
40
42
  const now = new Date();
41
43
  const clock = `${String(now.getHours()).padStart(2, "0")}:${String(now.getMinutes()).padStart(2, "0")}`;
42
- return route ? `${route.pathname} · ${clock}` : `Snapshot · ${clock}`;
44
+ const screen = route ? route.pathname === "/" ? "Home" : route.pathname : null;
45
+ return screen ? `${screen} · ${clock}` : `Snapshot · ${clock}`;
46
+ }
47
+
48
+ /**
49
+ * Two captures in the same minute on the same screen would get the same
50
+ * default name and be told apart by nothing. Number the repeats.
51
+ */
52
+ function dedupeName(name, existing) {
53
+ const taken = new Set(existing.map(m => m.name));
54
+ if (!taken.has(name)) return name;
55
+ for (let n = 2; n < 1000; n++) {
56
+ const candidate = `${name} (${n})`;
57
+ if (!taken.has(candidate)) return candidate;
58
+ }
59
+ return name;
43
60
  }
44
61
 
45
62
  /**
@@ -53,6 +70,8 @@ function willRestoreRoute(meta) {
53
70
 
54
71
  /** Extra knobs a restore accepts beyond mode + exclusions. */
55
72
 
73
+ const SAFETY_SNAPSHOT_NAME = exports.SAFETY_SNAPSHOT_NAME = "Before last restore";
74
+
56
75
  /** Provider capability row as mirrored to a remote dashboard. */
57
76
 
58
77
  /** One side of a preview comparison. */
@@ -144,7 +163,7 @@ class TimeMachineStore {
144
163
  }
145
164
 
146
165
  /** Capture all capturable sources (or a subset) into a named snapshot. */
147
- async capture(name, sourceIds) {
166
+ async capture(name, sourceIds, options) {
148
167
  if (remoteHandler) {
149
168
  const result = await remoteHandler("capture", {
150
169
  name,
@@ -153,11 +172,12 @@ class TimeMachineStore {
153
172
  return result.snapshot;
154
173
  }
155
174
  await this.ensureLoaded();
175
+ await (0, _sourceSettings.ensureSourceSettingsLoaded)();
156
176
  this.setState({
157
177
  busy: "capture"
158
178
  });
159
179
  try {
160
- const providers = (0, _sharedUi.getStateSnapshotProviders)().filter(p => p.status().canCapture && (!sourceIds || sourceIds.includes(p.id)));
180
+ const providers = (0, _sharedUi.getStateSnapshotProviders)().filter(p => p.status().canCapture && (0, _sourceSettings.isSourceEnabled)(p.id) && (!sourceIds || sourceIds.includes(p.id)));
161
181
  const data = {};
162
182
  const sources = {};
163
183
  for (const provider of providers) {
@@ -174,21 +194,31 @@ class TimeMachineStore {
174
194
  }
175
195
  }
176
196
  // Where the app was when this state was true — restoring can return here.
177
- const route = (0, _routeRestore.captureCurrentRoute)();
197
+ const route = (0, _sourceSettings.isSourceEnabled)(_sourceIds.ROUTE_SOURCE_ID) ? (0, _routeRestore.captureCurrentRoute)() : null;
198
+ // The safety slot is rolling: the previous one goes before this one lands.
199
+ let current = this.state.snapshots;
200
+ if (options?.safety) {
201
+ for (const stale of current.filter(m => m.safety)) {
202
+ current = await (0, _snapshotVault.deleteSnapshot)(stale.id, current);
203
+ }
204
+ }
178
205
  const snapshot = {
179
206
  meta: {
180
207
  id: nextId(),
181
- name: name.trim() || defaultSnapshotName(route),
208
+ name: options?.safety ? SAFETY_SNAPSHOT_NAME : dedupeName(name.trim() || defaultSnapshotName(route), current),
182
209
  createdAt: Date.now(),
183
210
  sizeBytes: 0,
184
211
  ...(route ? {
185
212
  route
186
213
  } : {}),
214
+ ...(options?.safety ? {
215
+ safety: true
216
+ } : {}),
187
217
  sources
188
218
  },
189
219
  data
190
220
  };
191
- const snapshots = await (0, _snapshotVault.saveSnapshot)(snapshot, this.state.snapshots);
221
+ const snapshots = await (0, _snapshotVault.saveSnapshot)(snapshot, current);
192
222
  this.setState({
193
223
  snapshots
194
224
  });
@@ -211,6 +241,7 @@ class TimeMachineStore {
211
241
  return result.snapshot;
212
242
  }
213
243
  await this.ensureLoaded();
244
+ await (0, _sourceSettings.ensureSourceSettingsLoaded)();
214
245
  const snapshot = {
215
246
  meta: {
216
247
  id: nextId(),
@@ -248,6 +279,16 @@ class TimeMachineStore {
248
279
  return outcome;
249
280
  }
250
281
  await this.ensureLoaded();
282
+ await (0, _sourceSettings.ensureSourceSettingsLoaded)();
283
+ // The way back from a mis-tap: capture what is about to be replaced.
284
+ // Restoring the safety slot itself never rolls it, or Undo would eat
285
+ // its own target.
286
+ let safetySnapshotId;
287
+ if (options?.safetyCapture && !this.state.snapshots.find(m => m.id === id)?.safety) {
288
+ safetySnapshotId = (await this.capture(SAFETY_SNAPSHOT_NAME, undefined, {
289
+ safety: true
290
+ })).id;
291
+ }
251
292
  this.setState({
252
293
  busy: "restore"
253
294
  });
@@ -260,7 +301,10 @@ class TimeMachineStore {
260
301
  mode,
261
302
  at: Date.now(),
262
303
  willReload: false,
263
- results: {}
304
+ results: {},
305
+ ...(safetySnapshotId ? {
306
+ safetySnapshotId
307
+ } : {})
264
308
  };
265
309
  if (stored.meta.baseline) {
266
310
  // Fresh install: wipe every clearable source, then reload so all
@@ -308,10 +352,10 @@ class TimeMachineStore {
308
352
  // No prompt any more: the point carries its own answer, and having a
309
353
  // route means wanting it back unless you said otherwise. An explicit
310
354
  // option still wins, so MCP and the desktop can force either way.
311
- const wantsRoute = options?.restoreRoute ?? willRestoreRoute(stored.meta);
355
+ const wantsRoute = (0, _sourceSettings.isSourceEnabled)(_sourceIds.ROUTE_SOURCE_ID) && (options?.restoreRoute ?? willRestoreRoute(stored.meta));
312
356
  if (mode === "reload") {
313
357
  // Storage only; everything in-memory rebuilds after the reload.
314
- if (stored.data.storage && (!includeBySource || includeBySource.has("storage"))) {
358
+ if (stored.data.storage && (0, _sourceSettings.isSourceEnabled)("storage") && (!includeBySource || includeBySource.has("storage"))) {
315
359
  outcome.results.storage = await this.restoreSource("storage", stored.data.storage, excludeBySource.get("storage"), includeBySource?.get("storage"));
316
360
  }
317
361
  // Hand the route to the NEXT boot — this realm is about to die, so the
@@ -343,6 +387,17 @@ class TimeMachineStore {
343
387
  for (const sid of sourceIds) {
344
388
  // Sources entirely outside the scope are untouched and unreported.
345
389
  if (includeBySource && !includeBySource.has(sid)) continue;
390
+ // A source switched off in Sources is left exactly as it is. Reported
391
+ // as a warning, not a failure: this is what you asked for.
392
+ if (!(0, _sourceSettings.isSourceEnabled)(sid)) {
393
+ outcome.results[sid] = {
394
+ ok: true,
395
+ applied: 0,
396
+ skipped: [],
397
+ warnings: ["Switched off in Sources; left as it is"]
398
+ };
399
+ continue;
400
+ }
346
401
  outcome.results[sid] = await this.restoreSource(sid, stored.data[sid], excludeBySource.get(sid), includeBySource?.get(sid));
347
402
  }
348
403
  // Navigate LAST — the screen we land on should read the restored state.
@@ -409,6 +464,7 @@ class TimeMachineStore {
409
464
  return;
410
465
  }
411
466
  await this.ensureLoaded();
467
+ await (0, _sourceSettings.ensureSourceSettingsLoaded)();
412
468
  const stored = await (0, _snapshotVault.readSnapshot)(id);
413
469
  const snapshots = await (0, _snapshotVault.deleteSnapshot)(id, this.state.snapshots);
414
470
  this.setState({
@@ -448,6 +504,7 @@ class TimeMachineStore {
448
504
  return;
449
505
  }
450
506
  await this.ensureLoaded();
507
+ await (0, _sourceSettings.ensureSourceSettingsLoaded)();
451
508
  const snapshots = await (0, _snapshotVault.setSnapshotRestoreRoute)(id, restoreRoute, this.state.snapshots);
452
509
  this.setState({
453
510
  snapshots
@@ -463,6 +520,7 @@ class TimeMachineStore {
463
520
  return result?.snapshot ?? null;
464
521
  }
465
522
  await this.ensureLoaded();
523
+ await (0, _sourceSettings.ensureSourceSettingsLoaded)();
466
524
  const source = this.state.snapshots.find(s => s.id === id);
467
525
  if (!source) return null;
468
526
  const result = await (0, _snapshotVault.duplicateSnapshot)(id, `${source.name} copy`, this.state.snapshots);
@@ -481,6 +539,7 @@ class TimeMachineStore {
481
539
  return;
482
540
  }
483
541
  await this.ensureLoaded();
542
+ await (0, _sourceSettings.ensureSourceSettingsLoaded)();
484
543
  const snapshots = await (0, _snapshotVault.renameSnapshot)(id, name, this.state.snapshots);
485
544
  this.setState({
486
545
  snapshots
@@ -501,6 +560,7 @@ class TimeMachineStore {
501
560
  return;
502
561
  }
503
562
  await this.ensureLoaded();
563
+ await (0, _sourceSettings.ensureSourceSettingsLoaded)();
504
564
  const snapshots = await (0, _snapshotVault.setSnapshotScope)(id, scope, this.state.snapshots);
505
565
  this.setState({
506
566
  snapshots
@@ -521,6 +581,7 @@ class TimeMachineStore {
521
581
  return;
522
582
  }
523
583
  await this.ensureLoaded();
584
+ await (0, _sourceSettings.ensureSourceSettingsLoaded)();
524
585
  const snapshots = await (0, _snapshotVault.setSnapshotExclusions)(id, excludedKeys, this.state.snapshots);
525
586
  this.setState({
526
587
  snapshots
@@ -638,6 +699,7 @@ class TimeMachineStore {
638
699
  return;
639
700
  }
640
701
  await this.ensureLoaded();
702
+ await (0, _sourceSettings.ensureSourceSettingsLoaded)();
641
703
  const runId = ++this.previewRunId;
642
704
  this.setState({
643
705
  preview: {
@@ -669,6 +731,9 @@ class TimeMachineStore {
669
731
  const sourceIds = isBaseline ? (0, _sharedUi.getStateSnapshotProviders)().filter(p => p.clear).map(p => p.id) : [...RESTORE_ORDER.filter(sid => sid in rightData), ...Object.keys(rightData).filter(sid => !RESTORE_ORDER.includes(sid))];
670
732
  const sources = [];
671
733
  for (const sid of sourceIds) {
734
+ // Off in Sources: a restore will not touch it, so there is nothing
735
+ // to preview.
736
+ if (!(0, _sourceSettings.isSourceEnabled)(sid)) continue;
672
737
  // Yield a frame between sources — verdict passes are bounded but a
673
738
  // five-source build shouldn't run as one synchronous block.
674
739
  await new Promise(r => setTimeout(r, 0));