Questions
---------

Bugs
----
If you create a symlink in installed -> a directory in available plugins, the documentation can't read the directory
under installed.

What should be the status of a build that passed, but THEN the build loop crashed? Answer: it's not a build status, but
a BUILDER status. Rolf suggested "Misbehaving". Add a story to the wiki.

CruiseControl.NET tray (projects.rxml) - what should we set for next build time?

Generalize things like build.changeset, build.output; make them write out error messages when the file doesn't exist,
or exists but is not readable

Contents of a project panel "build details" section on the dashboard can be prerendered by the builder (as Ruby,
or even directly as XHTML) and cached in the build artifacts directory (? but complexity cost may be too high ?)

Link to /builds/Project.four (project with a dot without builds) breaks, because of the way routes.rb parses the dot

To finish the RSS story:
   * RSS icon
   * Figure out why Firefox 1.5 goes nuts on Rolf's PC when you try to open a feed in it.

Committed_by and comments on the dashboard need to be limited to a certain number of characters.

Currently, we preserve newlines (looks nicer), but it may cause complications if there are too many newlines.

Comments on the dashboard need tooltips to display the full message.

If the build takes say 7501 seconds, it displays 2 hours and 5 minutes and 1 second.
  - It might be better to display 2 hours, 5 minutes and 1 second.  Or perhaps drop the seconds?

Looks like we won't detect cruise_config modification if it happens during the build

Tech
----
Update all Rails-generated files to Rails 1.2.2 versions thereof

look for a way to generate URLs in email templates through Rails' routes

Necessary
---------
* test application_helper
* builder
  * should reload server settings every time it wakes up, too

Build
-----

Dev
---
* Check what happens with parsing "svn log" output if a project has svn:externals, and there is a new revision in there
* RESTful URLs everywhere

Concerns
--------
? Look at handling of timezones when parsing/displaying revision time. Especially, SubversionLogParser.
  It may prove an interesting story (hopefully, not).

? Need VERY careful consideration about what to do with exceptions within the main build loop, 
  especially, all steps of Project#build_revision. Target audience here is the "build monkey" and the 
  design objective here is "easy troubleshooting".
    * this exception kills the builder :
        svn: Can't connect to host 'rubyforge.org': A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
        D:/src/lipid/lib/builder/lib/subversion_log_parser.rb:25:in `readline': end of file reached (EOFError)
                from D:/src/lipid/lib/builder/lib/subversion_log_parser.rb:25:in `parse_log'
                from D:/src/lipid/lib/builder/lib/subversion.rb:51:in `new_revisions'
                from D:/src/lipid/lib/builder/lib/command_line.rb:88:in `e'
                from D:/src/lipid/lib/builder/lib/command_line.rb:86:in `e'
                from D:/src/lipid/lib/builder/lib/command_line.rb:73:in `execute'
                from D:/src/lipid/lib/builder/lib/command_line.rb:72:in `execute'
                from D:/src/lipid/lib/builder/lib/subversion.rb:50:in `new_revisions'
                from D:/src/lipid/lib/builder/lib/subversion.rb:46:in `new_revisions'
                from D:/src/lipid/lib/builder/lib/project.rb:26:in `new_revisions'
                from D:/src/lipid/lib/builder/lib/project.rb:18:in `build_new_checkin'
                from D:/src/lipid/lib/builder/lib/project.rb:17:in `build_new_checkin'
                from D:/src/lipid/lib/builder/lib/schedule.rb:9:in `run'
                from D:/src/lipid/lib/builder/lib/runner.rb:51
                from d:/dev/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
                from script/builder:2
                
? Builder should do something about local changes in the checked out copy of the project. Options are: ignore them (worst), 
  write a warning, or overwrite these changes during 'svn update'
  
? Parser doesn't handle gracefully a situation when local copy is ahead of the repository (perhaps, after
  the repository was restored from a backup)
    C:/projects/lipid/builds/passing_project/work averkhov$ svn log -r HEAD:BASE
    svn: No such revision 7
    ./subversion_log_parser.rb:7:in `readline': end of file reached (EOFError)
            from ./subversion_log_parser.rb:7:in `parse'
            ...

? we need to present times in a very readable manner in the timezone of one's browser
  * 10:30 AM today, 1:30 PM yesterday, 3:00 AM 5 days ago, 5:30 PM May 3, 2006, etc
