diff --git a/Changelog.md b/Changelog.md
index 32bcddc..6d1fe19 100755
--- a/Changelog.md
+++ b/Changelog.md
@@ -11,6 +11,7 @@
  - Overhauled internal history logic - history logic is now done in core.
  - Added `$env->page_filename`, which points to the current page on disk.
  - Changed the way different display modes are accessed. You can now use the new `mode` parameter to the `view` action. It supports 4 different modes at present: `normal`, `printable`, `contentonly`, and `parsedsourceonly`.
+ - Improved recent changes links a bit.
 
 ## Fixed
  - The login session lifetime is now configurable (defaults to 24 hours), so you won't keep getting logged out all the time (in theory). (#113)
diff --git a/build/index.php b/build/index.php
index 2274603..b5ade85 100755
--- a/build/index.php
+++ b/build/index.php
@@ -2221,7 +2221,7 @@ function render_recent_changes($recent_changes)
 			$userDisplayHtml = render_editor(implode(", ", $users));
 			
 			// TODO: Collect up and render a list of participating users
-			$next_entry = "<li><details><summary>$pageDisplayHtml $userDisplayHtml $timeDisplayHtml</summary><ul class='page-list'>$next_entry</ul></details></li>";
+			$next_entry = "<li><details><summary><a href='?page=" . rawurlencode($rchange_first->page) . "'>$pageDisplayHtml</a> $userDisplayHtml $timeDisplayHtml</summary><ul class='page-list'>$next_entry</ul></details></li>";
 			
 			$content .= "$next_entry\n";
 		}
@@ -2239,10 +2239,24 @@ function render_recent_changes($recent_changes)
 
 function render_recent_change($rchange)
 {
+	global $pageindex;
 	$pageDisplayHtml = render_pagename($rchange);
 	$editorDisplayHtml = render_editor($rchange->user);
 	$timeDisplayHtml = render_timestamp($rchange->timestamp);
 	
+	$revisionId = false;
+	if(isset($pageindex->{$rchange->page}))
+	{
+		foreach($pageindex->{$rchange->page}->history as $historyEntry)
+		{
+			if($historyEntry->timestamp == $rchange->timestamp)
+			{
+				$revisionId = $historyEntry->rid;
+				break;
+			}
+		}
+	}
+	
 	$result = "";
 	$resultClasses = [];
 	switch(isset($rchange->type) ? $rchange->type : "edit")
@@ -2260,7 +2274,7 @@ function render_recent_change($rchange)
 			if(!empty($rchange->newpage))
 				$resultClasses[] = "newpage";
 			
-			$result .= "<a href='?page=$rchange->page'>$pageDisplayHtml</a> $editorDisplayHtml $timeDisplayHtml <span class='$size_display_class' title='$size_title_display'>($size_display)</span>";
+			$result .= "<a href='?page=" . rawurlencode($rchange->page) . ($revisionId !== false ? "&revision=$revisionId" : "") . "'>$pageDisplayHtml</a> $editorDisplayHtml $timeDisplayHtml <span class='$size_display_class' title='$size_title_display'>($size_display)</span>";
 			break;
 		
 		case "deletion":
diff --git a/module_index.json b/module_index.json
index b2bfb1e..0185b4c 100755
--- a/module_index.json
+++ b/module_index.json
@@ -59,7 +59,7 @@
         "author": "Starbeamrainbowlabs",
         "description": "Adds recent changes. Access through the 'recent-changes' action.",
         "id": "feature-recent-changes",
-        "lastupdate": 1476906745,
+        "lastupdate": 1478108942,
         "optional": false
     },
     {
diff --git a/modules/feature-recent-changes.php b/modules/feature-recent-changes.php
index 7108f47..d6d3f34 100644
--- a/modules/feature-recent-changes.php
+++ b/modules/feature-recent-changes.php
@@ -175,7 +175,7 @@ function render_recent_changes($recent_changes)
 			$userDisplayHtml = render_editor(implode(", ", $users));
 			
 			// TODO: Collect up and render a list of participating users
-			$next_entry = "<li><details><summary>$pageDisplayHtml $userDisplayHtml $timeDisplayHtml</summary><ul class='page-list'>$next_entry</ul></details></li>";
+			$next_entry = "<li><details><summary><a href='?page=" . rawurlencode($rchange_first->page) . "'>$pageDisplayHtml</a> $userDisplayHtml $timeDisplayHtml</summary><ul class='page-list'>$next_entry</ul></details></li>";
 			
 			$content .= "$next_entry\n";
 		}
@@ -193,10 +193,24 @@ function render_recent_changes($recent_changes)
 
 function render_recent_change($rchange)
 {
+	global $pageindex;
 	$pageDisplayHtml = render_pagename($rchange);
 	$editorDisplayHtml = render_editor($rchange->user);
 	$timeDisplayHtml = render_timestamp($rchange->timestamp);
 	
+	$revisionId = false;
+	if(isset($pageindex->{$rchange->page}))
+	{
+		foreach($pageindex->{$rchange->page}->history as $historyEntry)
+		{
+			if($historyEntry->timestamp == $rchange->timestamp)
+			{
+				$revisionId = $historyEntry->rid;
+				break;
+			}
+		}
+	}
+	
 	$result = "";
 	$resultClasses = [];
 	switch(isset($rchange->type) ? $rchange->type : "edit")
@@ -214,7 +228,7 @@ function render_recent_change($rchange)
 			if(!empty($rchange->newpage))
 				$resultClasses[] = "newpage";
 			
-			$result .= "<a href='?page=$rchange->page'>$pageDisplayHtml</a> $editorDisplayHtml $timeDisplayHtml <span class='$size_display_class' title='$size_title_display'>($size_display)</span>";
+			$result .= "<a href='?page=" . rawurlencode($rchange->page) . ($revisionId !== false ? "&revision=$revisionId" : "") . "'>$pageDisplayHtml</a> $editorDisplayHtml $timeDisplayHtml <span class='$size_display_class' title='$size_title_display'>($size_display)</span>";
 			break;
 		
 		case "deletion":
