diff --git a/drupalorg_project/drupalorg_project.module b/drupalorg_project/drupalorg_project.module
index 301723b..7b803c4 100644
--- a/drupalorg_project/drupalorg_project.module
+++ b/drupalorg_project/drupalorg_project.module
@@ -632,6 +632,18 @@ function drupalorg_project_nodeapi(&$node, $op = 'view', $teaser = FALSE, $page
     }
   }
 
+  if ($op == 'update') {
+    if ($node->type == 'project_issue') {
+      global $user;
+      $username = theme('username', $user);
+      $changes = array(
+        'nid' => $node->nid,
+        'comment' => t('Automatic message - !user has updated the issue summary.', array('!user' => $username)),
+       );
+      drupalorg_project_add_followup($changes);
+    }
+  }
+
   // Add a breadcrumb to API Change nodes.
   if ($op == 'alter' && !$teaser && $page && $node->type == 'changenotice') {
     if (isset($node->field_project[0]['nid'])) {
@@ -645,6 +657,73 @@ function drupalorg_project_nodeapi(&$node, $op = 'view', $teaser = FALSE, $page
     }
   }
 }
+/**
+ * Add a comment to the issue queue
+ *
+ * @see project_issue_add_followup
+ *
+ * This function makes three changes to project_issue_add_followup
+ * 1. Removes the call to hook_comment, because it causes an infinite recursion.
+ * 2. Adds the mail notification.
+ * 3. Hardcodes the $account to the system user, to avoid multiple calls to 
+ *    user_load(), since we know this will always be set on drupal.org
+ */
+function drupalorg_project_add_followup($changes) {
+  $account = _project_issue_followup_get_user();
+
+  $result = db_query('SELECT pi.nid, pi.rid, pi.component, pi.category, pi.priority, pi.assigned, pi.sid, pi.pid, n.title FROM {project_issues} pi INNER JOIN {node} n ON n.nid = pi.nid WHERE n.nid = %d', $changes['nid']);
+
+  if ($issue = db_fetch_object($result)) {
+    // Build vancode
+    $max = db_result(db_query('SELECT MAX(thread) FROM {comments} WHERE nid = %d', $changes['nid']));
+    // Strip the "/" from the end of the thread.
+    $max = rtrim($max, '/');
+    // Finally, build the thread field for this new comment.
+    $thread = int2vancode(vancode2int($max) + 1) .'/';
+
+    // These two are not allowed to be set in changes.
+    unset($changes['cid'], $changes['pid']);
+    $comment = $changes + array(
+      'pid' => 0,
+      'uid' => $account->uid,
+      // The correct subject (#number) is supplied during the save cycle.
+      'subject' => '--issue summary updated--',
+      'hostname' => ip_address(),
+      'timestamp' => time(),
+      'status' => COMMENT_PUBLISHED,
+      'format' => FILTER_FORMAT_DEFAULT,
+      'thread' => $thread,
+      'name' => $account->name,
+      'mail' => '',
+      'homepage' => '',
+      'category' => $issue->category,
+      'priority' => $issue->priority,
+      'assigned' => $issue->assigned,
+      'sid' => $issue->sid,
+      'title' => $issue->title,
+    );
+
+    if (!isset($comment['project_info'])) {
+      $comment['project_info'] = array();
+    }
+    $comment['project_info'] += array(
+      'pid' => $issue->pid,
+      'rid' => $issue->rid,
+      'component' => $issue->component,
+      'assigned' => $issue->assigned,
+    );
+
+    db_query("INSERT INTO {comments} (pid, nid, uid, subject, comment, hostname, timestamp, status, format, thread, name, mail, homepage) VALUES (%d, %d, %d, '%s', '%s', '%s', %d, %d, %d, '%s', '%s', '%s', '%s')", $comment['pid'], $comment['nid'], $comment['uid'], $comment['subject'], $comment['comment'], $comment['hostname'], $comment['timestamp'], $comment['status'], $comment['format'], $comment['thread'], $comment['name'], $comment['mail'], $comment['homepage']);
+
+    $comment['cid'] = db_last_insert_id('comments', 'cid');
+
+    _comment_update_node_statistics($comment['nid']);
+    project_issue_set_mail_notify($comment['nid']);
+    cache_clear_all();
+    return TRUE;
+  }
+  return FALSE;
+}
 
 /**
  * List projects with commit RSS links.
