diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -7,8 +7,8 @@
  */
 return array(
   'names' => array(
-    'core.pkg.css' => '78b8bd03',
-    'core.pkg.js' => 'ef8f73ee',
+    'core.pkg.css' => 'a157f664',
+    'core.pkg.js' => '7c53868c',
     'darkconsole.pkg.js' => 'df001cab',
     'differential.pkg.css' => '8af45893',
     'differential.pkg.js' => '42c10e78',
@@ -142,7 +142,7 @@
     'rsrc/css/phui/phui-status.css' => '888cedb8',
     'rsrc/css/phui/phui-tag-view.css' => '6b74282b',
     'rsrc/css/phui/phui-text.css' => 'cf019f54',
-    'rsrc/css/phui/phui-timeline-view.css' => '26bb3fd4',
+    'rsrc/css/phui/phui-timeline-view.css' => '7556c113',
     'rsrc/css/phui/phui-workboard-view.css' => '2bf82d00',
     'rsrc/css/phui/phui-workpanel-view.css' => '198c7e6c',
     'rsrc/css/sprite-apps-large.css' => '20ec0cc0',
@@ -420,7 +420,7 @@
     'rsrc/js/application/repository/repository-crossreference.js' => 'f9539603',
     'rsrc/js/application/search/behavior-reorder-queries.js' => 'e9581f08',
     'rsrc/js/application/slowvote/behavior-slowvote-embed.js' => 'd6f54db0',
-    'rsrc/js/application/transactions/behavior-show-older-transactions.js' => '83458cbb',
+    'rsrc/js/application/transactions/behavior-show-older-transactions.js' => '77fcaaee',
     'rsrc/js/application/transactions/behavior-transaction-comment-form.js' => '9f7309fb',
     'rsrc/js/application/transactions/behavior-transaction-list.js' => '13c739ea',
     'rsrc/js/application/uiexample/JavelinViewExample.js' => 'd4a14807',
@@ -623,7 +623,7 @@
     'javelin-behavior-phabricator-remarkup-assist' => 'e32d14ab',
     'javelin-behavior-phabricator-reveal-content' => '60821bc7',
     'javelin-behavior-phabricator-search-typeahead' => '724b1247',
-    'javelin-behavior-phabricator-show-older-transactions' => '83458cbb',
+    'javelin-behavior-phabricator-show-older-transactions' => '77fcaaee',
     'javelin-behavior-phabricator-tooltips' => '3ee3408b',
     'javelin-behavior-phabricator-transaction-comment-form' => '9f7309fb',
     'javelin-behavior-phabricator-transaction-list' => '13c739ea',
@@ -791,7 +791,7 @@
     'phui-status-list-view-css' => '888cedb8',
     'phui-tag-view-css' => '6b74282b',
     'phui-text-css' => 'cf019f54',
-    'phui-timeline-view-css' => '26bb3fd4',
+    'phui-timeline-view-css' => '7556c113',
     'phui-workboard-view-css' => '2bf82d00',
     'phui-workpanel-view-css' => '198c7e6c',
     'phuix-action-list-view' => 'b5c256b8',
@@ -1308,6 +1308,12 @@
       'javelin-install',
       'javelin-util',
     ),
+    '77fcaaee' => array(
+      'javelin-behavior',
+      'javelin-stratcom',
+      'javelin-dom',
+      'phabricator-busy',
+    ),
     '7814b593' => array(
       'javelin-request',
       'javelin-behavior',
@@ -1368,12 +1374,6 @@
     '82ce2142' => array(
       'aphront-typeahead-control-css',
     ),
-    '83458cbb' => array(
-      'javelin-behavior',
-      'javelin-stratcom',
-      'javelin-dom',
-      'phabricator-busy',
-    ),
     '84845b5b' => array(
       'javelin-behavior',
       'javelin-dom',
diff --git a/webroot/rsrc/css/phui/phui-timeline-view.css b/webroot/rsrc/css/phui/phui-timeline-view.css
--- a/webroot/rsrc/css/phui/phui-timeline-view.css
+++ b/webroot/rsrc/css/phui/phui-timeline-view.css
@@ -318,6 +318,7 @@
   text-align: center;
   padding: 12px;
   color: {$darkgreytext};
+  cursor: pointer;
 }
 
 .device-phone .phui-timeline-older-transactions-are-hidden {
diff --git a/webroot/rsrc/js/application/transactions/behavior-show-older-transactions.js b/webroot/rsrc/js/application/transactions/behavior-show-older-transactions.js
--- a/webroot/rsrc/js/application/transactions/behavior-show-older-transactions.js
+++ b/webroot/rsrc/js/application/transactions/behavior-show-older-transactions.js
@@ -8,8 +8,6 @@
 
 JX.behavior('phabricator-show-older-transactions', function(config) {
 
-  var loading = false;
-
   function get_hash() {
     return window.location.hash.replace(/^#/, '');
   }
@@ -30,39 +28,8 @@
 
   function check_hash() {
     if (hash_is_hidden()) {
-      var showOlderBlock = null;
-      try {
-        showOlderBlock = JX.DOM.find(
-          JX.$(config.timelineID),
-          'div',
-          'show-older-block');
-      } catch (not_found_exception) {
-        // probably a garbage hash and we loaded everything looking
-        // for it; just abort
-        if (loading) {
-          loading = false;
-          JX.Busy.done();
-        }
-        return;
-      }
-      var showOlderLink = JX.DOM.find(
-        showOlderBlock,
-        'a',
-        'show-older-link');
-      if (!loading) {
-        loading = true;
-        JX.Busy.start();
-      }
-      fetch_older_workflow(
-        showOlderLink.href,
-        load_hidden_hash,
-        showOlderBlock)
-      .start();
+      load_older(load_hidden_hash_callback);
     } else {
-      if (loading) {
-        loading = false;
-        JX.Busy.done();
-      }
       try {
         var target = JX.$(get_hash());
         JX.DOM.scrollTo(target);
@@ -72,15 +39,46 @@
     }
   }
 
+  function load_older(callback) {
+    var showOlderBlock = null;
+    try {
+      showOlderBlock = JX.DOM.find(
+        JX.$(config.timelineID),
+        'div',
+        'show-older-block');
+    } catch (not_found_exception) {
+      // we loaded everything...!
+      return;
+    }
+
+    var showOlderLink = JX.DOM.find(
+      showOlderBlock,
+      'a',
+      'show-older-link');
+    var workflow = fetch_older_workflow(
+      showOlderLink.href,
+      callback,
+      showOlderBlock);
+    var routable = workflow.getRoutable()
+      .setPriority(2000)
+      .setType('workflow');
+    JX.Router.getInstance().queue(routable);
+  }
+
   var show_older = function(swap, r) {
     JX.DOM.replace(swap, JX.$H(r.timeline).getFragment());
   };
 
-  var load_hidden_hash = function(swap, r) {
+  var load_hidden_hash_callback = function(swap, r) {
     show_older(swap, r);
     check_hash();
   };
 
+  var load_all_older_callback = function(swap, r) {
+    show_older(swap, r);
+    load_older(load_all_older_callback);
+  };
+
   var fetch_older_workflow = function(href, callback, swap) {
     return new JX.Workflow(href, config.renderData)
       .setHandler(JX.bind(null, callback, swap));
@@ -88,17 +86,26 @@
 
   JX.Stratcom.listen(
     'click',
-    ['show-older-link'],
+    ['show-older-block'],
     function(e) {
       e.kill();
-      fetch_older_workflow(
-        e.getNode('tag:a').href,
+      var workflow = fetch_older_workflow(
+        JX.DOM.find(
+          e.getNode('show-older-block'),
+          'a',
+          'show-older-link').href,
         show_older,
-        e.getNode('show-older-block'))
-      .start();
+        e.getNode('show-older-block'));
+      var routable = workflow.getRoutable()
+        .setPriority(2000)
+        .setType('workflow');
+      JX.Router.getInstance().queue(routable);
     });
 
   JX.Stratcom.listen('hashchange', null, check_hash);
   check_hash();
 
+  new JX.KeyboardShortcut(['~'], 'Show all older changes in the timeline.')
+    .setHandler(JX.bind(null, load_older, load_all_older_callback))
+    .register();
 });