diff --git a/extra/webapps/wiki/changes.xml b/extra/webapps/wiki/changes.xml
new file mode 100644
index 0000000000..5efa0c045a
--- /dev/null
+++ b/extra/webapps/wiki/changes.xml
@@ -0,0 +1,19 @@
+<?xml version='1.0' ?>
+
+<t:chloe xmlns:t="http://factorcode.org/chloe/1.0">
+
+	<t:title>Recent Changes</t:title>
+
+	<ul>
+		<t:each-tuple t:values="changes">
+			<li>
+				<t:a t:href="title" t:query="title"><t:label t:name="title" /></t:a>
+				on
+				<t:a t:href="revision" t:query="id"><t:label t:name="date" /></t:a>
+				by
+				<t:a t:href="user-edits" t:query="author"><t:label t:name="author" /></t:a>
+			</li>
+		</t:each-tuple>
+	</ul>
+
+</t:chloe>
diff --git a/extra/webapps/wiki/diff.xml b/extra/webapps/wiki/diff.xml
index 378466f0bb..0fb0d6bae6 100644
--- a/extra/webapps/wiki/diff.xml
+++ b/extra/webapps/wiki/diff.xml
@@ -10,13 +10,13 @@
 		<tr>
 			<th class="field-label">Old revision:</th>
 			<t:bind-tuple t:name="old">
-				<td>Created on <t:label t:name="date" /> by <t:label t:name="author" />.</td>
+				<td>Created on <t:label t:name="date" /> by <t:a t:href="user-edits" t:query="author"><t:label t:name="author" /></t:a>.</td>
 			</t:bind-tuple>
 		</tr>
 		<tr>
 			<th class="field-label">New revision:</th>
 			<t:bind-tuple t:name="old">
-				<td>Created on <t:label t:name="date" /> by <t:label t:name="author" />.</td>
+				<td>Created on <t:label t:name="date" /> by <t:a t:href="user-edits" t:query="author"><t:label t:name="author" /></t:a>.</td>
 			</t:bind-tuple>
 		</tr>
 	</table>
diff --git a/extra/webapps/wiki/revisions.xml b/extra/webapps/wiki/revisions.xml
index fe74191773..4b7bdadf50 100644
--- a/extra/webapps/wiki/revisions.xml
+++ b/extra/webapps/wiki/revisions.xml
@@ -7,9 +7,9 @@
 	<ul>
 		<t:each-tuple t:values="revisions">
 			<li>
-				<t:a t:href="revision" t:query="id">
-					<t:label t:name="date" /> by <t:label t:name="author" />
-				</t:a>
+				<t:a t:href="revision" t:query="id"><t:label t:name="date" /></t:a>
+				by
+				<t:a t:href="user-edits" t:query="author"><t:label t:name="author" /></t:a>
 			</li>
 		</t:each-tuple>
 	</ul>
diff --git a/extra/webapps/wiki/user-edits.xml b/extra/webapps/wiki/user-edits.xml
new file mode 100644
index 0000000000..cf19a38370
--- /dev/null
+++ b/extra/webapps/wiki/user-edits.xml
@@ -0,0 +1,17 @@
+<?xml version='1.0' ?>
+
+<t:chloe xmlns:t="http://factorcode.org/chloe/1.0">
+
+	<t:title>Edits by <t:label t:name="author" /></t:title>
+
+	<ul>
+		<t:each-tuple t:values="user-edits">
+			<li>
+				<t:a t:href="view" t:query="title"><t:label t:name="title" /></t:a>
+				on
+				<t:a t:href="revision" t:query="id"><t:label t:name="date" /></t:a>
+			</li>
+		</t:each-tuple>
+	</ul>
+
+</t:chloe>
diff --git a/extra/webapps/wiki/view.xml b/extra/webapps/wiki/view.xml
index c3536f374d..56c8b37a1d 100644
--- a/extra/webapps/wiki/view.xml
+++ b/extra/webapps/wiki/view.xml
@@ -13,7 +13,7 @@
 		| <t:a t:href="$wiki/revisions" t:query="title">Revisions</t:a>
 		| <t:a t:href="$wiki/edit" t:query="title">Edit</t:a>
 		| <t:button t:action="$wiki/delete" t:for="title" class="link-button link">Delete</t:button>
-		| This revision created on <t:label t:name="date" /> by <t:label t:name="author" />.
+		| This revision created on <t:label t:name="date" /> by <t:a t:href="user-edits" t:query="author"><t:label t:name="author" /></t:a>.
 	</div>
 
 </t:chloe>
diff --git a/extra/webapps/wiki/wiki-common.xml b/extra/webapps/wiki/wiki-common.xml
index d241f910ca..23e61e55fe 100644
--- a/extra/webapps/wiki/wiki-common.xml
+++ b/extra/webapps/wiki/wiki-common.xml
@@ -8,6 +8,7 @@
 
 		<t:a t:href="$wiki">Front Page</t:a>
 		| <t:a t:href="$wiki/articles">All Articles</t:a>
+		| <t:a t:href="$wiki/changes">Recent Changes</t:a>
 
 		<t:if t:code="http.server.sessions:uid">
 
diff --git a/extra/webapps/wiki/wiki.factor b/extra/webapps/wiki/wiki.factor
index d0e1aed7ce..344a3d40bd 100644
--- a/extra/webapps/wiki/wiki.factor
+++ b/extra/webapps/wiki/wiki.factor
@@ -127,6 +127,16 @@ revision "REVISIONS" {
 
         "revisions" wiki-template >>template ;
 
+: <list-changes-action> ( -- action )
+    <page-action>
+        [
+            f <revision> select-tuples
+            [ [ date>> ] compare invert-comparison ] sort
+            "changes" set-value
+        ] >>init
+
+        "changes" wiki-template >>template ;
+
 : <delete-action> ( -- action )
     <action>
         [ validate-title ] >>validate
@@ -156,9 +166,24 @@ revision "REVISIONS" {
 
 : <list-articles-action> ( -- action )
     <page-action>
-        [ f <article> select-tuples "articles" set-value ] >>init
+        [
+            f <article> select-tuples
+            [ [ title>> ] compare ] sort
+            "articles" set-value
+        ] >>init
+
         "articles" wiki-template >>template ;
 
+: <user-edits-action> ( -- action )
+    <page-action>
+        [
+            { { "author" [ v-username ] } } validate-params
+            f <revision> "author" value >>author
+            select-tuples "user-edits" set-value
+        ] >>init
+
+        "user-edits" wiki-template >>template ;
+
 TUPLE: wiki < dispatcher ;
 
 : <wiki> ( -- dispatcher )
@@ -167,8 +192,10 @@ TUPLE: wiki < dispatcher ;
         <view-article-action> "view" add-responder
         <view-revision-action> "revision" add-responder
         <list-revisions-action> "revisions" add-responder
+        <user-edits-action> "user-edits" add-responder
         <diff-action> "diff" add-responder
         <list-articles-action> "articles" add-responder
+        <list-changes-action> "changes" add-responder
         <edit-article-action> { } <protected> "edit" add-responder
         <delete-action> { } <protected> "delete" add-responder
     <boilerplate>