Index: src/applications/differential/storage/DifferentialTransaction.php
===================================================================
--- src/applications/differential/storage/DifferentialTransaction.php
+++ src/applications/differential/storage/DifferentialTransaction.php
@@ -20,6 +20,7 @@
 
   public function getTitle() {
     $author_phid = $this->getAuthorPHID();
+    $author_handle = $this->renderHandleLink($author_phid);
 
     $old = $this->getOldValue();
     $new = $this->getNewValue();
@@ -28,10 +29,90 @@
       case self::TYPE_INLINE:
         return pht(
           '%s added inline comments.',
-          $this->renderHandleLink($author_phid));
+          $author_handle);
+      case self::TYPE_UPDATE:
+        if ($new) {
+          // TODO: Migrate to PHIDs and use handles here?
+          // TODO: Link this?
+          return pht(
+            '%s updated this revision to Diff #%d.',
+            $author_handle,
+            $new);
+        } else {
+          return pht(
+            '%s updated this revision.',
+            $author_handle);
+        }
+      case self::TYPE_ACTION:
+        return DifferentialAction::getBasicStoryText($new, $author_handle);
     }
 
     return parent::getTitle();
   }
 
+  public function getIcon() {
+    switch ($this->getTransactionType()) {
+      case self::TYPE_INLINE:
+        return 'comment';
+      case self::TYPE_UPDATE:
+        return 'refresh';
+      case self::TYPE_ACTION:
+        switch ($this->getNewValue()) {
+          case DifferentialAction::ACTION_CLOSE:
+            return 'ok';
+          case DifferentialAction::ACTION_ACCEPT:
+            return 'enable';
+          case DifferentialAction::ACTION_REJECT:
+          case DifferentialAction::ACTION_ABANDON:
+            return 'delete';
+          case DifferentialAction::ACTION_RETHINK:
+            return 'disable';
+          case DifferentialAction::ACTION_REQUEST:
+            return 'refresh';
+          case DifferentialAction::ACTION_RECLAIM:
+          case DifferentialAction::ACTION_REOPEN:
+            return 'new';
+          case DifferentialAction::ACTION_RESIGN:
+            return 'undo';
+          case DifferentialAction::ACTION_CLAIM:
+            return 'user';
+        }
+    }
+
+    return parent::getIcon();
+  }
+
+  public function getColor() {
+    switch ($this->getTransactionType()) {
+      case self::TYPE_UPDATE:
+        return PhabricatorTransactions::COLOR_SKY;
+      case self::TYPE_ACTION:
+        switch ($this->getNewValue()) {
+          case DifferentialAction::ACTION_CLOSE:
+            return PhabricatorTransactions::COLOR_BLUE;
+          case DifferentialAction::ACTION_ACCEPT:
+            return PhabricatorTransactions::COLOR_GREEN;
+          case DifferentialAction::ACTION_REJECT:
+            return PhabricatorTransactions::COLOR_RED;
+          case DifferentialAction::ACTION_ABANDON:
+            return PhabricatorTransactions::COLOR_BLACK;
+          case DifferentialAction::ACTION_RETHINK:
+            return PhabricatorTransactions::COLOR_RED;
+          case DifferentialAction::ACTION_REQUEST:
+            return PhabricatorTransactions::COLOR_SKY;
+          case DifferentialAction::ACTION_RECLAIM:
+            return PhabricatorTransactions::COLOR_SKY;
+          case DifferentialAction::ACTION_REOPEN:
+            return PhabricatorTransactions::COLOR_SKY;
+          case DifferentialAction::ACTION_RESIGN:
+            return PhabricatorTransactions::COLOR_ORANGE;
+          case DifferentialAction::ACTION_CLAIM:
+            return PhabricatorTransactions::COLOR_YELLOW;
+        }
+    }
+
+
+    return parent::getColor();
+  }
+
 }