@lapis-notes/history 0.1.4 → 0.2.2

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 (329) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +1 -1
  3. package/dist/repository/NOTICE.md +11 -0
  4. package/dist/repository/components/RepositoryAuthorAvatar.svelte +77 -0
  5. package/dist/repository/components/RepositoryAuthorAvatar.svelte.d.ts +11 -0
  6. package/dist/repository/components/RepositoryBackupStatus.svelte +236 -0
  7. package/dist/repository/components/RepositoryBackupStatus.svelte.d.ts +11 -0
  8. package/dist/repository/components/RepositoryChangedFiles.svelte +104 -0
  9. package/dist/repository/components/RepositoryChangedFiles.svelte.d.ts +13 -0
  10. package/dist/repository/components/RepositoryCommitMessage.svelte +93 -0
  11. package/dist/repository/components/RepositoryCommitMessage.svelte.d.ts +6 -0
  12. package/dist/repository/components/RepositoryCommitPicker.svelte +205 -0
  13. package/dist/repository/components/RepositoryCommitPicker.svelte.d.ts +17 -0
  14. package/dist/repository/components/RepositoryComparisonBar.svelte +71 -0
  15. package/dist/repository/components/RepositoryComparisonBar.svelte.d.ts +9 -0
  16. package/dist/repository/components/RepositoryComparisonTime.svelte +32 -0
  17. package/dist/repository/components/RepositoryComparisonTime.svelte.d.ts +6 -0
  18. package/dist/repository/components/RepositoryDiff.svelte +56 -0
  19. package/dist/repository/components/RepositoryDiff.svelte.d.ts +11 -0
  20. package/dist/repository/components/RepositoryDiffColumn.svelte +78 -0
  21. package/dist/repository/components/RepositoryDiffColumn.svelte.d.ts +14 -0
  22. package/dist/repository/components/RepositoryDiffControls.svelte +117 -0
  23. package/dist/repository/components/RepositoryDiffControls.svelte.d.ts +8 -0
  24. package/dist/repository/components/RepositoryFileHistory.svelte +170 -0
  25. package/dist/repository/components/RepositoryFileHistory.svelte.d.ts +10 -0
  26. package/dist/repository/components/RepositoryFileTitle.svelte +30 -0
  27. package/dist/repository/components/RepositoryFileTitle.svelte.d.ts +6 -0
  28. package/dist/repository/components/RepositoryGraph.svelte +216 -0
  29. package/dist/repository/components/RepositoryGraph.svelte.d.ts +19 -0
  30. package/dist/repository/components/RepositoryGraphSvg.svelte +110 -0
  31. package/dist/repository/components/RepositoryGraphSvg.svelte.d.ts +11 -0
  32. package/dist/repository/components/RepositoryIdentifiers.svelte +221 -0
  33. package/dist/repository/components/RepositoryIdentifiers.svelte.d.ts +15 -0
  34. package/dist/repository/components/RepositoryLogHeader.svelte +90 -0
  35. package/dist/repository/components/RepositoryLogHeader.svelte.d.ts +23 -0
  36. package/dist/repository/components/RepositoryOperationArguments.svelte +52 -0
  37. package/dist/repository/components/RepositoryOperationArguments.svelte.d.ts +6 -0
  38. package/dist/repository/components/RepositoryOperationColumn.svelte +163 -0
  39. package/dist/repository/components/RepositoryOperationColumn.svelte.d.ts +11 -0
  40. package/dist/repository/components/RepositoryOperationFiles.svelte +245 -0
  41. package/dist/repository/components/RepositoryOperationFiles.svelte.d.ts +14 -0
  42. package/dist/repository/components/RepositoryOperationMessage.svelte +169 -0
  43. package/dist/repository/components/RepositoryOperationMessage.svelte.d.ts +10 -0
  44. package/dist/repository/components/RepositoryOperationOption.svelte +183 -0
  45. package/dist/repository/components/RepositoryOperationOption.svelte.d.ts +10 -0
  46. package/dist/repository/components/RepositoryOperationParentPicker.svelte +188 -0
  47. package/dist/repository/components/RepositoryOperationParentPicker.svelte.d.ts +14 -0
  48. package/dist/repository/components/RepositoryOperationPinPicker.svelte +170 -0
  49. package/dist/repository/components/RepositoryOperationPinPicker.svelte.d.ts +13 -0
  50. package/dist/repository/components/RepositoryOperationRail.svelte +136 -0
  51. package/dist/repository/components/RepositoryOperationRail.svelte.d.ts +9 -0
  52. package/dist/repository/components/RepositoryOperationTarget.svelte +99 -0
  53. package/dist/repository/components/RepositoryOperationTarget.svelte.d.ts +8 -0
  54. package/dist/repository/components/RepositoryOperations.svelte +199 -0
  55. package/dist/repository/components/RepositoryOperations.svelte.d.ts +12 -0
  56. package/dist/repository/components/RepositoryPanel.svelte +207 -0
  57. package/dist/repository/components/RepositoryPanel.svelte.d.ts +15 -0
  58. package/dist/repository/components/RepositoryParentSummary.svelte +52 -0
  59. package/dist/repository/components/RepositoryParentSummary.svelte.d.ts +10 -0
  60. package/dist/repository/components/RepositoryPickerSearch.svelte +51 -0
  61. package/dist/repository/components/RepositoryPickerSearch.svelte.d.ts +11 -0
  62. package/dist/repository/components/RepositoryRestoreDialog.svelte +81 -0
  63. package/dist/repository/components/RepositoryRestoreDialog.svelte.d.ts +7 -0
  64. package/dist/repository/components/RepositoryRevisionActions.svelte +53 -0
  65. package/dist/repository/components/RepositoryRevisionActions.svelte.d.ts +9 -0
  66. package/dist/repository/components/RepositoryRevisionFiles.svelte +110 -0
  67. package/dist/repository/components/RepositoryRevisionFiles.svelte.d.ts +14 -0
  68. package/dist/repository/components/RepositoryRevisionOption.svelte +60 -0
  69. package/dist/repository/components/RepositoryRevisionOption.svelte.d.ts +9 -0
  70. package/dist/repository/components/RepositoryRevisionPicker.svelte +165 -0
  71. package/dist/repository/components/RepositoryRevisionPicker.svelte.d.ts +14 -0
  72. package/dist/repository/components/RepositoryRevisions.svelte +115 -0
  73. package/dist/repository/components/RepositoryRevisions.svelte.d.ts +20 -0
  74. package/dist/repository/components/RepositoryShell.svelte +44 -0
  75. package/dist/repository/components/RepositoryShell.svelte.d.ts +11 -0
  76. package/dist/repository/components/RepositorySkeleton.svelte +138 -0
  77. package/dist/repository/components/RepositorySkeleton.svelte.d.ts +7 -0
  78. package/dist/repository/components/RepositorySourcePicker.svelte +114 -0
  79. package/dist/repository/components/RepositorySourcePicker.svelte.d.ts +7 -0
  80. package/dist/repository/components/RepositoryUpstreamActions.svelte +125 -0
  81. package/dist/repository/components/RepositoryUpstreamActions.svelte.d.ts +8 -0
  82. package/dist/repository/components/RepositoryWorkingCopyStatus.svelte +290 -0
  83. package/dist/repository/components/RepositoryWorkingCopyStatus.svelte.d.ts +11 -0
  84. package/dist/repository/components/RepositoryWorkspacePicker.svelte +158 -0
  85. package/dist/repository/components/RepositoryWorkspacePicker.svelte.d.ts +11 -0
  86. package/dist/repository/components/backup/AdoptionSettings.svelte +95 -0
  87. package/dist/repository/components/backup/AdoptionSettings.svelte.d.ts +7 -0
  88. package/dist/repository/components/backup/BackupCard.svelte +79 -0
  89. package/dist/repository/components/backup/BackupCard.svelte.d.ts +14 -0
  90. package/dist/repository/components/backup/BackupField.svelte +45 -0
  91. package/dist/repository/components/backup/BackupField.svelte.d.ts +10 -0
  92. package/dist/repository/components/backup/BackupSelect.svelte +71 -0
  93. package/dist/repository/components/backup/BackupSelect.svelte.d.ts +35 -0
  94. package/dist/repository/components/backup/BackupSettings.svelte +122 -0
  95. package/dist/repository/components/backup/BackupSettings.svelte.d.ts +18 -0
  96. package/dist/repository/components/backup/BackupSettingsField.svelte +13 -0
  97. package/dist/repository/components/backup/BackupSettingsField.svelte.d.ts +4 -0
  98. package/dist/repository/components/backup/ForgeAccounts.svelte +231 -0
  99. package/dist/repository/components/backup/ForgeAccounts.svelte.d.ts +9 -0
  100. package/dist/repository/components/backup/ForgeAuthorization.svelte +267 -0
  101. package/dist/repository/components/backup/ForgeAuthorization.svelte.d.ts +9 -0
  102. package/dist/repository/components/backup/ForgeIcon.svelte +21 -0
  103. package/dist/repository/components/backup/ForgeIcon.svelte.d.ts +7 -0
  104. package/dist/repository/components/backup/PublicationRecovery.svelte +129 -0
  105. package/dist/repository/components/backup/PublicationRecovery.svelte.d.ts +11 -0
  106. package/dist/repository/components/backup/RemoteSettings.svelte +288 -0
  107. package/dist/repository/components/backup/RemoteSettings.svelte.d.ts +11 -0
  108. package/dist/repository/components/backup/RepositorySettingsPage.svelte +51 -0
  109. package/dist/repository/components/backup/RepositorySettingsPage.svelte.d.ts +4 -0
  110. package/dist/repository/components/backup/StorageSettings.svelte +158 -0
  111. package/dist/repository/components/backup/StorageSettings.svelte.d.ts +7 -0
  112. package/dist/repository/components/backup/SyncConflictEditor.svelte +158 -0
  113. package/dist/repository/components/backup/SyncConflictEditor.svelte.d.ts +9 -0
  114. package/dist/repository/components/backup/SyncSettings.svelte +97 -0
  115. package/dist/repository/components/backup/SyncSettings.svelte.d.ts +9 -0
  116. package/dist/repository/components/backup/adoption-settings.d.ts +7 -0
  117. package/dist/repository/components/backup/adoption-settings.js +42 -0
  118. package/dist/repository/components/backup/backup-settings.d.ts +35 -0
  119. package/dist/repository/components/backup/backup-settings.js +96 -0
  120. package/dist/repository/components/backup/forge-icons.d.ts +10 -0
  121. package/dist/repository/components/backup/forge-icons.js +11 -0
  122. package/dist/repository/components/backup/remote-restore.d.ts +3 -0
  123. package/dist/repository/components/backup/remote-restore.js +17 -0
  124. package/dist/repository/components/backup/storage-settings.d.ts +8 -0
  125. package/dist/repository/components/backup/storage-settings.js +23 -0
  126. package/dist/repository/components/blame/RepositoryBlameCommitTitle.svelte +212 -0
  127. package/dist/repository/components/blame/RepositoryBlameCommitTitle.svelte.d.ts +14 -0
  128. package/dist/repository/components/blame/RepositoryBlameGroup.svelte +189 -0
  129. package/dist/repository/components/blame/RepositoryBlameGroup.svelte.d.ts +20 -0
  130. package/dist/repository/components/blame/RepositoryBlamePanel.svelte +148 -0
  131. package/dist/repository/components/blame/RepositoryBlamePanel.svelte.d.ts +13 -0
  132. package/dist/repository/components/blame/RepositoryBlameRows.svelte +137 -0
  133. package/dist/repository/components/blame/RepositoryBlameRows.svelte.d.ts +32 -0
  134. package/dist/repository/components/blame/RepositoryBlameView.svelte +121 -0
  135. package/dist/repository/components/blame/RepositoryBlameView.svelte.d.ts +16 -0
  136. package/dist/repository/components/blame/blame-view.d.ts +16 -0
  137. package/dist/repository/components/blame/blame-view.js +73 -0
  138. package/dist/repository/components/blame/editor-actions.d.ts +3 -0
  139. package/dist/repository/components/blame/editor-actions.js +53 -0
  140. package/dist/repository/components/conflicts/RepositoryConflictActions.svelte +83 -0
  141. package/dist/repository/components/conflicts/RepositoryConflictActions.svelte.d.ts +13 -0
  142. package/dist/repository/components/conflicts/RepositoryConflictBody.svelte +93 -0
  143. package/dist/repository/components/conflicts/RepositoryConflictBody.svelte.d.ts +16 -0
  144. package/dist/repository/components/conflicts/RepositoryConflictFileTree.svelte +84 -0
  145. package/dist/repository/components/conflicts/RepositoryConflictFileTree.svelte.d.ts +21 -0
  146. package/dist/repository/components/conflicts/RepositoryConflictPath.svelte +35 -0
  147. package/dist/repository/components/conflicts/RepositoryConflictPath.svelte.d.ts +9 -0
  148. package/dist/repository/components/conflicts/RepositoryConflictResolution.svelte +133 -0
  149. package/dist/repository/components/conflicts/RepositoryConflictResolution.svelte.d.ts +12 -0
  150. package/dist/repository/components/conflicts/RepositoryConflictSurface.svelte +105 -0
  151. package/dist/repository/components/conflicts/RepositoryConflictSurface.svelte.d.ts +23 -0
  152. package/dist/repository/components/conflicts/RepositoryConflictText.svelte +104 -0
  153. package/dist/repository/components/conflicts/RepositoryConflictText.svelte.d.ts +26 -0
  154. package/dist/repository/components/conflicts/RepositorySidebarToggleIcon.svelte +52 -0
  155. package/dist/repository/components/conflicts/RepositorySidebarToggleIcon.svelte.d.ts +7 -0
  156. package/dist/repository/components/conflicts/repository-conflict-file-tree.css +73 -0
  157. package/dist/repository/components/conflicts/repository-conflicts.css +125 -0
  158. package/dist/repository/components/file-history-view.d.ts +15 -0
  159. package/dist/repository/components/file-history-view.js +110 -0
  160. package/dist/repository/components/operation-view.d.ts +16 -0
  161. package/dist/repository/components/operation-view.js +95 -0
  162. package/dist/repository/components/repository-backup.d.ts +22 -0
  163. package/dist/repository/components/repository-backup.js +75 -0
  164. package/dist/repository/components/repository-column-chrome.css +35 -0
  165. package/dist/repository/components/repository-commit-picker.css +55 -0
  166. package/dist/repository/components/repository-feedback.d.ts +7 -0
  167. package/dist/repository/components/repository-feedback.js +40 -0
  168. package/dist/repository/components/repository-identifiers.css +199 -0
  169. package/dist/repository/components/repository-navigation.d.ts +4 -0
  170. package/dist/repository/components/repository-navigation.js +16 -0
  171. package/dist/repository/components/repository-operation-column.css +112 -0
  172. package/dist/repository/components/repository-picker-options.css +11 -0
  173. package/dist/repository/components/repository-plugin.d.ts +33 -0
  174. package/dist/repository/components/repository-plugin.js +191 -0
  175. package/dist/repository/components/repository-review-identifiers.css +50 -0
  176. package/dist/repository/components/repository-status.d.ts +13 -0
  177. package/dist/repository/components/repository-status.js +227 -0
  178. package/dist/repository/components/repository-sync.d.ts +13 -0
  179. package/dist/repository/components/repository-sync.js +93 -0
  180. package/dist/repository/components/repository-tools.d.ts +3 -0
  181. package/dist/repository/components/repository-tools.js +13 -0
  182. package/dist/repository/components/repository-view.d.ts +16 -0
  183. package/dist/repository/components/repository-view.js +140 -0
  184. package/dist/repository/components/restore-controller.d.ts +9 -0
  185. package/dist/repository/components/restore-controller.js +44 -0
  186. package/dist/repository/components/search/search-provider.d.ts +3 -0
  187. package/dist/repository/components/search/search-provider.js +185 -0
  188. package/dist/repository/controllers/adoption-controller.d.ts +29 -0
  189. package/dist/repository/controllers/adoption-controller.js +145 -0
  190. package/dist/repository/controllers/adoption.d.ts +30 -0
  191. package/dist/repository/controllers/adoption.js +21 -0
  192. package/dist/repository/controllers/ai-history.d.ts +57 -0
  193. package/dist/repository/controllers/ai-history.js +51 -0
  194. package/dist/repository/controllers/author.d.ts +2 -0
  195. package/dist/repository/controllers/author.js +11 -0
  196. package/dist/repository/controllers/background-work.d.ts +14 -0
  197. package/dist/repository/controllers/background-work.js +57 -0
  198. package/dist/repository/controllers/backup-follow.d.ts +5 -0
  199. package/dist/repository/controllers/backup-follow.js +29 -0
  200. package/dist/repository/controllers/backup.d.ts +39 -0
  201. package/dist/repository/controllers/backup.js +129 -0
  202. package/dist/repository/controllers/blame-chunks.d.ts +13 -0
  203. package/dist/repository/controllers/blame-chunks.js +51 -0
  204. package/dist/repository/controllers/blame-controller.d.ts +17 -0
  205. package/dist/repository/controllers/blame-controller.js +148 -0
  206. package/dist/repository/controllers/blame-model.d.ts +25 -0
  207. package/dist/repository/controllers/blame-model.js +31 -0
  208. package/dist/repository/controllers/blame-preferences.d.ts +3 -0
  209. package/dist/repository/controllers/blame-preferences.js +18 -0
  210. package/dist/repository/controllers/commit-cards.d.ts +4 -0
  211. package/dist/repository/controllers/commit-cards.js +38 -0
  212. package/dist/repository/controllers/conflict-menu.d.ts +2 -0
  213. package/dist/repository/controllers/conflict-menu.js +1 -0
  214. package/dist/repository/controllers/file-history-controller.d.ts +29 -0
  215. package/dist/repository/controllers/file-history-controller.js +182 -0
  216. package/dist/repository/controllers/forge-accounts.d.ts +48 -0
  217. package/dist/repository/controllers/forge-accounts.js +1 -0
  218. package/dist/repository/controllers/forge-controller.d.ts +24 -0
  219. package/dist/repository/controllers/forge-controller.js +168 -0
  220. package/dist/repository/controllers/graph/model.d.ts +20 -0
  221. package/dist/repository/controllers/graph/model.js +33 -0
  222. package/dist/repository/controllers/graph/repository-log-graph.d.ts +44 -0
  223. package/dist/repository/controllers/graph/repository-log-graph.js +182 -0
  224. package/dist/repository/controllers/graph/repository-log-lanes.d.ts +7 -0
  225. package/dist/repository/controllers/graph/repository-log-lanes.js +19 -0
  226. package/dist/repository/controllers/graph/revision-id.d.ts +3 -0
  227. package/dist/repository/controllers/graph/revision-id.js +10 -0
  228. package/dist/repository/controllers/history-canvas.d.ts +2 -0
  229. package/dist/repository/controllers/history-canvas.js +45 -0
  230. package/dist/repository/controllers/history-controller.d.ts +31 -0
  231. package/dist/repository/controllers/history-controller.js +238 -0
  232. package/dist/repository/controllers/history-files.d.ts +7 -0
  233. package/dist/repository/controllers/history-files.js +18 -0
  234. package/dist/repository/controllers/history-graph.d.ts +20 -0
  235. package/dist/repository/controllers/history-graph.js +89 -0
  236. package/dist/repository/controllers/history-index-controller.d.ts +22 -0
  237. package/dist/repository/controllers/history-index-controller.js +77 -0
  238. package/dist/repository/controllers/history-lifetime.d.ts +13 -0
  239. package/dist/repository/controllers/history-lifetime.js +40 -0
  240. package/dist/repository/controllers/history-reader.d.ts +22 -0
  241. package/dist/repository/controllers/history-reader.js +1 -0
  242. package/dist/repository/controllers/history-search-expression.d.ts +9 -0
  243. package/dist/repository/controllers/history-search-expression.js +86 -0
  244. package/dist/repository/controllers/history-selection.d.ts +5 -0
  245. package/dist/repository/controllers/history-selection.js +32 -0
  246. package/dist/repository/controllers/history-source.d.ts +10 -0
  247. package/dist/repository/controllers/history-source.js +7 -0
  248. package/dist/repository/controllers/history-state.d.ts +34 -0
  249. package/dist/repository/controllers/history-state.js +55 -0
  250. package/dist/repository/controllers/indexed-search-validation.d.ts +4 -0
  251. package/dist/repository/controllers/indexed-search-validation.js +64 -0
  252. package/dist/repository/controllers/indexed-search.d.ts +11 -0
  253. package/dist/repository/controllers/indexed-search.js +1 -0
  254. package/dist/repository/controllers/log-canvas.d.ts +2 -0
  255. package/dist/repository/controllers/log-canvas.js +25 -0
  256. package/dist/repository/controllers/native-indexed-search.d.ts +4 -0
  257. package/dist/repository/controllers/native-indexed-search.js +10 -0
  258. package/dist/repository/controllers/open-history-revision.d.ts +3 -0
  259. package/dist/repository/controllers/open-history-revision.js +8 -0
  260. package/dist/repository/controllers/operation-command.d.ts +2 -0
  261. package/dist/repository/controllers/operation-command.js +55 -0
  262. package/dist/repository/controllers/operation-controller.d.ts +33 -0
  263. package/dist/repository/controllers/operation-controller.js +267 -0
  264. package/dist/repository/controllers/operation-files.d.ts +33 -0
  265. package/dist/repository/controllers/operation-files.js +182 -0
  266. package/dist/repository/controllers/operation-graph.d.ts +17 -0
  267. package/dist/repository/controllers/operation-graph.js +50 -0
  268. package/dist/repository/controllers/operation-message.d.ts +5 -0
  269. package/dist/repository/controllers/operation-message.js +18 -0
  270. package/dist/repository/controllers/operation-metadata.d.ts +5 -0
  271. package/dist/repository/controllers/operation-metadata.js +26 -0
  272. package/dist/repository/controllers/operation-parent.d.ts +5 -0
  273. package/dist/repository/controllers/operation-parent.js +46 -0
  274. package/dist/repository/controllers/operation-state.d.ts +28 -0
  275. package/dist/repository/controllers/operation-state.js +26 -0
  276. package/dist/repository/controllers/parent-candidates.d.ts +4 -0
  277. package/dist/repository/controllers/parent-candidates.js +27 -0
  278. package/dist/repository/controllers/plugin-data.d.ts +9 -0
  279. package/dist/repository/controllers/plugin-data.js +33 -0
  280. package/dist/repository/controllers/preparation-queue.d.ts +9 -0
  281. package/dist/repository/controllers/preparation-queue.js +55 -0
  282. package/dist/repository/controllers/remote-controller.d.ts +23 -0
  283. package/dist/repository/controllers/remote-controller.js +98 -0
  284. package/dist/repository/controllers/remote.d.ts +48 -0
  285. package/dist/repository/controllers/remote.js +13 -0
  286. package/dist/repository/controllers/restore-recovery.d.ts +3 -0
  287. package/dist/repository/controllers/restore-recovery.js +32 -0
  288. package/dist/repository/controllers/restore.d.ts +66 -0
  289. package/dist/repository/controllers/restore.js +201 -0
  290. package/dist/repository/controllers/revision-comparison.d.ts +20 -0
  291. package/dist/repository/controllers/revision-comparison.js +89 -0
  292. package/dist/repository/controllers/search-controller.d.ts +19 -0
  293. package/dist/repository/controllers/search-controller.js +105 -0
  294. package/dist/repository/controllers/search-page.d.ts +2 -0
  295. package/dist/repository/controllers/search-page.js +39 -0
  296. package/dist/repository/controllers/search.d.ts +51 -0
  297. package/dist/repository/controllers/search.js +8 -0
  298. package/dist/repository/controllers/services.d.ts +7 -0
  299. package/dist/repository/controllers/services.js +24 -0
  300. package/dist/repository/controllers/storage-controller.d.ts +30 -0
  301. package/dist/repository/controllers/storage-controller.js +130 -0
  302. package/dist/repository/controllers/storage.d.ts +26 -0
  303. package/dist/repository/controllers/storage.js +1 -0
  304. package/dist/repository/controllers/sync-application.d.ts +17 -0
  305. package/dist/repository/controllers/sync-application.js +45 -0
  306. package/dist/repository/controllers/sync-controller.d.ts +31 -0
  307. package/dist/repository/controllers/sync-controller.js +300 -0
  308. package/dist/repository/controllers/sync-publication.d.ts +7 -0
  309. package/dist/repository/controllers/sync-publication.js +29 -0
  310. package/dist/repository/controllers/sync-recovery.d.ts +7 -0
  311. package/dist/repository/controllers/sync-recovery.js +27 -0
  312. package/dist/repository/controllers/sync.d.ts +62 -0
  313. package/dist/repository/controllers/sync.js +38 -0
  314. package/dist/repository/controllers/tags.d.ts +7 -0
  315. package/dist/repository/controllers/tags.js +71 -0
  316. package/dist/repository/controllers/transcript-paths.d.ts +2 -0
  317. package/dist/repository/controllers/transcript-paths.js +17 -0
  318. package/dist/repository/controllers/transcript-writers.d.ts +9 -0
  319. package/dist/repository/controllers/transcript-writers.js +37 -0
  320. package/dist/repository/controllers/working-copy-controller.d.ts +22 -0
  321. package/dist/repository/controllers/working-copy-controller.js +58 -0
  322. package/dist/repository/controllers/working-copy-status.d.ts +16 -0
  323. package/dist/repository/controllers/working-copy-status.js +57 -0
  324. package/dist/repository/controllers/workspaces.d.ts +7 -0
  325. package/dist/repository/controllers/workspaces.js +4 -0
  326. package/dist/repository/index.d.ts +9 -0
  327. package/dist/repository/index.js +6 -0
  328. package/manifest.json +2 -2
  329. package/package.json +41 -9
