diff --git a/backend/locales/en.json b/backend/locales/en.json
index 82e10affd..271fdb83b 100644
--- a/backend/locales/en.json
+++ b/backend/locales/en.json
@@ -1983,20 +1983,40 @@
"history.action.deleted": "Deleted",
"history.action.moved": "Moved",
"history.action.updated": "Updated",
+ "history.branchFailed": "Failed to create a page from this version.",
+ "history.branchOff": "Branch off from here",
+ "history.branchReason": "Branched off from the version of {date}",
+ "history.branchSuccess": "New page created from this version.",
"history.changedFields": "Changed: {fields}",
"history.current": "Current",
+ "history.downloadFailed": "Failed to download this version.",
+ "history.downloadVersion": "Download Version",
"history.emptyPage": "Nothing",
+ "history.inline": "Inline",
"history.loadFailed": "Failed to load the page history.",
"history.none": "No history has been recorded for this page yet.",
"history.pickA": "Compare from this version",
"history.pickB": "Compare to this version",
+ "history.restore": "Restore",
"history.restore.confirmButton": "Restore",
"history.restore.confirmText": "Are you sure you want to restore this page content as it was on {date}? This version will be copied on top of the current history. As such, newer versions will still be preserved.",
"history.restore.confirmTitle": "Restore page version?",
"history.restore.success": "Page version restored succesfully!",
+ "history.restoreConfirm": "Restore the page content as it was on **{date}**?",
+ "history.restoreConfirmHint": "The page keeps its current title, tags and settings, and the state it is in now is kept in the history.",
+ "history.restoreFailed": "Failed to restore this version.",
+ "history.restoreReason": "Restored the content from {date}",
+ "history.restoreSuccess": "Page content restored successfully.",
"history.sameContent": "These two versions have the same content — only metadata changed.",
+ "history.setAsSource": "Set as Differencing Source",
+ "history.setAsTarget": "Set as Differencing Target",
+ "history.sideBySide": "Side-by-Side",
+ "history.sourceCopied": "Source copied to the clipboard.",
"history.title": "Page History",
"history.unknownAuthor": "Unknown",
+ "history.versionActions": "Version Actions",
+ "history.versionId": "Version ID {id}",
+ "history.viewSource": "View Source",
"iconPicker.allSets": "All sets",
"iconPicker.icons": "Icons",
"iconPicker.image": "Image",
diff --git a/frontend/src/assets/icons.generated.js b/frontend/src/assets/icons.generated.js
index d7c0d4eb6..2f20ded62 100644
--- a/frontend/src/assets/icons.generated.js
+++ b/frontend/src/assets/icons.generated.js
@@ -5,7 +5,7 @@
never waits on (or depends on) the icon service. Regenerate with `npm run icons` after adding or
removing an icon; `check-icons.mjs` fails the build if this drifts.
- 252 icons.
+ 256 icons.
*/
export const BUNDLED_ICONS = {
"la:angle-double-right": {"body":"","width":32,"height":32},
@@ -40,6 +40,7 @@ export const BUNDLED_ICONS = {
"la:clock": {"body":"","width":32,"height":32},
"la:cloud-upload-alt": {"body":"","width":32,"height":32},
"la:code": {"body":"","width":32,"height":32},
+ "la:code-branch": {"body":"","width":32,"height":32},
"la:cog": {"body":"","width":32,"height":32},
"la:comments": {"body":"","width":32,"height":32},
"la:copy": {"body":"","width":32,"height":32},
@@ -131,6 +132,7 @@ export const BUNDLED_ICONS = {
"la:traffic-light": {"body":"","width":32,"height":32},
"la:trash": {"body":"","width":32,"height":32},
"la:trash-alt": {"body":"","width":32,"height":32},
+ "la:undo": {"body":"","width":32,"height":32},
"la:undo-alt": {"body":"","width":32,"height":32},
"la:unlink": {"body":"","width":32,"height":32},
"la:upload": {"body":"","width":32,"height":32},
@@ -220,6 +222,8 @@ export const BUNDLED_ICONS = {
"mdi:information": {"body":"","width":24,"height":24},
"mdi:information-box": {"body":"","width":24,"height":24},
"mdi:keyboard-variant": {"body":"","width":24,"height":24},
+ "mdi:letter-a-box": {"body":"","width":24,"height":24},
+ "mdi:letter-b-box": {"body":"","width":24,"height":24},
"mdi:lightbulb-outline": {"body":"","width":24,"height":24},
"mdi:line-scan": {"body":"","width":24,"height":24},
"mdi:link-variant": {"body":"","width":24,"height":24},
diff --git a/frontend/src/components/PageHistoryOverlay.vue b/frontend/src/components/PageHistoryOverlay.vue
index 59105c490..dca029052 100644
--- a/frontend/src/components/PageHistoryOverlay.vue
+++ b/frontend/src/components/PageHistoryOverlay.vue
@@ -3,11 +3,40 @@