<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -16,9 +16,11 @@ Configuration:
     keys: /path/to/key
 
 Running:
+  ./gl_tail.rb --help
   ./gl_tail.rb &lt;config.yaml&gt;
 
-  You can also press 'f' while running to toggle the attempted frames per second.
+  You can also press 'f' while running to toggle the attempted frames per second. Or 'b'
+  to change default blob type, and space to toggle bouncing.
 
 Versions tested:
   rubygems    0.9.4</diff>
      <filename>README</filename>
    </modified>
    <modified>
      <diff>@@ -19,6 +19,8 @@ config:
     dimensions: 1200x600
     min_blob_size: 0.004
     max_blob_size: 0.04
+    highlight_color: orange
+    bounce: false
     left_column:
         size: 25
         alignment: -0.99</diff>
      <filename>config.yaml</filename>
    </modified>
    <modified>
      <diff>@@ -41,7 +41,7 @@ class Configuration
   attr_reader :yaml
 
   require 'yaml'
-  
+
   def initialize file
     file  ||= &quot;config.yaml&quot;
     @yaml   = YAML.load_file(file)
@@ -52,7 +52,7 @@ class Configuration
     parse_servers
     parse_config
   end
-  
+
   def method_missing method, *arg
     method = method.to_s
     if method.delete! '='
@@ -61,7 +61,7 @@ class Configuration
       instance_variable_get &quot;@#{method.to_s}&quot;
     end
   end
-    
+
 
   def parse_servers
     self.servers = Array.new
@@ -88,6 +88,10 @@ class Configuration
       unless config.is_a? Hash
         if key == 'dimensions'
           self.window_width, self.window_height = config.split('x').map{|x| x.to_f}
+        elsif key == 'highlight_color'
+          self.highlight_color = parse_color config
+        elsif key == 'bounce'
+          self.bounce = ( value == 'true' ? true : false )
         else
           eval &quot;self.#{key} = #{config}&quot;
           # TODO: Right now we ignore it if its not set right now. Maybe throw a SyntaxError?
@@ -143,13 +147,17 @@ class Configuration
 
   def parse_color v
     @colors = {
-      'white' =&gt; %w{ 255 255 255 255 },
-      'red' =&gt; %w{ 255 0 0 255 },
-      'green' =&gt; %w{ 0 255 0 255 },
-      'blue' =&gt; %w{ 0 0 255 255 },
-      'yellow' =&gt; %w{ 255 255 0 255 },
-      'cyan' =&gt; %w{ 0 255 255 255 },
-      'magenta' =&gt; %w{ 255 0 255 255 },
+      'white'   =&gt; %w{ 255 255 255 255 },
+      'red'     =&gt; %w{ 255   0   0 255 },
+      'green'   =&gt; %w{   0 255   0 255 },
+      'blue'    =&gt; %w{   0   0 255 255 },
+      'yellow'  =&gt; %w{ 255 255   0 255 },
+      'cyan'    =&gt; %w{   0 255 255 255 },
+      'magenta' =&gt; %w{ 255   0 255 255 },
+
+      'purple'  =&gt; %w{ 128   0 255 255 },
+      'orange'  =&gt; %w{ 255 128   0 255 },
+      'pink'    =&gt; %w{ 255   0 128 255 },
     }
 
     case v</diff>
      <filename>gl_tail.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,9 +5,10 @@
 #
 
 class Activity
-  attr_accessor :x, :y, :z, :type, :wx, :wy, :wz
+  attr_accessor :x, :y, :z, :wx, :wy, :wz, :xi, :yi, :zi
+  attr_accessor :message, :color, :size, :type
 
-  def initialize(message, x,y,z, color, size, type=0)
+  def initialize(message, x, y, z, color, size, type = 0)
     @message = message
     @x, @y, @z = x, y, z
     @xi, @yi, @zi = 0.012 + (rand(100)/100.0 ) * 0.0012 , 0.002 + (rand(1000)/1000.0 ) * 0.002, 0
@@ -22,12 +23,32 @@ class Activity
     @color = color
     @size  = size
     @type  = type
+
     @rx, @ry, @rz = rand(360), rand(360), 0
   end
 
   def render