@@ -0,0 +1,129 @@
1
+ <script lang="ts">
2
+ // Uses the maintained restore-dialog composition for an explicit local decision.
3
+ import { Button } from "@lapismd/design-core/shadcn/button";
4
+ import * as AlertDialog from "@lapismd/design-core/shadcn/alert-dialog";
5
+ import type { PendingPublication } from "../../controllers/remote.js";
6
+ let {
7
+ pending,
8
+ busy,
9
+ canObserve,
10
+ onObserve,
11
+ onStop,
12
+ }: {
13
+ pending: PendingPublication;
14
+ busy: boolean;
15
+ canObserve: boolean;
16
+ onObserve(id: string): Promise<boolean>;
17
+ onStop(id: string): Promise<boolean>;
18
+ } = $props();
19
+ let confirm = $state(false);
20
+ let selected = $state<PendingPublication>();
21
+ const terminal = $derived(
22
+ ["complete", "stale", "stopped"].includes(pending.outcome),
23
+ );
24
+ async function stop() {
25
+ if (selected && (await onStop(selected.request_id))) confirm = false;
26
+ }
27
+ </script>
28
+
29
+ <section class="publication-recovery" aria-label="Original backup push">
30
+ <strong>Previous push needs review</strong>
31
+ <p>
32
+ {terminal
33
+ ? "Its recorded result can be retained and the local recovery marker cleared."
34
+ : "The result of this original push has not been confirmed. Checking it never sends the push again."}
35
+ </p>
36
+ <dl>
37
+ <div>
38
+ <dt>Checkpoint</dt>
39
+ <dd><code title={pending.after}>{pending.after.slice(0, 12)}</code></dd>
40
+ </div>
41
+ <div>
42
+ <dt>Request</dt>
43
+ <dd><code>{pending.request_id}</code></dd>
44
+ </div>
45
+ </dl>
46
+ <div class="publication-actions">
47
+ <Button
48
+ variant="outline"
49
+ size="sm"
50
+ disabled={busy || !canObserve}
51
+ onclick={() => onObserve(pending.request_id)}>Check original push</Button
52
+ >
53
+ <Button
54
+ variant="outline"
55
+ size="sm"
56
+ disabled={busy}
57
+ onclick={() => {
58
+ if (terminal) void onStop(pending.request_id);
59
+ else {
60
+ selected = pending;
61
+ confirm = true;
62
+ }
63
+ }}>{terminal ? "Finish recovery" : "Stop tracking this push"}</Button
64
+ >
65
+ </div>
66
+ {#if !canObserve}<p>
67
+ Reconnect the account to check the remote result. You can stop tracking
68
+ this request locally.
69
+ </p>{/if}
70
+ </section>
71
+ <AlertDialog.Root
72
+ open={confirm}
73
+ onOpenChange={(open) => {
74
+ if (!busy) confirm = open;
75
+ }}
76
+ >
77
+ <AlertDialog.Content>
78
+ <AlertDialog.Header
79
+ ><AlertDialog.Title>Stop tracking this push?</AlertDialog.Title
80
+ ><AlertDialog.Description>
81
+ Its outcome will remain unknown. This retains the original receipt and
82
+ all local history, and cannot cancel or undo a push that reached the
83
+ remote. The next synchronization must fetch and merge before publishing
84
+ a new request.
85
+ </AlertDialog.Description></AlertDialog.Header
86
+ >
87
+ <AlertDialog.Footer
88
+ ><AlertDialog.Cancel disabled={busy}>Keep tracking</AlertDialog.Cancel
89
+ ><Button disabled={busy} onclick={stop}>Stop tracking</Button
90
+ ></AlertDialog.Footer
91
+ >
92
+ </AlertDialog.Content>
93
+ </AlertDialog.Root>
94
+
95
+ <style>
96
+ .publication-recovery {
97
+ border-top: 1px solid var(--border);
98
+ margin-top: 1.25rem;
99
+ padding-top: 1rem;
100
+ font-size: 0.8rem;
101
+ }
102
+ p {
103
+ color: var(--muted-foreground);
104
+ margin: 0.5rem 0;
105
+ }
106
+ dl {
107
+ margin: 0.75rem 0;
108
+ display: grid;
109
+ gap: 0.4rem;
110
+ }
111
+ dl div {
112
+ display: flex;
113
+ gap: 0.5rem;
114
+ min-width: 0;
115
+ }
116
+ dt {
117
+ color: var(--muted-foreground);
118
+ }
119
+ dd {
120
+ margin: 0;
121
+ min-width: 0;
122
+ overflow-wrap: anywhere;
123
+ }
124
+ .publication-actions {
125
+ display: flex;
126
+ flex-wrap: wrap;
127
+ gap: 0.5rem;
128
+ }
129
+ </style>
@@ -0,0 +1,11 @@
1
+ import type { PendingPublication } from "../../controllers/remote.js";
2
+ type $$ComponentProps = {
3
+ pending: PendingPublication;
4
+ busy: boolean;
5
+ canObserve: boolean;
6
+ onObserve(id: string): Promise<boolean>;
7
+ onStop(id: string): Promise<boolean>;
8
+ };
9
+ declare const PublicationRecovery: import("svelte").Component<$$ComponentProps, {}, "">;
10
+ type PublicationRecovery = ReturnType<typeof PublicationRecovery>;
11
+ export default PublicationRecovery;
@@ -0,0 +1,288 @@
1
+ <script lang="ts">
2
+ // Adapted from jj-store StoreForgeRepositoryAccess.svelte (Apache-2.0).
3
+ import { onMount } from "svelte";
4
+ import { Button } from "@lapismd/design-core/shadcn/button";
5
+ import { Input } from "@lapismd/design-core/shadcn/input";
6
+ import { Skeleton } from "@lapismd/design-core/shadcn/skeleton";
7
+ import { Badge } from "@lapismd/design-core/shadcn/badge";
8
+ import BackupCard from "./BackupCard.svelte";
9
+ import * as Field from "@lapismd/design-core/shadcn/field";
10
+ import * as Empty from "@lapismd/design-core/shadcn/empty";
11
+ import RefreshCw from "@lucide/svelte/icons/refresh-cw";
12
+ import CloudDownload from "@lucide/svelte/icons/cloud-download";
13
+ import KeyRound from "@lucide/svelte/icons/key-round";
14
+ import History from "@lucide/svelte/icons/history";
15
+ import PublicationRecovery from "./PublicationRecovery.svelte";
16
+ import BackupField from "./BackupField.svelte";
17
+ import BackupSelect from "./BackupSelect.svelte";
18
+ import type { ForgeController } from "../../controllers/forge-controller.js";
19
+ import type { ForgeState } from "../../controllers/forge-accounts.js";
20
+ import type { RemoteController } from "../../controllers/remote-controller.js";
21
+ import type { RemoteViewState } from "../../controllers/remote.js";
22
+ import type { RestoreController } from "../../controllers/restore.js";
23
+ let {
24
+ controller,
25
+ accounts,
26
+ restore,
27
+ }: {
28
+ controller: RemoteController;
29
+ accounts: ForgeController;
30
+ restore?: RestoreController;
31
+ } = $props();
32
+ let snapshot = $state<RemoteViewState>({ busy: true, phase: "loading" });
33
+ let inventory = $state<ForgeState>({ busy: true, flow: "" });
34
+ let account = $state("");
35
+ let project = $state("");
36
+ let branch = $state("");
37
+ let initialized = false;
38
+ const id = $props.id();
39
+ const available = $derived(
40
+ inventory.inventory?.accounts.filter((value) => value.available) ?? [],
41
+ );
42
+ $effect(() => {
43
+ if (!available.some((value) => value.id === account))
44
+ account = available.length === 1 ? available[0].id : "";
45
+ });
46
+ onMount(() => {
47
+ const stopRemote = controller.subscribe((value) => {
48
+ snapshot = value;
49
+ if (!initialized && value.data) {
50
+ initialized = true;
51
+ const config = value.data.configuration;
52
+ if (config) {
53
+ account = config.account;
54
+ project = config.project;
55
+ branch = config.target.branch;
56
+ }
57
+ }
58
+ });
59
+ const stopAccounts = accounts.subscribe((value) => (inventory = value));
60
+ void controller.refresh();
61
+ return () => {
62
+ stopRemote();
63
+ stopAccounts();
64
+ };
65
+ });
66
+ async function connect() {
67
+ if (await controller.configure(account, project, branch)) {
68
+ const config = snapshot.data?.configuration;
69
+ if (config) {
70
+ account = config.account;
71
+ project = config.project;
72
+ branch = config.target.branch;
73
+ }
74
+ }
75
+ }
76
+ </script>
77
+
78
+ <section aria-label="Remote vault backup" aria-busy={snapshot.busy}>
79
+ <BackupCard
80
+ title="Remote backup"
81
+ Icon={CloudDownload}
82
+ padded={false}
83
+ description={snapshot.data?.configuration
84
+ ? `${snapshot.data.configuration.project} · ${snapshot.data.configuration.target.branch}`
85
+ : "Connect a GitHub or Forgejo repository to back up or restore this vault."}
86
+ >
87
+ {#snippet actions()}<Button
88
+ variant="ghost"
89
+ size="icon-sm"
90
+ disabled={snapshot.busy}
91
+ aria-label="Refresh remote settings"
92
+ onclick={() => controller.refresh()}><RefreshCw /></Button
93
+ >{/snippet}
94
+ {#if !snapshot.data && snapshot.busy}
95
+ <div
96
+ class="remote-loading"
97
+ role="status"
98
+ aria-label="Loading remote backup"
99
+ >
100
+ <Skeleton style="height:1rem;width:30%" /><Skeleton
101
+ style="height:2.25rem;width:100%"
102
+ />
103
+ <Skeleton style="height:1rem;width:40%" /><Skeleton
104
+ style="height:2.25rem;width:100%"
105
+ />
106
+ </div>
107
+ {:else if !snapshot.data}
108
+ <Empty.Root
109
+ ><Empty.Header
110
+ ><Empty.Media variant="icon"><CloudDownload /></Empty.Media
111
+ ><Empty.Title>Remote settings unavailable</Empty.Title
112
+ ><Empty.Description
113
+ >Refresh to read your saved connection.</Empty.Description
114
+ ></Empty.Header
115
+ ></Empty.Root
116
+ >
117
+ {:else if !available.length}
118
+ <Empty.Root
119
+ ><Empty.Header
120
+ ><Empty.Media variant="icon"><KeyRound /></Empty.Media><Empty.Title
121
+ >{snapshot.data.configuration
122
+ ? "Reconnect to fetch updates"
123
+ : "Connect an account first"}</Empty.Title
124
+ ><Empty.Description
125
+ >{snapshot.data.configuration
126
+ ? "Your cached backup remains available. Reconnect an account above to fetch more history."
127
+ : "Add a forge account above to choose a remote backup repository."}</Empty.Description
128
+ ></Empty.Header
129
+ >
130
+ {#if snapshot.data.configuration}<Empty.Content
131
+ ><Button
132
+ variant="outline"
133
+ disabled={snapshot.busy}
134
+ onclick={() => controller.disconnect()}>Disconnect remote</Button
135
+ ></Empty.Content
136
+ >{/if}
137
+ {#if snapshot.data.checkpoint && restore}<Empty.Content
138
+ ><Button
139
+ variant="outline"
140
+ disabled={snapshot.busy}
141
+ onclick={() =>
142
+ restore?.prepareVault(snapshot.data!.checkpoint!.commit)}
143
+ ><History data-icon="inline-start" />Review restore</Button
144
+ ></Empty.Content
145
+ >{/if}
146
+ </Empty.Root>
147
+ {:else}
148
+ <form
149
+ onsubmit={(event) => {
150
+ event.preventDefault();
151
+ void connect();
152
+ }}
153
+ >
154
+ <Field.Group style="gap:0">
155
+ <BackupField label="Forge account" id={`${id}-account`}>
156
+ <BackupSelect
157
+ id={`${id}-account`}
158
+ aria-label="Forge account"
159
+ bind:value={account}
160
+ disabled={snapshot.busy}
161
+ options={available.map((value) => ({
162
+ value: value.id,
163
+ label: `${value.login} · ${new URL(value.api_url).host}`,
164
+ }))}
165
+ />
166
+ </BackupField>
167
+ <BackupField
168
+ label="Remote repository"
169
+ id={`${id}-project`}
170
+ description="Use an existing repository in owner/repository form."
171
+ >
172
+ <Input
173
+ id={`${id}-project`}
174
+ bind:value={project}
175
+ required
176
+ placeholder="owner/notes"
177
+ disabled={snapshot.busy}
178
+ />
179
+ </BackupField>
180
+ <BackupField
181
+ label="Backup branch"
182
+ id={`${id}-branch`}
183
+ description="Leave empty to use the repository's default branch."
184
+ >
185
+ <Input
186
+ id={`${id}-branch`}
187
+ bind:value={branch}
188
+ placeholder="Repository default"
189
+ disabled={snapshot.busy}
190
+ />
191
+ </BackupField>
192
+ </Field.Group>
193
+ <div class="remote-actions">
194
+ <Button
195
+ type="submit"
196
+ disabled={snapshot.busy || !account || !project.trim()}
197
+ >{snapshot.data.configuration
198
+ ? "Save connection"
199
+ : "Connect repository"}</Button
200
+ >
201
+ {#if snapshot.data.configuration}<Button
202
+ type="button"
203
+ variant="outline"
204
+ disabled={snapshot.busy}
205
+ onclick={() => controller.disconnect()}>Disconnect</Button
206
+ >{/if}
207
+ </div>
208
+ </form>
209
+ {#if snapshot.data.configuration}
210
+ <div class="remote-history">
211
+ {#if !snapshot.data.configuration.canPush}<Badge variant="secondary"
212
+ >Read-only access</Badge
213
+ >{/if}
214
+ <p>
215
+ Fetch remote history without changing local files. Review a
216
+ checkpoint to restore it safely, including into a new empty vault.
217
+ </p>
218
+ <div class="remote-actions">
219
+ <Button
220
+ variant="outline"
221
+ disabled={snapshot.busy ||
222
+ !available.some(
223
+ (value) => value.id === snapshot.data?.configuration?.account,
224
+ )}
225
+ onclick={() => controller.fetch()}
226
+ ><CloudDownload data-icon="inline-start" />Fetch remote history</Button
227
+ >
228
+ {#if snapshot.data.checkpoint && restore}<Button
229
+ variant="outline"
230
+ disabled={snapshot.busy}
231
+ onclick={() =>
232
+ restore?.prepareVault(snapshot.data!.checkpoint!.commit)}
233
+ ><History data-icon="inline-start" />Review restore</Button
234
+ >{/if}
235
+ </div>
236
+ {#if snapshot.data.checkpoint}<p
237
+ class="checkpoint"
238
+ title={snapshot.data.checkpoint.description}
239
+ >
240
+ Latest remote checkpoint: {snapshot.data.checkpoint.description.split(
241
+ "\n",
242
+ )[0] || "Untitled checkpoint"}
243
+ </p>{/if}
244
+ </div>
245
+ {/if}
246
+ {/if}
247
+ {#if snapshot.data?.publication && controller.service.publication}<PublicationRecovery
248
+ pending={snapshot.data.publication}
249
+ busy={snapshot.busy}
250
+ canObserve={available.some(
251
+ (value) => value.id === snapshot.data?.configuration?.account,
252
+ )}
253
+ onObserve={(id) => controller.observePublication(id)}
254
+ onStop={(id) => controller.stopPublication(id)}
255
+ />{/if}
256
+ </BackupCard>
257
+ </section>
258
+
259
+ <style>
260
+ .remote-loading {
261
+ display: flex;
262
+ flex-direction: column;
263
+ gap: 0.75rem;
264
+ padding: 1rem;
265
+ }
266
+ .remote-actions {
267
+ display: flex;
268
+ flex-wrap: wrap;
269
+ align-items: center;
270
+ gap: 0.5rem;
271
+ padding: 0.85rem 1rem;
272
+ justify-content: flex-end;
273
+ }
274
+ .remote-history {
275
+ padding: 1rem;
276
+ border-top: 1px solid var(--border);
277
+ }
278
+ p {
279
+ font-size: 0.8rem;
280
+ color: var(--muted-foreground);
281
+ margin: 0.5rem 0;
282
+ }
283
+ .checkpoint {
284
+ overflow: hidden;
285
+ text-overflow: ellipsis;
286
+ white-space: nowrap;
287
+ }
288
+ </style>
@@ -0,0 +1,11 @@
1
+ import type { ForgeController } from "../../controllers/forge-controller.js";
2
+ import type { RemoteController } from "../../controllers/remote-controller.js";
3
+ import type { RestoreController } from "../../controllers/restore.js";
4
+ type $$ComponentProps = {
5
+ controller: RemoteController;
6
+ accounts: ForgeController;
7
+ restore?: RestoreController;
8
+ };
9
+ declare const RemoteSettings: import("svelte").Component<$$ComponentProps, {}, "">;
10
+ type RemoteSettings = ReturnType<typeof RemoteSettings>;
11
+ export default RemoteSettings;
@@ -0,0 +1,51 @@
1
+ <script lang="ts">
2
+ import {
3
+ AppSettingsRoot,
4
+ AppSettingsSection,
5
+ type WorkspaceSettingsPageProps,
6
+ } from "@lapismd/design-core/workspace/settings";
7
+ import { BACKUP_SETTINGS } from "./backup-settings.js";
8
+ import BackupSettingsField from "./BackupSettingsField.svelte";
9
+ let { controller, app, section }: WorkspaceSettingsPageProps = $props();
10
+ const titleId = $props.id();
11
+ const backup = $derived(
12
+ section.fields?.find((field) => field.id === BACKUP_SETTINGS),
13
+ );
14
+ const general = $derived({
15
+ ...section,
16
+ fields: section.fields?.filter((field) => field.id !== BACKUP_SETTINGS),
17
+ });
18
+ </script>
19
+
20
+ <div class="repository-settings-page">
21
+ <AppSettingsRoot {controller} {app}>
22
+ <AppSettingsSection section={general} />
23
+ </AppSettingsRoot>
24
+ {#if backup?.type === "custom"}
25
+ <section
26
+ class="repository-backup-section"
27
+ aria-labelledby={titleId}
28
+ data-setting-id={BACKUP_SETTINGS}
29
+ >
30
+ <h2 id={titleId}>Backup and synchronisation</h2>
31
+ <BackupSettingsField field={backup} />
32
+ </section>
33
+ {/if}
34
+ </div>
35
+
36
+ <style>
37
+ .repository-settings-page {
38
+ display: grid;
39
+ gap: 1.75rem;
40
+ min-width: 0;
41
+ }
42
+ .repository-backup-section {
43
+ min-width: 0;
44
+ }
45
+ h2 {
46
+ margin: 0 0 0.85rem;
47
+ font-size: var(--ui-workspace-settings-heading-size, 1rem);
48
+ font-weight: var(--ui-workspace-settings-heading-weight, 600);
49
+ line-height: 1.25;
50
+ }
51
+ </style>
@@ -0,0 +1,4 @@
1
+ import { type WorkspaceSettingsPageProps } from "@lapismd/design-core/workspace/settings";
2
+ declare const RepositorySettingsPage: import("svelte").Component<WorkspaceSettingsPageProps, {}, "">;
3
+ type RepositorySettingsPage = ReturnType<typeof RepositorySettingsPage>;
4
+ export default RepositorySettingsPage;
@@ -0,0 +1,158 @@
1
+ <script lang="ts">
2
+ import { onMount } from "svelte";
3
+ import BackupCard from "./BackupCard.svelte";
4
+ import * as Field from "@lapismd/design-core/shadcn/field";
5
+ import * as ToggleGroup from "@lapismd/design-core/shadcn/toggle-group";
6
+ import { Button } from "@lapismd/design-core/shadcn/button";
7
+ import { Skeleton } from "@lapismd/design-core/shadcn/skeleton";
8
+ import FolderOpen from "@lucide/svelte/icons/folder-open";
9
+ import FolderCog from "@lucide/svelte/icons/folder-cog";
10
+ import RefreshCw from "@lucide/svelte/icons/refresh-cw";
11
+ import type { StorageController } from "../../controllers/storage-controller.js";
12
+ import type {
13
+ StorageState,
14
+ StorageLocation,
15
+ } from "../../controllers/storage.js";
16
+ let { controller }: { controller: StorageController } = $props();
17
+ let snapshot = $state<StorageState>({
18
+ busy: true,
19
+ phase: "loading",
20
+ needsReload: false,
21
+ });
22
+ let selected = $state<StorageLocation>("external");
23
+ onMount(() => {
24
+ const stop = controller.subscribe((value) => {
25
+ snapshot = value;
26
+ if (value.data) selected = value.data.location;
27
+ });
28
+ void controller.refresh();
29
+ return stop;
30
+ });
31
+ </script>
32
+
33
+ <section aria-label="History storage" aria-busy={snapshot.busy}>
34
+ <BackupCard
35
+ title="History storage"
36
+ Icon={FolderCog}
37
+ description="Keep automatic history in application data, or store it in the vault’s root .jj directory."
38
+ >
39
+ {#snippet actions()}<Button
40
+ variant="ghost"
41
+ size="icon-sm"
42
+ disabled={snapshot.busy}
43
+ aria-label="Refresh history storage"
44
+ onclick={() => controller.refresh()}><RefreshCw /></Button
45
+ >{/snippet}
46
+ {#if !snapshot.data && snapshot.busy}
47
+ <div
48
+ class="storage-loading"
49
+ role="status"
50
+ aria-label="Loading history storage"
51
+ >
52
+ <Skeleton style="height:2rem;width:14rem;max-width:100%" /><Skeleton
53
+ style="height:1rem;width:80%"
54
+ />
55
+ </div>
56
+ {:else if snapshot.data?.pending}
57
+ <p>
58
+ A history storage move is unfinished. Resume the original move, or keep
59
+ the previous location if installation has not completed.
60
+ </p>
61
+ <div class="storage-actions">
62
+ <Button disabled={snapshot.busy} onclick={() => controller.recover()}
63
+ >Resume move and reload</Button
64
+ ><Button
65
+ variant="outline"
66
+ disabled={snapshot.busy}
67
+ onclick={() => controller.rollback()}>Keep previous location</Button
68
+ >
69
+ </div>
70
+ {:else if snapshot.data}
71
+ {#if snapshot.data.location === "external" && snapshot.data.repositoryPath}
72
+ <div class="repository-location">
73
+ <strong>Repository location</strong>
74
+ <code>{snapshot.data.repositoryPath}</code>
75
+ <Button
76
+ variant="outline"
77
+ size="sm"
78
+ disabled={snapshot.busy ||
79
+ !snapshot.data.canReveal ||
80
+ snapshot.needsReload}
81
+ onclick={() => controller.reveal()}
82
+ ><FolderOpen data-icon="inline-start" />Show in file manager</Button
83
+ >
84
+ </div>
85
+ {/if}
86
+ <Field.Field data-disabled={snapshot.busy || undefined}>
87
+ <Field.Label>Repository metadata location</Field.Label>
88
+ <ToggleGroup.Root
89
+ type="single"
90
+ variant="outline"
91
+ size="sm"
92
+ aria-label="Repository metadata location"
93
+ value={selected}
94
+ disabled={snapshot.busy || snapshot.needsReload}
95
+ onValueChange={(value) => {
96
+ if (value === "external" || value === "colocated") selected = value;
97
+ }}
98
+ >
99
+ <ToggleGroup.Item value="external">Application data</ToggleGroup.Item>
100
+ <ToggleGroup.Item value="colocated">Vault root (.jj)</ToggleGroup.Item
101
+ >
102
+ </ToggleGroup.Root>
103
+ <Field.Description
104
+ >{selected === "external"
105
+ ? "Default. No JJ or Git metadata is added to the vault."
106
+ : "Advanced. The vault contains its own .jj metadata. Existing repository data is preserved and will not be overwritten."}</Field.Description
107
+ >
108
+ </Field.Field>
109
+ {#if snapshot.needsReload}<div class="storage-actions">
110
+ <Button disabled={snapshot.busy} onclick={() => controller.reload()}
111
+ ><RefreshCw data-icon="inline-start" />Reload vault</Button
112
+ >
113
+ </div>
114
+ {:else if selected !== snapshot.data.location}<div
115
+ class="storage-actions"
116
+ >
117
+ <Button
118
+ disabled={snapshot.busy}
119
+ onclick={() => controller.change(selected)}
120
+ ><FolderCog data-icon="inline-start" />Move history and reload</Button
121
+ >
122
+ </div>{/if}
123
+ {:else}<p>Refresh to load the vault’s history storage settings.</p>{/if}
124
+ {#snippet footer()}<p>
125
+ Moving preserves local history and recovery records. The vault reloads
126
+ after the move.
127
+ </p>{/snippet}
128
+ </BackupCard>
129
+ </section>
130
+
131
+ <style>
132
+ .repository-location {
133
+ display: grid;
134
+ justify-items: start;
135
+ gap: 0.5rem;
136
+ margin-bottom: 1rem;
137
+ font-size: 0.8125rem;
138
+ }
139
+ .repository-location code {
140
+ overflow-wrap: anywhere;
141
+ white-space: normal;
142
+ }
143
+ .storage-actions,
144
+ .storage-loading {
145
+ display: flex;
146
+ gap: 0.75rem;
147
+ flex-wrap: wrap;
148
+ margin-top: 0.75rem;
149
+ }
150
+ .storage-loading {
151
+ flex-direction: column;
152
+ }
153
+ p {
154
+ margin: 0;
155
+ color: var(--muted-foreground);
156
+ font-size: 0.8rem;
157
+ }
158
+ </style>
@@ -0,0 +1,7 @@
1
+ import type { StorageController } from "../../controllers/storage-controller.js";
2
+ type $$ComponentProps = {
3
+ controller: StorageController;
4
+ };
5
+ declare const StorageSettings: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type StorageSettings = ReturnType<typeof StorageSettings>;
7
+ export default StorageSettings;