Index: trac/Timeline.py
===================================================================
--- trac/Timeline.py	(revision 1011)
+++ trac/Timeline.py	(working copy)
@@ -35,7 +35,7 @@
     template_rss_name = 'timeline_rss.cs'
 
     def get_info (self, start, stop, maxrows, tickets,
-                  changeset, wiki, milestone):
+                  changeset, wiki, milestone, foruser=''):
         cursor = self.db.cursor ()
 
         tickets = tickets and self.perm.has_permission(perm.TICKET_VIEW)
@@ -92,6 +92,14 @@
                      (start, stop))
 
         q_str = string.join(q, ' UNION ALL ')
+
+        if foruser:
+            if foruser == '(empty)':
+                q_user = "IFNULL(author, '') = ''"
+            else:
+                q_user = "author = '%s'" % foruser
+            q_str = "SELECT * FROM (%s) WHERE %s" % (q_str, q_user)
+
         q_str += ' ORDER BY time DESC'
         if maxrows:
             q_str += ' LIMIT %d' % maxrows
@@ -192,6 +200,7 @@
 
         _from = self.args.get('from', '')
         _daysback = self.args.get('daysback', '')
+        foruser = self.args.get('user', '')
 
         # Parse the from date and adjust the timestamp to the last second of the day
         try:
@@ -207,6 +216,7 @@
         self.req.hdf.setValue('timeline.from',
                               time.strftime('%x', time.localtime(_from)))
         self.req.hdf.setValue('timeline.daysback', str(daysback))
+        self.req.hdf.setValue('timeline.user', foruser)
 
         stop  = _from
         start = stop - daysback * 86400
@@ -229,7 +239,7 @@
             self.req.hdf.setValue('timeline.milestone', 'checked')
 
         info = self.get_info (start, stop, maxrows, ticket,
-                              changeset, wiki, milestone)
+                              changeset, wiki, milestone, foruser)
         util.add_dictlist_to_hdf(info, self.req.hdf, 'timeline.items')
         self.req.hdf.setValue('title', 'Timeline')
 
Index: templates/timeline.cs
===================================================================
--- templates/timeline.cs	(revision 1011)
+++ templates/timeline.cs	(working copy)
@@ -40,6 +40,11 @@
       if:timeline.milestone ?>checked="checked"<?cs /if ?> />
     <label for="milestone">Milestones</label>
    </div><?cs /if ?>
+   <div>
+   <label for="user">View changes by</label>
+   <input type="text" size="10" id="user" name="user"
+       value="<?cs var:timeline.user ?>" /> (empty for all users)
+   </div>
   </fieldset>
   <div class="buttons">
    <input type="submit" value="Update" />