+    if @type != 5
+      if $CONFIG.wanted_fps == 0
+        @x += @xi/2
+        @y += @yi/2
+        @yi = @yi - 0.0005/2
+      else
+        @fps_mod ||= (60.0 / $CONFIG.wanted_fps)
+        @x += (@xi/2) * @fps_mod
+        @y += (@yi/2) * @fps_mod
+        @yi = @yi - (0.0005/2) * @fps_mod
+      end
+
+#      @yi = @yi * 1.01
+#      @xi = @xi * 0.9995
 
-    if @type == 5
+      if @y - @size/2 &lt; -$CONFIG.top
+        @y = -$CONFIG.top + @size/2
+        @yi = -@yi * 0.7
+        @x = 30.0 if(@type == 2 || ($CONFIG.bounce.nil? || $CONFIG.bounce == false ) )
+      end
+    else
       dy = @wy - @y
       if dy.abs &lt; 0.001
         @y = @wy
@@ -46,32 +67,11 @@ class Activity
         @x = 20.0
       end
 
-    else
-      if $CONFIG.wanted_fps == 0
-        @x += @xi/2
-        @y += @yi/2
-        @yi = @yi - 0.0005/2
-      else
-        @x += (@xi/2) * (60.0 / $CONFIG.wanted_fps)
-        @y += (@yi/2) * (60.0 / $CONFIG.wanted_fps)
-        @yi = @yi - (0.0005/2) * (60.0 / $CONFIG.wanted_fps)
-      end
-
-#      @yi = @yi * 1.01
-#      @xi = @xi * 0.9995
-
-      if @y - @size/2 &lt; -$CONFIG.top
-        @y = -$CONFIG.top + @size/2
-        @yi = -@yi * 0.7
-        @x = 30.0 #if @type == 2
-      end
-
-
     end
 
     if @type == 0 || @type == 5
       glPushMatrix()
-      glMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, @color)
+      glColor(@color)
       glTranslate(@x, @y, @z)
       if $CONFIG.mode == 1
         glRotatef(@rx, 1.0, 0.0, 0.0)
@@ -105,7 +105,7 @@ class Activity
       glPopMatrix()
     elsif @type == 1
       glPushMatrix()
-      glMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, @color)
+      glColor(@color)
       glTranslate(@x, @y, @z)
       glRotatef(@rx, 1.0, 0.0, 0.0)
       glRotatef(@ry, 0.0, 1.0, 0.0)
@@ -130,7 +130,7 @@ class Activity
       glPopMatrix()
     elsif @type == 2
       glPushMatrix()
-      glMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, @color.map { |c| c*10.0} )
+      glColor(@color)
       glTranslate(@x, @y, @z)
       glRasterPos(0.0, 0.0)
 </diff>
      <filename>lib/activity.rb</filename>
    </modified>
    <modified>
      <diff>@@ -52,6 +52,7 @@ class Block
       end
       num += 1
     end
+
     (@elements.values - sorted).each do |e|
       $CONFIG.stats[0] += 1
       e.activities.each do |a|
@@ -64,19 +65,19 @@ class Block
         @elements.delete(e.name)
       end
     end
-    @elements.delete_if { |k,v| (!sorted.include? v) &amp;&amp; v.active &amp;&amp; v.activities.size == 0 &amp;&amp; v.updates &gt; 59} if @clean
+    @elements.delete_if { |k,v| (!sorted.include? v) &amp;&amp; v.active &amp;&amp; v.activities.size == 0 &amp;&amp; v.updates &gt; 29} if @clean
     @bottom_position = $CONFIG.top - ((sorted.size &gt; 0 ? (num-1) : num) * $CONFIG.line_size)
     num + 1
   end
 
   def add_activity(options = { })
     @elements[options[:name]] ||= Element.new(options[:name], @color || options[:color], @show, @position == :right)
-    @elements[options[:name]].add_activity(options[:message], options[:size] || 0.01, options[:type] || 0 )
+    @elements[options[:name]].add_activity(options[:message], @color || options[:color], options[:size] || 0.01, options[:type] || 0 )
   end
 
   def add_event(options = { })
