@lapis-notes/history 0.1.4 → 0.2.0

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 +19 -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
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # History changelog
2
2
 
3
+ ## 0.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#28](https://github.com/lapismd/lapis-plugins/pull/28) [`d27467e`](https://github.com/lapismd/lapis-plugins/commit/d27467ee80c273011b7eb6ae792fa8e0330a11c1) Thanks [@stevejuma](https://github.com/stevejuma)! - Share the existing repository-history views and controllers through injected host services. Preserve the legacy file-history plugin and provide public repository entrypoints for desktop and hosted applications.
8
+
9
+ ### Patch Changes
10
+
11
+ - [#28](https://github.com/lapismd/lapis-plugins/pull/28) [`9c21eb6`](https://github.com/lapismd/lapis-plugins/commit/9c21eb6038363c2398231e04b318c1d5ff9568f7) Thanks [@stevejuma](https://github.com/stevejuma)! - Expose an App-owned observer for acquired replacement guards so hosted services can coordinate existing protection without reacquiring the same guard.
12
+
13
+ - [#28](https://github.com/lapismd/lapis-plugins/pull/28) [`b1cdd70`](https://github.com/lapismd/lapis-plugins/commit/b1cdd70ae9444cb8de28c46bbba23b3b0eb54534) Thanks [@stevejuma](https://github.com/stevejuma)! - Separate explicit persisted backup selection from passive native observation
14
+ while preserving legacy backup-service behavior and retained settings/status UI.
15
+
16
+ - [#28](https://github.com/lapismd/lapis-plugins/pull/28) [`56b5d6c`](https://github.com/lapismd/lapis-plugins/commit/56b5d6c1a016ef9bca43703b5fecf57f8234d1af) Thanks [@stevejuma](https://github.com/stevejuma)! - Consume published Design Core 0.4.0 with prepared browser CSS and bundled font assets through normal npm ranges.
17
+
18
+ Restore Bases picker input/list accessibility relationships and name property actions.
19
+
20
+ - [#28](https://github.com/lapismd/lapis-plugins/pull/28) [`c9febb1`](https://github.com/lapismd/lapis-plugins/commit/c9febb1c8b431db30ecdcf7507cfff8f727bc4ed) Thanks [@stevejuma](https://github.com/stevejuma)! - Consume the published Notes next packages, Mira 0.1.4, and Design Core 0.7.4. The semver floors require those published versions. Markdown dependents accept ^0.2.0. History keeps its public repository entrypoints, and Bases keeps the file-icon contract on API 0.2.0.
21
+
3
22
  ## 0.1.4
4
23
 
5
24
  ### Patch Changes
package/README.md CHANGED
@@ -13,7 +13,7 @@ Register the exported plugin class in the application's `PluginProfile`. Import
13
13
  registration so the host owns its lifecycle.
14
14
 
15
15
  The runtime plugin ID is `history`. A matching signed
16
- `history-0.1.4.lapis-plugin` archive is attached to the
16
+ `history-0.2.0.lapis-plugin` archive is attached to the
17
17
  package-scoped GitHub release for manual or registry installation.
18
18
 
19
19
  See the [repository README](https://github.com/lapismd/lapis-plugins#readme) for
@@ -0,0 +1,11 @@
1
+ # Repository History notices
2
+
3
+ Repository presentation and controllers were extracted from Lapis Desktop
4
+ (52516ae9) under Apache-2.0. Maintained adaptations of JJ Store repository
5
+ presentation and graph geometry retain their original Apache-2.0 attribution,
6
+ including upstream Lapis Community graph attribution. GitHub and Forgejo brand
7
+ paths in components/backup/forge-icons.ts derive from Simple Icons under CC0-1.0.
8
+
9
+ Exact source revisions, source paths, destinations and licenses are retained in
10
+ https://github.com/lapismd/lapis-plugins/blob/main/docs/repository-history-provenance.json.
11
+ Application/native admission, credential custody and persistence remain host-owned.
@@ -0,0 +1,77 @@
1
+ <script lang="ts">
2
+ import { AuthorCard } from "@lapismd/design-core/shadcn/author-card";
3
+ import { avatarInitials } from "@lapismd/design-core/shadcn/avatar";
4
+ import type {
5
+ AvatarIdentity,
6
+ AvatarSize,
7
+ } from "@lapismd/design-core/shadcn/avatar";
8
+ import { reviewGravatar } from "../controllers/author.js";
9
+ let {
10
+ name,
11
+ email = "",
12
+ avatarUrl,
13
+ handle,
14
+ size = "xs",
15
+ }: {
16
+ name: string;
17
+ email?: string;
18
+ avatarUrl?: string;
19
+ handle?: string;
20
+ size?: AvatarSize;
21
+ } = $props();
22
+ let gravatar = $state<{ email: string; src: string }>();
23
+ const normalizedEmail = $derived(email.trim().toLowerCase());
24
+ const author = $derived<AvatarIdentity>({
25
+ id: normalizedEmail || handle || name.trim() || "unknown-author",
26
+ name: name.trim() || email.trim() || "Unknown author",
27
+ src:
28
+ avatarUrl ||
29
+ (gravatar?.email === normalizedEmail ? gravatar.src : undefined),
30
+ });
31
+ $effect(() => {
32
+ const requested = normalizedEmail;
33
+ let live = true;
34
+ if (!avatarUrl) {
35
+ void reviewGravatar(requested)
36
+ .then((src) => {
37
+ if (live) gravatar = src ? { email: requested, src } : undefined;
38
+ })
39
+ .catch(() => {
40
+ // Image enrichment is optional; the shared Avatar retains name fallback.
41
+ if (live) gravatar = undefined;
42
+ });
43
+ }
44
+ return () => {
45
+ live = false;
46
+ };
47
+ });
48
+ </script>
49
+
50
+ <!-- Keep profile activation separate from graph and command-item activation. -->
51
+ <span
52
+ class="repository-review-author-avatar"
53
+ onpointerdown={(event) => event.stopPropagation()}
54
+ onclick={(event) => event.stopPropagation()}
55
+ onkeydown={(event) => {
56
+ if (event.key === "Enter" || event.key === " ") event.stopPropagation();
57
+ }}
58
+ role="presentation"
59
+ >
60
+ <AuthorCard
61
+ {author}
62
+ label={`${avatarInitials(author.name)} · About ${author.name}`}
63
+ {size}
64
+ handle={email.trim() || handle}
65
+ interaction="hover"
66
+ />
67
+ </span>
68
+
69
+ <style>
70
+ .repository-review-author-avatar {
71
+ display: inline-flex;
72
+ flex: none;
73
+ align-items: center;
74
+ pointer-events: auto;
75
+ --ui-author-card-avatar-size: 1.75rem;
76
+ }
77
+ </style>
@@ -0,0 +1,11 @@
1
+ import type { AvatarSize } from "@lapismd/design-core/shadcn/avatar";
2
+ type $$ComponentProps = {
3
+ name: string;
4
+ email?: string;
5
+ avatarUrl?: string;
6
+ handle?: string;
7
+ size?: AvatarSize;
8
+ };
9
+ declare const RepositoryAuthorAvatar: import("svelte").Component<$$ComponentProps, {}, "">;
10
+ type RepositoryAuthorAvatar = ReturnType<typeof RepositoryAuthorAvatar>;
11
+ export default RepositoryAuthorAvatar;
@@ -0,0 +1,236 @@
1
+ <script lang="ts">
2
+ import { onMount } from "svelte";
3
+ import RepositoryUpstreamActions from "./RepositoryUpstreamActions.svelte";
4
+ import type { SyncController } from "../controllers/sync-controller.js";
5
+ import * as Popover from "@lapismd/design-core/shadcn/popover";
6
+ import { RelativeTime } from "@lapismd/design-core/shadcn/relative-time";
7
+ import { Skeleton } from "@lapismd/design-core/shadcn/skeleton";
8
+ import History from "@lucide/svelte/icons/history";
9
+ import RefreshCw from "@lucide/svelte/icons/refresh-cw";
10
+ import Check from "@lucide/svelte/icons/check";
11
+ import CircleAlert from "@lucide/svelte/icons/circle-alert";
12
+ import RepositoryIdentifiers from "./RepositoryIdentifiers.svelte";
13
+ import { encodeJjChangeId } from "../controllers/graph/repository-log-graph.js";
14
+ import type {
15
+ BackupController,
16
+ BackupStatus,
17
+ } from "../controllers/backup.js";
18
+ let {
19
+ controller,
20
+ openRevision,
21
+ copyText,
22
+ upstream,
23
+ }: {
24
+ controller: BackupController;
25
+ openRevision(operation: string, revision: string): Promise<void>;
26
+ copyText(value: string): Promise<void>;
27
+ upstream?: SyncController;
28
+ } = $props();
29
+ let value: BackupStatus = $state({
30
+ phase: "saving",
31
+ checkpoint: null,
32
+ error: null,
33
+ });
34
+ let open = $state(false);
35
+ const label = $derived(
36
+ value.phase === "saving"
37
+ ? "Saving locally"
38
+ : value.phase === "ready"
39
+ ? "Saved locally"
40
+ : value.phase === "closed"
41
+ ? "History paused"
42
+ : "History needs attention",
43
+ );
44
+ onMount(() => controller.subscribe((status) => (value = status)));
45
+ async function inspect() {
46
+ if (!value.checkpoint) return;
47
+ open = false;
48
+ await openRevision(value.checkpoint.operation, value.checkpoint.commit);
49
+ }
50
+ </script>
51
+
52
+ <div
53
+ class="backup-status"
54
+ aria-label="Vault backup"
55
+ aria-busy={value.phase === "saving"}
56
+ >
57
+ <Popover.Root bind:open>
58
+ <Popover.Trigger>
59
+ {#snippet child({ props })}
60
+ <button
61
+ {...props}
62
+ type="button"
63
+ class="summary"
64
+ aria-label={`Vault history: ${label}`}
65
+ >
66
+ {#if value.phase === "ready"}<Check aria-hidden="true" />
67
+ {:else if value.phase === "failed"}<CircleAlert aria-hidden="true" />
68
+ {:else}<History aria-hidden="true" />{/if}
69
+ {label}
70
+ </button>
71
+ {/snippet}
72
+ </Popover.Trigger>
73
+ <Popover.Content
74
+ side="top"
75
+ align="end"
76
+ collisionPadding={8}
77
+ sideOffset={6}
78
+ style="width:min(26rem,calc(100vw - 1rem));padding:0"
79
+ >
80
+ <section class="backup-card" aria-label="Vault history details">
81
+ <header>
82
+ <History aria-hidden="true" /><strong>Local history</strong>
83
+ <RepositoryUpstreamActions
84
+ controller={upstream}
85
+ unavailable={value.phase !== "ready"}
86
+ />
87
+ </header>
88
+ {#if value.checkpoint}
89
+ <button type="button" class="subject" onclick={inspect}
90
+ >{value.checkpoint.description}</button
91
+ >
92
+ <RepositoryIdentifiers
93
+ {copyText}
94
+ placement="inline"
95
+ commitId={value.checkpoint.commit}
96
+ changeId={encodeJjChangeId(value.checkpoint.change_id)}
97
+ />
98
+ <span
99
+ >Last saved <RelativeTime
100
+ timestamp={value.checkpoint.timestamp_millis}
101
+ /></span
102
+ >
103
+ <p>
104
+ Saved editor and external file changes are captured automatically.
105
+ Unsaved editor changes appear after saving.
106
+ </p>
107
+ <button type="button" class="open-log" onclick={inspect}
108
+ >Open in JJ Log</button
109
+ >
110
+ {:else if value.phase === "saving"}
111
+ <div
112
+ class="loading"
113
+ role="status"
114
+ aria-label="Preparing local history"
115
+ >
116
+ <Skeleton style="height:1rem;width:90%" /><Skeleton
117
+ style="height:1rem;width:65%"
118
+ />
119
+ </div>
120
+ {:else}<p>
121
+ {value.phase === "closed"
122
+ ? "Automatic history is paused in Repository History settings."
123
+ : "History is unavailable. Retry to resume automatic capture."}
124
+ </p>{/if}
125
+ </section>
126
+ </Popover.Content>
127
+ </Popover.Root>
128
+ <button
129
+ type="button"
130
+ class="refresh"
131
+ aria-label="Save vault checkpoint now"
132
+ title="Save vault checkpoint now"
133
+ disabled={value.phase === "saving" || value.phase === "closed"}
134
+ onclick={() => controller.refresh()}
135
+ ><RefreshCw aria-hidden="true" /></button
136
+ >
137
+ </div>
138
+
139
+ <style>
140
+ .backup-status {
141
+ display: inline-flex;
142
+ min-height: 1.25rem;
143
+ align-items: stretch;
144
+ border: 0;
145
+ border-radius: var(--radius);
146
+ color: inherit;
147
+ font: inherit;
148
+ background: color-mix(
149
+ in oklab,
150
+ var(--ui-workspace-muted-foreground) 6%,
151
+ var(--ui-workspace-panel)
152
+ );
153
+ }
154
+ button {
155
+ appearance: none;
156
+ border: 0;
157
+ background: transparent;
158
+ color: inherit;
159
+ font: inherit;
160
+ cursor: pointer;
161
+ }
162
+ button:hover {
163
+ background: var(--accent);
164
+ color: var(--accent-foreground);
165
+ }
166
+ button:focus-visible {
167
+ outline: 2px solid var(--ring);
168
+ outline-offset: 1px;
169
+ }
170
+ button:disabled {
171
+ opacity: 0.5;
172
+ cursor: default;
173
+ }
174
+ .summary,
175
+ .refresh {
176
+ display: inline-flex;
177
+ align-items: center;
178
+ gap: 0.35rem;
179
+ padding: 0 0.4rem;
180
+ line-height: 1;
181
+ white-space: nowrap;
182
+ }
183
+ .summary {
184
+ border-radius: var(--radius) 0 0 var(--radius);
185
+ }
186
+ .refresh {
187
+ border-radius: 0 var(--radius) var(--radius) 0;
188
+ background: color-mix(
189
+ in oklab,
190
+ var(--ui-workspace-muted-foreground) 12%,
191
+ var(--ui-workspace-panel)
192
+ );
193
+ }
194
+ .backup-status :global(svg),
195
+ header :global(svg) {
196
+ width: 0.875rem;
197
+ height: 0.875rem;
198
+ flex: none;
199
+ }
200
+ .backup-card {
201
+ display: flex;
202
+ flex-direction: column;
203
+ gap: 0.6rem;
204
+ padding: 0.85rem;
205
+ color: var(--foreground);
206
+ font-size: 0.8rem;
207
+ }
208
+ header {
209
+ display: flex;
210
+ align-items: center;
211
+ gap: 0.4rem;
212
+ }
213
+ .subject {
214
+ padding: 0;
215
+ text-align: left;
216
+ font-weight: 600;
217
+ }
218
+ .subject:hover {
219
+ background: transparent;
220
+ color: var(--primary);
221
+ }
222
+ p {
223
+ margin: 0;
224
+ color: var(--muted-foreground);
225
+ line-height: 1.5;
226
+ }
227
+ .open-log {
228
+ align-self: flex-start;
229
+ padding: 0.35rem 0.5rem;
230
+ border-radius: var(--radius);
231
+ }
232
+ .loading {
233
+ display: grid;
234
+ gap: 0.6rem;
235
+ }
236
+ </style>
@@ -0,0 +1,11 @@
1
+ import type { SyncController } from "../controllers/sync-controller.js";
2
+ import type { BackupController } from "../controllers/backup.js";
3
+ type $$ComponentProps = {
4
+ controller: BackupController;
5
+ openRevision(operation: string, revision: string): Promise<void>;
6
+ copyText(value: string): Promise<void>;
7
+ upstream?: SyncController;
8
+ };
9
+ declare const RepositoryBackupStatus: import("svelte").Component<$$ComponentProps, {}, "">;
10
+ type RepositoryBackupStatus = ReturnType<typeof RepositoryBackupStatus>;
11
+ export default RepositoryBackupStatus;
@@ -0,0 +1,104 @@
1
+ <script lang="ts">
2
+ import RepositorySkeleton from "./RepositorySkeleton.svelte";
3
+ import {
4
+ FileListing,
5
+ FileListingViewModeToggle,
6
+ type FileListingFile,
7
+ type FileListingViewMode,
8
+ } from "@lapismd/design-core/diff";
9
+ import { Skeleton } from "@lapismd/design-core/shadcn/skeleton";
10
+ let {
11
+ files,
12
+ selectedPath,
13
+ initialLoading = false,
14
+ loading = false,
15
+ hasMore = false,
16
+ onSelect,
17
+ onMore,
18
+ }: {
19
+ files: FileListingFile[];
20
+ selectedPath?: string;
21
+ initialLoading?: boolean;
22
+ loading?: boolean;
23
+ hasMore?: boolean;
24
+ onSelect(path: string): void;
25
+ onMore(): void;
26
+ } = $props();
27
+ let mode = $state<FileListingViewMode>("tree");
28
+ </script>
29
+
30
+ <section
31
+ class="repository-changed-files"
32
+ aria-label="Changed files"
33
+ aria-busy={loading || initialLoading}
34
+ >
35
+ <header>
36
+ <strong>Changed files</strong><span class="file-count"
37
+ >{#if initialLoading}<Skeleton />{:else}{files.length}{/if}</span
38
+ ><FileListingViewModeToggle bind:mode />
39
+ </header>
40
+ <div class="file-list">
41
+ {#if initialLoading}<RepositorySkeleton
42
+ kind="files"
43
+ label="Loading changed files…"
44
+ />
45
+ {:else}<FileListing
46
+ {files}
47
+ {mode}
48
+ {selectedPath}
49
+ virtualize={false}
50
+ {hasMore}
51
+ {loading}
52
+ onSelectPath={onSelect}
53
+ onLoadMore={onMore}
54
+ />{/if}
55
+ </div>
56
+ </section>
57
+
58
+ <style>
59
+ .repository-changed-files {
60
+ display: flex;
61
+ flex-direction: column;
62
+ min-width: 0;
63
+ max-height: 16rem;
64
+ overflow: hidden;
65
+ border: 1px solid var(--border);
66
+ border-radius: 0.5rem;
67
+ background: var(--background);
68
+ --ui-diff-row-hover: color-mix(
69
+ in srgb,
70
+ var(--foreground) 7%,
71
+ var(--background)
72
+ );
73
+ --ui-diff-selected: color-mix(
74
+ in srgb,
75
+ var(--foreground) 12%,
76
+ var(--background)
77
+ );
78
+ }
79
+ header {
80
+ display: flex;
81
+ align-items: center;
82
+ gap: 0.5rem;
83
+ padding: 0.45rem 0.65rem;
84
+ border-bottom: 1px solid var(--border);
85
+ }
86
+ strong {
87
+ flex: 1;
88
+ min-width: 0;
89
+ font-size: 0.8125rem;
90
+ }
91
+ .file-count {
92
+ display: inline-flex;
93
+ border-radius: 999px;
94
+ padding: 0.05rem 0.4rem;
95
+ background: var(--muted);
96
+ font-size: 0.75rem;
97
+ }
98
+ .file-list {
99
+ min-width: 0;
100
+ min-height: 0;
101
+ overflow: auto;
102
+ padding: 0.25rem 0.35rem;
103
+ }
104
+ </style>
@@ -0,0 +1,13 @@
1
+ import { type FileListingFile } from "@lapismd/design-core/diff";
2
+ type $$ComponentProps = {
3
+ files: FileListingFile[];
4
+ selectedPath?: string;
5
+ initialLoading?: boolean;
6
+ loading?: boolean;
7
+ hasMore?: boolean;
8
+ onSelect(path: string): void;
9
+ onMore(): void;
10
+ };
11
+ declare const RepositoryChangedFiles: import("svelte").Component<$$ComponentProps, {}, "">;
12
+ type RepositoryChangedFiles = ReturnType<typeof RepositoryChangedFiles>;
13
+ export default RepositoryChangedFiles;
@@ -0,0 +1,93 @@
1
+ <script lang="ts">
2
+ import { MarkdownContent } from "@lapismd/design-core/chat";
3
+ import { Button } from "@lapismd/design-core/shadcn/button";
4
+ import ChevronDownIcon from "@lucide/svelte/icons/chevron-down";
5
+ let { description }: { description: string } = $props();
6
+ const id = $props.id();
7
+ let expanded = $state(false),
8
+ overflowing = $state(false);
9
+ // The graph row owns the subject; its expanded area retains the full body.
10
+ const body = $derived(description.split("\n").slice(1).join("\n").trim());
11
+ $effect(() => {
12
+ void description;
13
+ expanded = false;
14
+ });
15
+ function measure(node: HTMLDivElement) {
16
+ const update = () => {
17
+ const rem = parseFloat(
18
+ getComputedStyle(node.ownerDocument.documentElement).fontSize,
19
+ );
20
+ overflowing = node.getBoundingClientRect().height > 9 * rem + 1;
21
+ };
22
+ const observer = new ResizeObserver(update);
23
+ observer.observe(node);
24
+ return { destroy: () => observer.disconnect() };
25
+ }
26
+ </script>
27
+
28
+ {#if body}
29
+ <section
30
+ class="repository-review-commit-message"
31
+ aria-label="Commit message body"
32
+ >
33
+ <div
34
+ {id}
35
+ class="repository-review-message-viewport"
36
+ data-clamped={(overflowing && !expanded) || undefined}
37
+ onfocusin={() => {
38
+ // Keyboard focus on Markdown links must reveal their full context.
39
+ if (overflowing) expanded = true;
40
+ }}
41
+ >
42
+ <div use:measure>
43
+ <MarkdownContent content={body} compact fullWidth />
44
+ </div>
45
+ </div>
46
+ {#if overflowing}
47
+ <div class="repository-review-message-action">
48
+ <Button
49
+ variant="ghost"
50
+ size="xs"
51
+ aria-controls={id}
52
+ aria-expanded={expanded}
53
+ aria-label={expanded
54
+ ? "View less of commit message"
55
+ : "View more of commit message"}
56
+ onclick={() => (expanded = !expanded)}
57
+ >
58
+ {expanded ? "View less" : "View more"}
59
+ <ChevronDownIcon
60
+ data-icon="inline-end"
61
+ data-expanded={expanded}
62
+ aria-hidden="true"
63
+ />
64
+ </Button>
65
+ </div>
66
+ {/if}
67
+ </section>
68
+ {/if}
69
+
70
+ <style>
71
+ .repository-review-commit-message {
72
+ min-width: 0;
73
+ margin: 0.25rem 0.75rem 0.75rem;
74
+ padding: 0.75rem;
75
+ border-radius: calc(var(--radius) * 0.8);
76
+ background: color-mix(in srgb, var(--foreground) 5%, var(--background));
77
+ --ui-chat-markdown-padding: 0;
78
+ --ui-chat-markdown-font-size: 0.8125rem;
79
+ --ui-chat-markdown-line-height: 1.5;
80
+ }
81
+ .repository-review-message-viewport[data-clamped] {
82
+ max-height: 9rem;
83
+ overflow: hidden;
84
+ mask-image: linear-gradient(to bottom, #000 calc(100% - 3rem), transparent);
85
+ }
86
+ .repository-review-message-action {
87
+ display: flex;
88
+ margin-block-start: 0.375rem;
89
+ }
90
+ .repository-review-message-action :global([data-expanded="true"]) {
91
+ transform: rotate(180deg);
92
+ }
93
+ </style>
@@ -0,0 +1,6 @@
1
+ type $$ComponentProps = {
2
+ description: string;
3
+ };
4
+ declare const RepositoryCommitMessage: import("svelte").Component<$$ComponentProps, {}, "">;
5
+ type RepositoryCommitMessage = ReturnType<typeof RepositoryCommitMessage>;
6
+ export default RepositoryCommitMessage;