@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,13 @@
1
+ <script lang="ts">
2
+ import { onDestroy, untrack } from "svelte";
3
+ import type { WorkspaceCustomSettingProps } from "@lapis-notes/api";
4
+ import type { BackupSettingsFieldDefinition } from "./backup-settings.js";
5
+ import BackupSettings from "./BackupSettings.svelte";
6
+ let { field }: Pick<WorkspaceCustomSettingProps, "field"> = $props();
7
+ const panel = untrack(() =>
8
+ (field as BackupSettingsFieldDefinition).openPanel(),
9
+ );
10
+ onDestroy(() => void panel.close().catch(panel.report));
11
+ </script>
12
+
13
+ <BackupSettings {...panel.props} />
@@ -0,0 +1,4 @@
1
+ import type { WorkspaceCustomSettingProps } from "@lapis-notes/api";
2
+ declare const BackupSettingsField: import("svelte").Component<Pick<WorkspaceCustomSettingProps<unknown>, "field">, {}, "">;
3
+ type BackupSettingsField = ReturnType<typeof BackupSettingsField>;
4
+ export default BackupSettingsField;
@@ -0,0 +1,231 @@
1
+ <script lang="ts">
2
+ // Adapted from jj-store StoreIntegrations.svelte (Apache-2.0).
3
+ import { onMount, tick, type Snippet } from "svelte";
4
+ import { Button } from "@lapismd/design-core/shadcn/button";
5
+ import * as Menu from "@lapismd/design-core/shadcn/dropdown-menu";
6
+ import * as Empty from "@lapismd/design-core/shadcn/empty";
7
+ import { Skeleton } from "@lapismd/design-core/shadcn/skeleton";
8
+ import { Badge } from "@lapismd/design-core/shadcn/badge";
9
+ import Plus from "@lucide/svelte/icons/plus";
10
+ import Trash2 from "@lucide/svelte/icons/trash-2";
11
+ import KeyRound from "@lucide/svelte/icons/key-round";
12
+ import RefreshCw from "@lucide/svelte/icons/refresh-cw";
13
+ import RepositoryAuthorAvatar from "../RepositoryAuthorAvatar.svelte";
14
+ import ForgeAuthorization from "./ForgeAuthorization.svelte";
15
+ import ForgeIcon from "./ForgeIcon.svelte";
16
+ import BackupCard from "./BackupCard.svelte";
17
+ import type { ForgeController } from "../../controllers/forge-controller.js";
18
+ import type { ForgeState } from "../../controllers/forge-accounts.js";
19
+ let {
20
+ controller,
21
+ remoteSettings,
22
+ }: { controller: ForgeController; remoteSettings?: Snippet } = $props();
23
+ let snapshot = $state<ForgeState>({ busy: true, flow: "" });
24
+ let menu = $state(false);
25
+ onMount(() => {
26
+ const unsubscribe = controller.subscribe((value) => (snapshot = value));
27
+ void controller.refresh();
28
+ return unsubscribe;
29
+ });
30
+ async function choose(method: "oauth" | "pat" | "enterprise" | "forgejo") {
31
+ menu = false;
32
+ await tick();
33
+ if (method === "oauth") await controller.begin();
34
+ else controller.tokenFlow(method);
35
+ }
36
+ </script>
37
+
38
+ <section
39
+ class="backup-settings"
40
+ aria-label="Repository backup settings"
41
+ aria-busy={snapshot.busy}
42
+ >
43
+ <BackupCard
44
+ title="GitHub and Forgejo"
45
+ description="Connect an account for remote vault backup."
46
+ padded={false}
47
+ >
48
+ {#snippet icon()}<ForgeIcon provider="github" />{/snippet}
49
+ {#snippet actions()}
50
+ <Button
51
+ variant="ghost"
52
+ size="icon-sm"
53
+ disabled={snapshot.busy}
54
+ aria-label="Refresh forge accounts"
55
+ onclick={() => controller.refresh()}><RefreshCw /></Button
56
+ >
57
+ {/snippet}
58
+ {#if !snapshot.inventory && snapshot.busy}<div
59
+ class="account-row"
60
+ role="status"
61
+ aria-label="Loading forge accounts"
62
+ >
63
+ <Skeleton style="height:2.5rem;width:2.5rem" /><Skeleton
64
+ style="height:1rem;width:60%"
65
+ />
66
+ </div>
67
+ {:else if !snapshot.inventory}<Empty.Root
68
+ ><Empty.Header
69
+ ><Empty.Media variant="icon"><KeyRound /></Empty.Media><Empty.Title
70
+ >Accounts unavailable</Empty.Title
71
+ ><Empty.Description
72
+ >Refresh to load your forge accounts.</Empty.Description
73
+ ></Empty.Header
74
+ ></Empty.Root
75
+ >
76
+ {:else}
77
+ {#each snapshot.inventory.accounts as account (account.id)}<div
78
+ class="account-row"
79
+ >
80
+ <RepositoryAuthorAvatar
81
+ name={account.name || account.login}
82
+ avatarUrl={account.avatar_url || undefined}
83
+ email={account.email || ""}
84
+ handle={account.login}
85
+ size="md"
86
+ />
87
+ <div class="account-identity">
88
+ <div>
89
+ <ForgeIcon
90
+ provider={account.api_url.includes("/api/v1")
91
+ ? "forgejo"
92
+ : "github"}
93
+ /><strong>{account.login}</strong><Badge variant="secondary"
94
+ >{account.method === "oauth"
95
+ ? "OAuth"
96
+ : account.method === "enterprise"
97
+ ? "Enterprise PAT"
98
+ : "PAT"}</Badge
99
+ >
100
+ </div>
101
+ {#if account.email}<span>{account.email}</span>{/if}<span
102
+ >{new URL(account.api_url).host} · {account.available
103
+ ? "Connected"
104
+ : "Reconnect required"}</span
105
+ >
106
+ </div>
107
+ <Button
108
+ variant="outline"
109
+ size="sm"
110
+ disabled={snapshot.busy || Boolean(snapshot.flow)}
111
+ aria-label={`Forget ${account.login} ${account.method} account`}
112
+ onclick={() => controller.forget(account.id)}
113
+ >Forget<Trash2 data-icon="inline-end" /></Button
114
+ >
115
+ </div>{/each}
116
+ {#if !snapshot.inventory.accounts.length}<p class="guidance">
117
+ Connect an account to choose a remote backup repository.
118
+ </p>{/if}
119
+ {/if}
120
+ {#snippet footer()}
121
+ <span class="guidance"
122
+ ><ForgeIcon provider="github" /><ForgeIcon provider="forgejo" />Forge
123
+ account access</span
124
+ >
125
+ <Menu.Root bind:open={menu}
126
+ ><Menu.Trigger
127
+ >{#snippet child({ props })}<Button
128
+ {...props}
129
+ variant="outline"
130
+ disabled={snapshot.busy || Boolean(snapshot.flow)}
131
+ aria-label="Add forge account"
132
+ >Add forge account<Plus data-icon="inline-end" /></Button
133
+ >{/snippet}</Menu.Trigger
134
+ >
135
+ <Menu.Content
136
+ align="end"
137
+ style="width:max-content;min-width:14rem;max-width:calc(100dvw - 1rem);white-space:nowrap"
138
+ ><Menu.Group>
139
+ <Menu.Item
140
+ disabled={!snapshot.inventory?.oauth_available}
141
+ onSelect={() => void choose("oauth")}
142
+ ><ForgeIcon provider="github" decorative />Authorize GitHub
143
+ Account</Menu.Item
144
+ >
145
+ <Menu.Item onSelect={() => void choose("pat")}
146
+ ><KeyRound />Add Personal Access Token</Menu.Item
147
+ >
148
+ <Menu.Item onSelect={() => void choose("enterprise")}
149
+ ><ForgeIcon provider="github" decorative />Add GitHub Enterprise
150
+ Account</Menu.Item
151
+ >
152
+ <Menu.Item onSelect={() => void choose("forgejo")}
153
+ ><ForgeIcon provider="forgejo" decorative />Add Forgejo Account</Menu.Item
154
+ >
155
+ </Menu.Group></Menu.Content
156
+ >
157
+ </Menu.Root>
158
+ {/snippet}
159
+ </BackupCard>
160
+ {#if snapshot.inventory && !snapshot.inventory.oauth_available}<p
161
+ class="guidance"
162
+ >
163
+ Device sign-in uses the public OAuth client ID configured for jj-store.
164
+ Configure that ID or connect with a personal token.
165
+ </p>{/if}
166
+ <ForgeAuthorization manager={controller} {snapshot} />
167
+ {@render remoteSettings?.()}
168
+ <p class="guidance">
169
+ <KeyRound />Credentials are saved locally in your OS credential store.
170
+ </p>
171
+ </section>
172
+
173
+ <style>
174
+ .backup-settings {
175
+ display: grid;
176
+ gap: 1rem;
177
+ min-width: 0;
178
+ color: var(--foreground);
179
+ }
180
+ .account-row {
181
+ display: flex;
182
+ align-items: center;
183
+ gap: 0.75rem;
184
+ padding: 0.85rem 1rem;
185
+ min-width: 0;
186
+ }
187
+ .account-identity {
188
+ display: flex;
189
+ flex: 1;
190
+ flex-direction: column;
191
+ gap: 0.2rem;
192
+ min-width: 0;
193
+ overflow-wrap: anywhere;
194
+ }
195
+ .account-identity > div {
196
+ display: flex;
197
+ align-items: center;
198
+ gap: 0.5rem;
199
+ flex-wrap: wrap;
200
+ }
201
+ .account-row + .account-row {
202
+ border-top: 1px solid var(--border);
203
+ }
204
+ p.guidance {
205
+ padding: 1rem;
206
+ }
207
+ .account-identity > span,
208
+ .guidance {
209
+ font-size: 0.8rem;
210
+ color: var(--muted-foreground);
211
+ }
212
+ .guidance {
213
+ display: flex;
214
+ align-items: center;
215
+ gap: 0.5rem;
216
+ margin: 0;
217
+ }
218
+ .guidance :global(svg) {
219
+ width: 1rem;
220
+ height: 1rem;
221
+ flex-shrink: 0;
222
+ }
223
+ @media (max-width: 40rem) {
224
+ .account-row {
225
+ flex-wrap: wrap;
226
+ }
227
+ .account-identity {
228
+ min-width: 50%;
229
+ }
230
+ }
231
+ </style>
@@ -0,0 +1,9 @@
1
+ import { type Snippet } from "svelte";
2
+ import type { ForgeController } from "../../controllers/forge-controller.js";
3
+ type $$ComponentProps = {
4
+ controller: ForgeController;
5
+ remoteSettings?: Snippet;
6
+ };
7
+ declare const ForgeAccounts: import("svelte").Component<$$ComponentProps, {}, "">;
8
+ type ForgeAccounts = ReturnType<typeof ForgeAccounts>;
9
+ export default ForgeAccounts;
@@ -0,0 +1,267 @@
1
+ <script lang="ts">
2
+ // Adapted from jj-store StoreIntegrationAuth.svelte (Apache-2.0).
3
+ import { Button } from "@lapismd/design-core/shadcn/button";
4
+ import { Input } from "@lapismd/design-core/shadcn/input";
5
+ import * as InputGroup from "@lapismd/design-core/shadcn/input-group";
6
+ import * as Field from "@lapismd/design-core/shadcn/field";
7
+ import { Separator } from "@lapismd/design-core/shadcn/separator";
8
+ import Copy from "@lucide/svelte/icons/copy";
9
+ import ArrowUpRight from "@lucide/svelte/icons/arrow-up-right";
10
+ import X from "@lucide/svelte/icons/x";
11
+ import Eye from "@lucide/svelte/icons/eye";
12
+ import EyeOff from "@lucide/svelte/icons/eye-off";
13
+ import BackupCard from "./BackupCard.svelte";
14
+ import ForgeIcon from "./ForgeIcon.svelte";
15
+
16
+ import BackupField from "./BackupField.svelte";
17
+ import type { ForgeController } from "../../controllers/forge-controller.js";
18
+ import type { ForgeState } from "../../controllers/forge-accounts.js";
19
+ import { Skeleton } from "@lapismd/design-core/shadcn/skeleton";
20
+ let {
21
+ manager,
22
+ snapshot,
23
+ }: { manager: ForgeController; snapshot: ForgeState } = $props();
24
+ let token = $state("");
25
+ let api = $state("");
26
+ let visible = $state(false);
27
+ const flow = $derived(snapshot.flow);
28
+ $effect(() => {
29
+ flow;
30
+ visible = false;
31
+ token = "";
32
+ api = "";
33
+ });
34
+ const id = $props.id();
35
+ async function copy() {
36
+ try {
37
+ await navigator.clipboard.writeText(
38
+ snapshot.inventory?.authorization?.user_code ?? "",
39
+ );
40
+ } catch {
41
+ manager.feedback.report(
42
+ new Error("Could not copy the verification code."),
43
+ );
44
+ }
45
+ }
46
+ </script>
47
+
48
+ {#if snapshot.flow}
49
+ <BackupCard
50
+ padded={false}
51
+ title={snapshot.flow === "oauth"
52
+ ? "Authorize GitHub Account"
53
+ : snapshot.flow === "forgejo"
54
+ ? "Add Forgejo Account"
55
+ : snapshot.flow === "enterprise"
56
+ ? "Add GitHub Enterprise Account"
57
+ : "Add Personal Access Token"}
58
+ >
59
+ {#snippet icon()}<ForgeIcon
60
+ provider={snapshot.flow === "forgejo" ? "forgejo" : "github"}
61
+ />{/snippet}
62
+ {#snippet actions()}<Button
63
+ variant="ghost"
64
+ size="icon-sm"
65
+ aria-label="Cancel authorization"
66
+ disabled={snapshot.busy && snapshot.flow !== "oauth"}
67
+ onclick={() => manager.cancel()}><X /></Button
68
+ >{/snippet}
69
+ {#if snapshot.flow === "oauth"}
70
+ {@const auth = snapshot.inventory?.authorization}
71
+ {#if auth}
72
+ <div class="integration-auth__device">
73
+ <ol class="integration-auth__steps">
74
+ <li>
75
+ <p>Copy the following verification code:</p>
76
+ <div class="integration-auth__code">
77
+ <strong>{auth.user_code}</strong><Button
78
+ variant="outline"
79
+ size="sm"
80
+ onclick={copy}
81
+ >Copy to Clipboard<Copy data-icon="inline-end" /></Button
82
+ >
83
+ </div>
84
+ </li>
85
+ <li>
86
+ <Separator />
87
+ <p>
88
+ Navigate to the GitHub activation page and paste the code you
89
+ copied.
90
+ </p>
91
+ <Button onclick={() => manager.openAuthorization()}
92
+ >Open GitHub activation page<ArrowUpRight
93
+ data-icon="inline-end"
94
+ /></Button
95
+ >
96
+ </li>
97
+ </ol>
98
+ <p class="integration-auth__waiting" role="status" aria-live="polite">
99
+ {auth.state === "pending"
100
+ ? "Waiting for GitHub authorization…"
101
+ : `Authorization ${auth.state}`}
102
+ </p>
103
+ </div>
104
+ {:else if snapshot.busy}<div
105
+ class="integration-auth__device"
106
+ role="status"
107
+ aria-label="Requesting GitHub verification code"
108
+ >
109
+ <Skeleton style="height:2rem;width:14rem" /><Skeleton
110
+ style="height:1rem;width:75%"
111
+ />
112
+ </div>
113
+ {:else}<div class="integration-auth__device">
114
+ <p>Authorization is unavailable. Start again to request a code.</p>
115
+ <Button variant="outline" onclick={() => manager.begin()}
116
+ >Try GitHub sign-in</Button
117
+ >
118
+ </div>{/if}
119
+ {:else}
120
+ <form
121
+ onsubmit={(event) => {
122
+ event.preventDefault();
123
+ void manager
124
+ .addToken(
125
+ snapshot.flow === "pat" ? "https://api.github.com" : api,
126
+ token,
127
+ )
128
+ .then((saved) => {
129
+ if (saved) {
130
+ token = "";
131
+ api = "";
132
+ }
133
+ });
134
+ }}
135
+ >
136
+ <Field.Group style="gap:0">
137
+ {#if snapshot.flow === "enterprise" || snapshot.flow === "forgejo"}<BackupField
138
+ label="API Base URL"
139
+ id={`${id}-api`}
140
+ description={snapshot.flow === "forgejo"
141
+ ? "For example, https://forge.example/api/v1"
142
+ : "For example, https://github.example.com/api/v3"}
143
+ >
144
+ <Input
145
+ id={`${id}-api`}
146
+ type="url"
147
+ required
148
+ bind:value={api}
149
+ disabled={snapshot.busy}
150
+ placeholder={snapshot.flow === "forgejo"
151
+ ? "https://forge.example/api/v1"
152
+ : "https://github.example.com/api/v3"}
153
+ />
154
+ </BackupField>{/if}
155
+ <BackupField
156
+ label="Personal Access Token"
157
+ id={`${id}-token`}
158
+ description="Saved in your OS Keychain / Credential Manager."
159
+ >
160
+ <InputGroup.Root>
161
+ <InputGroup.Input
162
+ id={`${id}-token`}
163
+ type={visible ? "text" : "password"}
164
+ autocomplete="off"
165
+ required
166
+ bind:value={token}
167
+ disabled={snapshot.busy}
168
+ />
169
+ <InputGroup.Addon align="inline-end"
170
+ ><InputGroup.Button
171
+ aria-label={visible ? "Hide token" : "Show token"}
172
+ onclick={() => (visible = !visible)}
173
+ >{#if visible}<EyeOff />{:else}<Eye />{/if}</InputGroup.Button
174
+ ></InputGroup.Addon
175
+ >
176
+ </InputGroup.Root>
177
+ </BackupField>
178
+ </Field.Group>
179
+ <div class="auth-actions">
180
+ <Button
181
+ variant="outline"
182
+ type="button"
183
+ disabled={snapshot.busy}
184
+ onclick={() => manager.cancel()}>Cancel</Button
185
+ >
186
+ <Button
187
+ type="submit"
188
+ disabled={snapshot.busy ||
189
+ !token.trim() ||
190
+ (snapshot.flow === "enterprise" && !api)}
191
+ >
192
+ {snapshot.busy ? "Connecting…" : "Add account"}</Button
193
+ >
194
+ </div>
195
+ </form>
196
+ {/if}
197
+ </BackupCard>
198
+ {/if}
199
+
200
+ <style>
201
+ .auth-actions {
202
+ display: flex;
203
+ justify-content: flex-end;
204
+ gap: 0.5rem;
205
+ padding: 0.85rem 1rem;
206
+ }
207
+ .integration-auth__device {
208
+ padding: 1rem;
209
+ display: flex;
210
+ flex-direction: column;
211
+ gap: 0.75rem;
212
+ }
213
+ .integration-auth__device p {
214
+ margin: 0;
215
+ }
216
+ .integration-auth__steps {
217
+ margin: 0;
218
+ padding: 0 0 0 1.75rem;
219
+ list-style: none;
220
+ border-inline-start: 1px dashed var(--border);
221
+ }
222
+ .integration-auth__steps li {
223
+ position: relative;
224
+ display: flex;
225
+ flex-direction: column;
226
+ align-items: flex-start;
227
+ gap: 1rem;
228
+ padding-block: 0.25rem 1rem;
229
+ }
230
+ .integration-auth__steps li::before {
231
+ content: "";
232
+ position: absolute;
233
+ inset-inline-start: -2.05rem;
234
+ top: 0.65rem;
235
+ width: 0.6rem;
236
+ height: 0.6rem;
237
+ border-radius: 50%;
238
+ background: var(--muted-foreground);
239
+ box-shadow: 0 0 0 4px var(--background);
240
+ }
241
+ .integration-auth__steps li :global([data-ui-component="separator"]) {
242
+ align-self: stretch;
243
+ margin-block-end: 0.5rem;
244
+ }
245
+ .integration-auth__steps li:last-child::before {
246
+ top: 2.2rem;
247
+ }
248
+ .integration-auth__code {
249
+ display: flex;
250
+ align-items: center;
251
+ gap: 0.75rem;
252
+ flex-wrap: wrap;
253
+ padding: 0.4rem;
254
+ padding-inline-start: 0.75rem;
255
+ border: 1px solid var(--border);
256
+ border-radius: var(--radius-sm);
257
+ }
258
+ .integration-auth__code strong {
259
+ font-size: 1.35rem;
260
+ letter-spacing: 0.08em;
261
+ }
262
+ .integration-auth__waiting {
263
+ color: var(--muted-foreground);
264
+ font-size: 0.8rem;
265
+ padding-inline-start: 1.75rem;
266
+ }
267
+ </style>
@@ -0,0 +1,9 @@
1
+ import type { ForgeController } from "../../controllers/forge-controller.js";
2
+ import type { ForgeState } from "../../controllers/forge-accounts.js";
3
+ type $$ComponentProps = {
4
+ manager: ForgeController;
5
+ snapshot: ForgeState;
6
+ };
7
+ declare const ForgeAuthorization: import("svelte").Component<$$ComponentProps, {}, "">;
8
+ type ForgeAuthorization = ReturnType<typeof ForgeAuthorization>;
9
+ export default ForgeAuthorization;
@@ -0,0 +1,21 @@
1
+ <script lang="ts">
2
+ // Adapted from jj-store StoreForgeIcon.svelte (Apache-2.0).
3
+ import { forgeIcons } from "./forge-icons.js";
4
+ let {
5
+ provider,
6
+ decorative = false,
7
+ }: { provider: "github" | "forgejo"; decorative?: boolean } = $props();
8
+ const icon = $derived(forgeIcons[provider]);
9
+ </script>
10
+
11
+ <svg
12
+ role={decorative ? undefined : "img"}
13
+ aria-label={decorative ? undefined : icon.name}
14
+ aria-hidden={decorative || undefined}
15
+ viewBox="0 0 24 24"
16
+ width="16"
17
+ height="16"
18
+ fill="currentColor"
19
+ >
20
+ <title>{icon.name}</title><path d={icon.path} />
21
+ </svg>
@@ -0,0 +1,7 @@
1
+ type $$ComponentProps = {
2
+ provider: "github" | "forgejo";
3
+ decorative?: boolean;
4
+ };
5
+ declare const ForgeIcon: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type ForgeIcon = ReturnType<typeof ForgeIcon>;
7
+ export default ForgeIcon;