-    @elements[options[:name]] ||= Element.new(options[:name], options[:color], @show, @position == :right)
-    @elements[options[:name]].add_event(options[:message], options[:update_stats] || false)
+    @elements[options[:name]] ||= Element.new(options[:name], options[:color] || @color, @show, @position == :right)
+    @elements[options[:name]].add_event(options[:message], options[:color] || @color, options[:update_stats] || false)
   end
 
   def update</diff>
      <filename>lib/block.rb</filename>
    </modified>
    <modified>
      <diff>@@ -37,10 +37,11 @@ class Element
 
   end
 
-  def add_activity(message, size, type)
-    @pending.push Item.new(message, size, @color, type) if(type != 3)
+  def add_activity(message, color, size,  type)
+    @pending.push Item.new(message, size, color, type) if(type != 3)
     @messages += 1
     @sum += size
+    @color = color
 
     if @rate == 0
       @rate = 1.0 / 60
@@ -48,8 +49,8 @@ class Element
     end
   end
 
-  def add_event(message, update_stats)
-    @pending.push Item.new(message, 0.01, @color, 2)
+  def add_event(message, color, update_stats)
+    @pending.push Item.new(message, 0.01, color, 2)
     if update_stats
       @messages += 1
       if @rate == 0
@@ -111,15 +112,9 @@ class Element
 
     glPushMatrix()
 
-#    ty = 700 - ((($CONFIG.aspect*2) - (@y+$CONFIG.aspect))/($CONFIG.aspect*2) * $CONFIG.window_height + 0.5).to_i
-#    ty2 = 700 - ((($CONFIG.aspect*2) - (@y+$CONFIG.aspect+$CONFIG.line_size))/($CONFIG.aspect*2) * $CONFIG.window_height + 0.5).to_i
-
-#    corrected_y = ((ty2 - ty) == 13) ? @y : (ty+1) / $CONFIG.window_height.to_f * ($CONFIG.aspect * 2) - $CONFIG.aspect
-
     glTranslate(@x, @y, @z)
-    glRasterPos(0.0, 0.0)
 
-    glMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ( @queue.size &gt; 0 ? [10.0, 0.0, 0.0, 10.0] : @color.map { |c| c*10.0} ) )
+    glColor( (@queue.size &gt; 0 ? ($CONFIG.highlight_color || [1.0, 0.0, 0.0, 1.0]) : @color ) )
 
     if @type == 0
       if @rate &lt; 0.0001
@@ -151,9 +146,7 @@ class Element
 
     glPopMatrix()
 
-
     t = glutGet(GLUT_ELAPSED_TIME)
-    num = 0
     while( (@queue.size &gt; 0) &amp;&amp; (@last_time &lt; t ) )
 
       @last_time += @step
@@ -163,13 +156,6 @@ class Element
       size = item.size
       type = item.type
 
-
-      if size &lt; $CONFIG.min_blob_size
-        size = $CONFIG.min_blob_size
-      elsif size &gt; $CONFIG.max_blob_size
-        size = $CONFIG.max_blob_size
-      end
-
       if type == 2
         @activities.push Activity.new(url, 0.0 - (0.013 * url.length), $CONFIG.top, 0.0, color, size, type)
       elsif type == 5
@@ -184,15 +170,13 @@ class Element
           @activities.push Activity.new(url, ($CONFIG.left[:alignment] + ($CONFIG.left[:size]+8)*8.0 / ($CONFIG.window_width / 2.0) ), @y + $CONFIG.line_size/2, @z, color, size, type)
         end
       end
-      num += 1
     end
-#    @last_time = glutGet(GLUT_ELAPSED_TIME)
 
     @activities.each do |a|
-      if a.x &gt; 1.0 || a.x &lt; -1.0 || a.y &gt; $CONFIG.aspect*1.5 || a.y &lt; -($CONFIG.aspect*1.5)
+      if a.x &gt; 1.0 || a.x &lt; -1.0 || a.y &lt; -($CONFIG.aspect*1.5)
         @activities.delete a
       else
-        a.wy = @wy + 0.005 if a.type == 5
+        a.wy = @wy + 0.005 if(a.type == 5 &amp;&amp; @wy != a.wy)
         a.render
         $CONFIG.stats[1] += 1
       end</diff>
      <filename>lib/element.rb</filename>
    </modified>
    <modified>
      <diff>@@ -84,7 +84,7 @@ class GlTail
     right_left = $CONFIG.right[:alignment] - char_size * ($CONFIG.right[:size] + 1)
     right_right = $CONFIG.right[:alignment] - char_size * ($CONFIG.right[:size] + 8)
 
