Changes for version 6000.001 - 2018-10-03
- First stable release
 - Computation of standings now ignores jobs that are not finished
 - Set search_path in dbinit to make it easy to put all gruntmaster tables into their own schema.
 
Changes for version 5999.000_016 - 2016-03-12
- Add gm edit command
 - Make gm rerun also work with problems
 - Purge standings in finish_job
 - Purge problem/contest list after adding problem/contest
 
Changes for version 5999.000_015 - 2015-10-10
- Make t/tools.t not crash when postgres is not running
 
Changes for version 5999.000_014 - 2015-10-02
- Almost fit for a stable release (more real-world testing needed)
 - Replace gruntmaster-* tools with an App::Cmd-based script
 - Replace DBIx::Class with DBIx::Simple
 - Add sample database and more tests
 - Add gruntmaster-opener
 - Many other smaller changes
 
Changes for version 5999.000_013 - 2014-12-20
- Improve user_list performance
 - Sort problem and contest lists in user_entry
 - Add a purge sub and use it where needed.
 - Add table and column comments
 - Make job_list only return public jobs
 
Changes for version 5999.000_012 - 2014-12-13
- Add solution to pb_entry
 - Add {problem,contest}_status tables and a method that updates them
 - Improve performance of standings, move it to Result/Contest.pm
 - Add many new keys to us_entry
 - Remove support for archive standings
 
Changes for version 5999.000_011 - 2014-12-07
- Make problem value NOT NULL
 - Add contest_start and contest_stop to pb_entry
 - Use perlcritic
 - Add a "solution" column to problem
 
Changes for version 5999.000_010 - 2014-10-05
- Depend on PerlX::Maybe
 - Switch from JSON.pm to JSON::MaybeXS
 
Changes for version 5999.000_009 - 2014-09-28
- Add page information to job_list
 - Prevent experimental reference usage warnings
 
Changes for version 5999.000_008 - 2014-08-03
- Add a method for computing standings.
 - Depend on Authen::Passphrase(::BlowfishCrypt)
 - Fix bugs in user_list and set_passphrase
 
Changes for version 5999.000_007 - 2014-07-20
- Add some utility functions.
 
Changes for version 5999.000_006 - 2014-05-25
- Attempt to use correct perl in tools.t
 
Changes for version 5999.000_005 - 2014-05-17
- Depend on DBIx::Class directly
 
Changes for version 5999.000_004 - 2014-05-17
- Build-Depend on SQL::Translator
 - Fix version
 
Changes for version 5999.000_003 - 2014-05-16
- Use Postgres (via DBIx::Class) instead of Redis
 - Change license to perl
 - Improve tools
 - Add tests
 
Changes for version 5999.000_002 - 2014-02-28
- Move most problem attributes outside problem_meta
 - Add the HGETALL Redis command
 - Add functions for getting/setting the last submit time of a user.
 
Changes for version 5999.000_001 - 2014-02-02
- Initial release
 
Documentation
Populate opens table from NCSA access logs    
  Modules
command-line interface to the Gruntmaster 6000 database    
  
Base class for gm commands    
  
add a problem or contest by answering a series of prompts    
  
edit a property of an object    
  
get a property of an object    
  
list all objects of a type    
  
rerun some jobs and probles    
  
remove an object    
  
set a property of an object    
  
display human-readable information about an object    
  
Gruntmaster 6000 Online Judge -- database interface and tools    
  
Populate opens table from NCSA access logs