Things to work on:

  *  Automated self-test

  *  Add a diff option similar to --tk that shows the graphical diff in
     a web-browser instead of a Tk window.

  *  Improvements to the "grep" command:
      <ul>
      <li> Search filenames given on the command-line or all managed files if
           no filesnames are supplied
      <li> Search the check-in named on the command-line or the
           current check-out if no check-in is named
      <li> --from VERSION and --to VERSION
           options to search a range of check-ins
      <li> --timeline, --tickets, or --wiki PATTERN to search things other
           than check-ins
      <li> --before DATE and --after DATE to limit the timespan of a search.
      <li> Always output filename and line number
      <li> Only show matches not found in adjacent check-ins, unless --all
           is used.
      <li> --earliest shows only the first match and --latest shows only the
           most recent match when grepping a range of check-ins.
      <li> -l just lists matching files
      <li> --diff-only only search the difference between check-ins
      </ul>

  *  Change the PHANTOM table into a view on BLOB using a
     partial index where BLOB.SIZE&lt;0.

  *  Prohibit database writes if any query parameters have been decoded
     but the request is not from the same origin.

  *  Implement a "`fossil backup`" command using VACUUM INTO.
     <ul>
     <li> Destination can be a file or a directory
     <li> Destination can be an SCP target
     <li> "`fossil all backup E:/`" when a thumb-drive is mounted on E:
     </ul>

  *  Multiple remote repositories.  Running "`fossil push`" pushes
     to them all, as does autosync.

  *  Sync relay &rarr;  On a server, when another repository pushes to
     the server (or edits a wiki page on the server) the server
     automatically schedules a push to peer repos.

  *  Backoffice daemon &rarr; Instead of backoffice running in response
     to a web request, have a separate process that monitors multiple
     repositories and runs backoffice after "mtime" changes on the repository
     file, or periodically (every hour? every day?) in the absence of
     "mtime" changes.

  *  Update preview using XMLHttpRequest instead of reloading the entire
     page.

  *  Allow help text to be in markup, either Fossil-Wiki or Markdown.

  *  Search on help-text and/or on unversioned files

  *  Documentation on sync-via-sneaker-net.

  *  Macros or other mechanisms for embedding a last-update timestamp
     in the middle of text for wiki pages and/or embedded documentation.

  *  Add a command-line variant of the /secaudit0 page and make that command
     accessible using "fossil all".