-    glMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ( [0.2, 0.2, 0.2, 10.0]  ) )
+    glColor([0.2, 0.2, 0.2, 1.0])
     glBegin(GL_QUADS)
       glVertex3f(left_left, $CONFIG.aspect, 0.0)
       glVertex3f(left_right, $CONFIG.aspect, 0.0)
@@ -135,12 +135,13 @@ class GlTail
   end
 
   def timer(value)
-    t = glutGet(GLUT_ELAPSED_TIME)
+    glutTimerFunc(15, method(:timer).to_proc, 0)
+#    t = glutGet(GLUT_ELAPSED_TIME)
     glutPostRedisplay()
+    glutSwapBuffers()
     do_process
-    t = glutGet(GLUT_ELAPSED_TIME) - t
-    t = 29 if t &gt; 29
-    glutTimerFunc(30 - t, method(:timer).to_proc, 0)
+#    t = glutGet(GLUT_ELAPSED_TIME) - t
+#    t = 14 if t &gt; 14
   end
 
   # Change view angle, exit upon ESC
@@ -148,6 +149,9 @@ class GlTail
     case k
     when 27 # Escape
       exit
+    when 32 # Space
+      $CONFIG.bounce ||= false
+      $CONFIG.bounce = !$CONFIG.bounce
     when 102 #f
       $CONFIG.wanted_fps = case $CONFIG.wanted_fps
              when 0
@@ -190,7 +194,7 @@ class GlTail
     glMatrixMode(GL_PROJECTION)
     glLoadIdentity()
 
-#    glFrustum(-2.0, 2.0, -$CONFIG.aspect*2, $CONFIG.aspect*2, 5.0, 60.0)
+#    glFrustum(-1.0, 1.0, -$CONFIG.aspect, $CONFIG.aspect, 5.0, 60.0)
     glOrtho(-1.0, 1.0, -$CONFIG.aspect, $CONFIG.aspect, -1.0, 1.0)
 
     $CONFIG.line_size = $CONFIG.aspect * 2 / ($CONFIG.window_height/13.0)
@@ -206,17 +210,21 @@ class GlTail
   end
 
   def init
-    glLightfv(GL_LIGHT0, GL_POSITION, [-5.0, 5.0, 10.0, 0.0])
+    glLightfv(GL_LIGHT0, GL_POSITION, [5.0, 5.0, 0.0, 0.0])
+    glLightfv(GL_LIGHT0, GL_AMBIENT, [0,0,0,1])
     glDisable(GL_CULL_FACE)
     glEnable(GL_LIGHTING)
     glEnable(GL_LIGHT0)
     glEnable(GL_TEXTURE_2D)
-
+#    glShadeModel(GL_FLAT)
     glDisable(GL_DEPTH_TEST)
     glDisable(GL_NORMALIZE)
 #    glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST)
     glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST )
 
+    glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE)
+    glEnable(GL_COLOR_MATERIAL)
+
     FontStore.generate_font
 
     @channels = Array.new
@@ -261,8 +269,7 @@ class GlTail
   end
 
   def visible(vis)
-#    glutTimerFunc(33, method(:timer).to_proc, 0)
-    glutIdleFunc((vis == GLUT_VISIBLE ? method(:idle).to_proc : nil))
+#    glutIdleFunc((vis == GLUT_VISIBLE ? method(:idle).to_proc : nil))
   end
 
   def mouse(button, state, x, y)
@@ -292,14 +299,13 @@ class GlTail
     glutVisibilityFunc(method(:visible).to_proc)
     glutMouseFunc(method(:mouse).to_proc)
     glutMotionFunc(method(:motion).to_proc)
+
+    glutIdleFunc(method(:idle).to_proc)
+#    glutTimerFunc(33, method(:timer).to_proc, 0)
   end
 
   def start
-    while true
-      t = glutGet(GLUT_ELAPSED_TIME)
-      glutCheckLoop()
-      puts &quot;#{glutGet(GLUT_ELAPSED_TIME) - t} ms&quot;
-    end
+    glutMainLoop()
   end
 
   def parse_line( ch, data )
