diff --git a/src/public/javascripts/dialogs/recent_changes.js b/src/public/javascripts/dialogs/recent_changes.js
index 42fdd75bb..df07f46d8 100644
--- a/src/public/javascripts/dialogs/recent_changes.js
+++ b/src/public/javascripts/dialogs/recent_changes.js
@@ -9,10 +9,14 @@ import hoistedNoteService from "../services/hoisted_note.js";
const $dialog = $("#recent-changes-dialog");
const $content = $("#recent-changes-content");
-export async function showDialog() {
+export async function showDialog(ancestorNoteId) {
utils.openDialog($dialog);
- const result = await server.get('recent-changes/' + hoistedNoteService.getHoistedNoteId());
+ if (!ancestorNoteId) {
+ ancestorNoteId = hoistedNoteService.getHoistedNoteId();
+ }
+
+ const result = await server.get('recent-changes/' + ancestorNoteId);
// preload all notes into cache
await treeCache.getNotes(result.map(r => r.noteId), true);
diff --git a/src/public/javascripts/services/tree_context_menu.js b/src/public/javascripts/services/tree_context_menu.js
index 6db23878f..cb0d4158e 100644
--- a/src/public/javascripts/services/tree_context_menu.js
+++ b/src/public/javascripts/services/tree_context_menu.js
@@ -75,7 +75,8 @@ class TreeContextMenu {
{ title: "Advanced", uiIcon: "empty", enabled: true, items: [
{ title: 'Collapse subtree ', command: "collapseSubtree", uiIcon: "align-justify", enabled: noSelectedNotes },
{ title: "Force note sync", command: "forceNoteSync", uiIcon: "refresh", enabled: noSelectedNotes },
- { title: 'Sort alphabetically ', command: "sortChildNotes", uiIcon: "empty", enabled: noSelectedNotes && notSearch }
+ { title: 'Sort alphabetically ', command: "sortChildNotes", uiIcon: "empty", enabled: noSelectedNotes && notSearch },
+ { title: 'Recent changes in subtree', command: "recentChangesInSubtree", uiIcon: "history", enabled: noSelectedNotes }
] },
{ title: "----" },
{ title: "Protect subtree", command: "protectSubtree", uiIcon: "check-shield", enabled: noSelectedNotes },
diff --git a/src/public/javascripts/widgets/note_tree.js b/src/public/javascripts/widgets/note_tree.js
index 5a4a306cc..5471189ce 100644
--- a/src/public/javascripts/widgets/note_tree.js
+++ b/src/public/javascripts/widgets/note_tree.js
@@ -737,6 +737,12 @@ export default class NoteTreeWidget extends TabAwareWidget {
treeService.sortAlphabetically(node.data.noteId);
}
+ async recentChangesInSubtreeCommand({node}) {
+ const recentChangesDialog = await import('../dialogs/recent_changes.js');
+
+ recentChangesDialog.showDialog(node.data.noteId);
+ }
+
selectAllNotesInParentCommand({node}) {
for (const child of node.getParent().getChildren()) {
child.setSelected(true);