diff --git a/include/class.thread.php b/include/class.thread.php
index 5b078a397c86420ae284416ebe2e872522bf26f4..3b4676b9a0305a739fee589c9340979d8090c9ba 100644
--- a/include/class.thread.php
+++ b/include/class.thread.php
@@ -1507,7 +1507,7 @@ class ThreadEvent extends VerySimpleModel {
         return @$icons[$this->state] ?: 'chevron-sign-right';
     }
 
-    function getDescription() {
+    function getDescription($mode=self::MODE_STAFF) {
         static $descs;
         if (!isset($descs))
             $descs = array(
@@ -1543,7 +1543,7 @@ class ThreadEvent extends VerySimpleModel {
             'edited:status' => __('<b>{username}</b> changed the status to <strong>{<TicketStatus>data.status}</strong> {timestamp}'),
             'overdue' => __('Flagged as overdue by the system {timestamp}'),
             'transferred' => __('<b>{username}</b> transferred this to <strong>{dept}</strong> {timestamp}'),
-            'edited:fields' => function($evt) {
+            'edited:fields' => function($evt) use ($mode) {
                 $base = __('Updated by <b>{username}</b> {timestamp} — %s');
                 $data = $evt->getData();
                 $fields = $changes = array();
@@ -1554,6 +1554,8 @@ class ThreadEvent extends VerySimpleModel {
                 }
                 foreach ($data['fields'] as $id=>$f) {
                     $field = $fields[$id];
+                    if ($mode == self::MODE_CLIENT && !$field->isVisibleToUsers())
+                        continue;
                     list($old, $new) = $f;
                     $impl = $field->getImpl($field);
                     $before = $impl->to_php($old);
@@ -1561,6 +1563,8 @@ class ThreadEvent extends VerySimpleModel {
                     $changes[] = sprintf('<strong>%s</strong> %s',
                         $field->getLocal('label'), $impl->whatChanged($before, $after));
                 }
+                if (!$changes)
+                    return '';
                 return sprintf($base, implode(', ', $changes));
             },
         );
diff --git a/include/client/templates/thread-event.tmpl.php b/include/client/templates/thread-event.tmpl.php
index f630268cb1af7894bff95051992c78803943c0bc..42fd8027e0024324e15407e0cd4add7c0b69dc83 100644
--- a/include/client/templates/thread-event.tmpl.php
+++ b/include/client/templates/thread-event.tmpl.php
@@ -1,8 +1,11 @@
+<?php
+$desc = $event->getDescription(ThreadEvent::MODE_CLIENT);
+if (!$desc)
+    return;
+?>
 <div class="thread-event <?php if ($event->uid) echo 'action'; ?>">
         <span class="type-icon">
           <i class="faded icon-<?php echo $event->getIcon(); ?>"></i>
         </span>
-        <span class="faded description">
-            <?php echo $event->getDescription(); ?>
-        </span>
+        <span class="faded description"><?php echo $desc; ?></span>
 </div>
diff --git a/include/staff/templates/thread-event.tmpl.php b/include/staff/templates/thread-event.tmpl.php
index f630268cb1af7894bff95051992c78803943c0bc..f98a1e3200776ca8727d586ee1dc47ead485540a 100644
--- a/include/staff/templates/thread-event.tmpl.php
+++ b/include/staff/templates/thread-event.tmpl.php
@@ -3,6 +3,6 @@
           <i class="faded icon-<?php echo $event->getIcon(); ?>"></i>
         </span>
         <span class="faded description">
-            <?php echo $event->getDescription(); ?>
+            <?php echo $event->getDescription(ThreadEvent::MODE_STAFF); ?>
         </span>
 </div>