@@ -361,9 +367,9 @@ class GlTail
     active = 0
     @channels.each do |ch|
       active += 1
-      while ch.connection.reader_ready?
+#      while ch.connection.reader_ready?
         ch.connection.process(true)
-      end
+#      end
     end
 
     break if active == 0
@@ -372,6 +378,10 @@ class GlTail
       @since = glutGet(GLUT_ELAPSED_TIME)
       @channels.each { |ch| ch.connection.ping! }
 
+      @servers.each_value do |s|
+        s.update
+      end
+
       @blocks.each_value do |b|
         b.update
       end</diff>
      <filename>lib/gl_tail.rb</filename>
    </modified>
    <modified>
      <diff>@@ -21,9 +21,9 @@ class ApacheParser &lt; Parser
 
       referrer.gsub!(/http:\/\//,'') if referrer
 
-      add_activity(:block =&gt; 'sites', :name =&gt; server.name, :size =&gt; size.to_i/1000000.0) # Size of activity based on size of request
+      add_activity(:block =&gt; 'sites', :name =&gt; server.name, :size =&gt; size.to_i) # Size of activity based on size of request
       add_activity(:block =&gt; 'urls', :name =&gt; url)
-      add_activity(:block =&gt; 'users', :name =&gt; host, :size =&gt; size.to_i/1000000.0)
+      add_activity(:block =&gt; 'users', :name =&gt; host, :size =&gt; size.to_i)
       add_activity(:block =&gt; 'referrers', :name =&gt; referrer) unless (referrer.nil? || referrer_host.nil? || referrer_host.include?(server.name) || referrer_host.include?(server.host))
       add_activity(:block =&gt; 'user agents', :name =&gt; HttpHelper.parse_useragent(useragent), :type =&gt; 3) unless useragent.nil?
 </diff>
      <filename>lib/parsers/apache.rb</filename>
    </modified>
    <modified>
      <diff>@@ -14,9 +14,9 @@ class IISParser &lt; Parser
       method, url, http_version = url.split(&quot; &quot;)
       url, parameters = url.split('?')
 
-      add_activity(:block =&gt; 'sites', :name =&gt; server.name, :size =&gt; size.to_i/1000000.0) # Size of activity based on size of request
+      add_activity(:block =&gt; 'sites', :name =&gt; server.name, :size =&gt; size.to_i) # Size of activity based on size of request
       add_activity(:block =&gt; 'urls', :name =&gt; url)
-      add_activity(:block =&gt; 'users', :name =&gt; host, :size =&gt; size.to_i/1000000.0)
+      add_activity(:block =&gt; 'users', :name =&gt; host, :size =&gt; size.to_i)
       add_activity(:block =&gt; 'referrers', :name =&gt; referrer) unless (referrer_host.nil? || referrer_host.include?(server.name) || referrer_host.include?(server.host) || referrer == '-')
       add_activity(:block =&gt; 'user agents', :name =&gt; useragent, :type =&gt; 3)
 </diff>
      <filename>lib/parsers/iis.rb</filename>
    </modified>
    <modified>
      <diff>@@ -14,9 +14,9 @@ class NginxParser &lt; Parser
       method, full_url, _ = request.split(' ')
       url, parameters = full_url.split('?')
 
-      add_activity(:block =&gt; 'sites', :name =&gt; server.name, :size =&gt; size.to_i/1000000.0)
+      add_activity(:block =&gt; 'sites', :name =&gt; server.name, :size =&gt; size.to_i)
       add_activity(:block =&gt; 'urls', :name =&gt; url)
-      add_activity(:block =&gt; 'users', :name =&gt; remote_addr, :size =&gt; size.to_i/1000000.0)
+      add_activity(:block =&gt; 'users', :name =&gt; remote_addr, :size =&gt; size.to_i)
       add_activity(:block =&gt; 'referrers', :name =&gt; referrer) unless (referrer_host.nil? || referrer_host.include?(server.name) || referrer_host.include?(server.host) || referrer == '-')
       add_activity(:block =&gt; 'user agents', :name =&gt; http_user_agent, :type =&gt; 3) unless http_user_agent.nil?
 </diff>
      <filename>lib/parsers/nginx.rb</filename>
    </modified>
    <modified>
      <diff>@@ -16,12 +16,12 @@ class PureftpdParser &lt; Parser
       url = method if url.nil?
 
       if method == &quot;PUT&quot;
-        add_activity(:block =&gt; 'urls', :name =&gt; url, :size =&gt; size.to_i/1000000.0, :type =&gt; 5)
+        add_activity(:block =&gt; 'urls', :name =&gt; url, :size =&gt; size.to_i, :type =&gt; 5)
       else
-        add_activity(:block =&gt; 'urls', :name =&gt; url, :size =&gt; size.to_i/1000000.0)
+        add_activity(:block =&gt; 'urls', :name =&gt; url, :size =&gt; size.to_i)
       end
-      add_activity(:block =&gt; 'sites', :name =&gt; server.name, :size =&gt; size.to_i/1000000.0) # Size of activity based on size of request
-      add_activity(:block =&gt; 'users', :name =&gt; user, :size =&gt; size.to_i/1000000.0)
+      add_activity(:block =&gt; 'sites', :name =&gt; server.name, :size =&gt; size.to_i) # Size of activity based on size of request
+      add_activity(:block =&gt; 'users', :name =&gt; user, :size =&gt; size.to_i)
 
       add_activity(:block =&gt; 'content', :name =&gt; 'file')
       add_activity(:block =&gt; 'status', :name =&gt; status, :type =&gt; 3) # don't show a blob</diff>
      <filename>lib/parsers/pureftpd.rb</filename>
    </modified>
    <modified>
      <diff>@@ -7,12 +7,14 @@
 class Server
   attr_reader :name, :host, :color, :parser
 
+
   def initialize(options)
     @name = options[:name] || options[:host]
     @host = options[:host]
     @color = options[:color] || [1.0, 1.0, 1.0, 1.0]
     @parser = Parser.registry[ options[:parser] ] || Parser.registry[ :apache ]
     @blocks = options[:blocks]
+    @max_size = 1.0
 
     # instantiate the parser
     @parser = @parser.new( self )
@@ -21,6 +23,14 @@ class Server
 
   #block, message, size
   def add_activity(options = { })
+    size = $CONFIG.min_blob_size
+    if options[:size]
+      size = options[:size].to_f
+      @max_size = size if size &gt; @max_size
+      size = $CONFIG.min_blob_size + ((size / @max_size) * ($CONFIG.max_blob_size - $CONFIG.min_blob_size))
+      options[:size] = size
+    end
+
     block = @blocks[options[:block]].add_activity( { :name =&gt; @name, :color =&gt; @color, :size =&gt; $CONFIG.min_blob_size }.update(options) ) if (options[:block] &amp;&amp; @blocks[options[:block]])
   end
 
@@ -29,4 +39,8 @@ class Server
     block = @blocks[options[:block]].add_event( { :name =&gt; @name, :color =&gt; @color, :size =&gt; $CONFIG.min_blob_size}.update(options) ) if (options[:block] &amp;&amp; @blocks[options[:block]])
   end
 
+  def update
+    @max_size = @max_size * 0.99 if(@max_size * 0.99 &gt; 1.0)
+  end
+
 end</diff>
      <filename>lib/server.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>caa4207f323df8c36f2e6324be5cfc630923e087</id>
    </parent>
  </parents>
  <author>
    <name>erlends</name>
    <email>erlends</email>
  </author>
  <url>http://github.com/Fudge/gltail/commit/a853d3466d28ad57863a1709fb1aad0da8ef2eb8</url>
  <id>a853d3466d28ad57863a1709fb1aad0da8ef2eb8</id>
  <committed-date>2007-10-17T13:00:49-07:00</committed-date>
  <authored-date>2007-10-17T13:00:49-07:00</authored-date>
  <message>- Set blob colors from Parser#add_activity
- Save max size for activities, and scale accordingly
- Decay saved max size
- Configure highlight_color from config.yaml
- Colors should work better (no need to go over 1.0 for values)
- Parse and merge common user-agents
- Generalize Rails style urls for Rails parser
- Bounce! (space)</message>
  <tree>4b71920cfcd38fb57fe5a0a23ebc87778533a6b3</tree>
  <committer>
    <name>erlends</name>
    <email>erlends</email>
  </committer>
</commit>
