diff --git a/TODO b/TODO
index fd6550601..c235a2756 100644
--- a/TODO
+++ b/TODO
@@ -28,7 +28,7 @@ Encryption:
 Bugs:
 - deleting cloned nodes ends with 500 (probably only on folders)
 - Uncaught Error: cannot call methods on fancytree prior to initialization; attempted to call method 'getTree'
-- recent changes sorts 1st october to the end
+- FIXED: recent changes sorts 1st october to the end
 
 Others:
 - dates should be stored in UTC to work correctly with time zones
diff --git a/src/templates/app.html b/src/templates/app.html
index 568d13905..f5ab1a528 100644
--- a/src/templates/app.html
+++ b/src/templates/app.html
@@ -82,7 +82,15 @@
 
     <div id="recentNotesDialog" title="Recent notes" style="display: none;">
       <select id="recentNotesSelectBox" size="15" style="width: 100%">
-        </select>
+      </select>
+
+      <br/><br/>
+
+      <p>
+        <button class="btn btn-sm" id="recentNotesJumpTo">Jump to</button>
+        &nbsp;
+        <button class="btn btn-sm" id="recentNotesAddLink">Add link</button>
+      </p>
     </div>
 
     <div id="insertLinkDialog" title="Insert link" style="display: none;">
diff --git a/static/js/add_link.js b/static/js/add_link.js
index c06c77797..1b129561c 100644
--- a/static/js/add_link.js
+++ b/static/js/add_link.js
@@ -11,16 +11,7 @@ $(document).bind('keydown', 'alt+l', function() {
     });
 
     function setDefaultLinkTitle(noteId) {
-        const note = getNodeByKey(noteId);
-        if (!note) {
-            return;
-        }
-
-        let noteTitle = note.title;
-
-        if (noteTitle.endsWith(" (clone)")) {
-            noteTitle = noteTitle.substr(0, noteTitle.length - 8);
-        }
+        const noteTitle = getNoteTitle(noteId);
 
         $("#linkTitle").val(noteTitle);
     }
diff --git a/static/js/recent_notes.js b/static/js/recent_notes.js
index 4e46db81a..01063ab9e 100644
--- a/static/js/recent_notes.js
+++ b/static/js/recent_notes.js
@@ -15,6 +15,8 @@ function addRecentNote(noteTreeId, noteContentId) {
 }
 
 $(document).bind('keydown', 'alt+q', function() {
+    $('#noteDetail').summernote('editor.saveRange');
+
     $("#recentNotesDialog").dialog({
         modal: true,
         width: 500
@@ -47,23 +49,52 @@ $(document).bind('keydown', 'alt+q', function() {
     });
 });
 
+function getSelectedNoteIdFromRecentNotes() {
+    return $("#recentNotesSelectBox option:selected").val();
+}
+
 function setActiveNoteBasedOnRecentNotes() {
-    let noteId = $("#recentNotesSelectBox option:selected").val();
+    const noteId = getSelectedNoteIdFromRecentNotes();
 
     getNodeByKey(noteId).setActive();
 
     $("#recentNotesDialog").dialog('close');
 }
 
+function addLinkBasedOnRecentNotes() {
+    const noteId = getSelectedNoteIdFromRecentNotes();
+
+    const linkTitle = getNoteTitle(noteId);
+    const noteDetail = $('#noteDetail');
+
+    $("#recentNotesDialog").dialog("close");
+
+    noteDetail.summernote('editor.restoreRange');
+
+    noteDetail.summernote('createLink', {
+        text: linkTitle,
+        url: 'app#' + noteId,
+        isNewWindow: true
+    });
+}
+
 $('#recentNotesSelectBox').keydown(function(e) {
-    let key = e.which;
+    const key = e.which;
 
     if (key === 13)// the enter key code
     {
         setActiveNoteBasedOnRecentNotes();
     }
+    else if (key === 76 /* l */) {
+        addLinkBasedOnRecentNotes();
+    }
+
+    e.preventDefault();
 });
 
 $('#recentNotesSelectBox').dblclick(function(e) {
     setActiveNoteBasedOnRecentNotes();
-});
\ No newline at end of file
+});
+
+$('#recentNotesJumpTo').click(setActiveNoteBasedOnRecentNotes);
+$('#recentNotesAddLink').click(addLinkBasedOnRecentNotes);
\ No newline at end of file
diff --git a/static/js/tree_utils.js b/static/js/tree_utils.js
index c9e444f43..a8af4d0c4 100644
--- a/static/js/tree_utils.js
+++ b/static/js/tree_utils.js
@@ -10,6 +10,21 @@ function getNodeByKey(noteId) {
     return globalTree.fancytree('getNodeByKey', noteId);
 }
 
+function getNoteTitle(noteId) {
+    const note = getNodeByKey(noteId);
+    if (!note) {
+        return;
+    }
+
+    let noteTitle = note.title;
+
+    if (noteTitle.endsWith(" (clone)")) {
+        noteTitle = noteTitle.substr(0, noteTitle.length - 8);
+    }
+
+    return noteTitle;
+}
+
 function getFullName(noteId) {
     let note = getNodeByKey(noteId);