TODO
====

Features:

- Compatibility with Zope 3.2
- Command-line option to specify a htpasswd file name for protection
- Show persistent object attributes when hovering on a link
- Figure out if it's possible to show a list of transactions
    speed test: 66428 transactions in a 2 gb data.fs take ~12 seconds to
    iterate
    another 1.6 gb data.fs with 126735 transactions took 42 seconds
    a third 8 gb data.fs with 922737 transactions took 85 seconds (this is a
    newer, faster server: disk I/O at 100 megs/s instead of 8 megs/s of the
    old one)
    [adamg: use paging???]
- Help page in a javascripty-popup (lightbox-style)

Refactorings:

- Standalone app: see if you can replace the zope publisher with something
  lightweight (WSGI?) so that you can inspect databases when their structure
  is broken (no site/unpickleable site objects)

Tests:

- Complete test coverage
    - test ZEO ClientStorage integration (that ugly inspection hack)
    - unit tests for browser view code (will likely require refactoring)
    - tests for test infrastructure (things like html pretty-printing)
    - tests for javascript
- Buildbots for various python and zope versions
- Figure out how to stop zserver worker threads that our tests leave behind
- Implement ServerController.findUnusedPort
- Perhaps subclass testbrowser's Browser and add printXPath/printCSSPath
  methods to it directly.  I'm angling to make the ugly URL transformation
  in it somewhat less ugly, since the browser knows the URL and wouldn't need
  to hardcode a reference to TestsWithServer layer
