forked from DOMjudge/domjudge
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
1354 lines (1297 loc) · 69.7 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
DOMjudge Programming Contest Judging System
Version 8.3.1 - 13 September 2024
---------------------------------
- Create autoload_runtime.php as normal user to prevent a composer warning.
- Fix saving new problems with problem statement from web UI.
Version 8.3.0 - 31 May 2024
---------------------------
- [security] Close metadata file descriptor for the child in runguard.
- Document that minimum PHP version is now 8.1.0.
- Upgrade Symfony to 6.2 and upgrade other library dependencies.
- Show link to problem text on jury problem overview and contest detail pages.
- Add label to teams to be in sync with ICPC CCS spec.
- Add feedback/teammessage.txt for automated teamfeedback, see: #2016.
- Clarifications can now use markdown syntax.
- Upgrade Bootstrap to 5.2 and dependent components.
- Bug fixed to correctly select current user during configuration of installation.
- Properly fix removal of problem/submission data.
- Filter away balloons of jury members in balloon runner interface.
- Fix upgrade path for executables, see: #1826.
- Collect compiler and runner versions before compilation, useful to compare
judgehosts.
- Various improvements to shadow config used at ICPC World Finals.
- Show the historic timelimit which was used when judging the submission.
- Fixes to the documentation and import of problems with @EXPECTED_RESULTS@
tags.
- Allow filtering on affilition in submission page for jury for multisite
contests.
- Add preview of the contest problemset to the jury page before contest
start.
- Add optional Adminer for easy database access.
- Fix medal awards when skipping categories.
- Add direct button to public page for registering when enabled.
- Scale batch size of judge tasks dynamically.
- Rename room to location for teams.
- Add option to upload contest problemset document.
- Improve on the advice for rejuding on config changes, only when relevant
advice to start a rejudging, similar for updating the scoreboard cache.
- For interactive problems: add explicit statement to when one of sides of
the interactions ran closed their output.
- Allow importing a (generic) contest warning which is displayed on the scoreboard.
- Added option in the dj_setup_database to make dumps, useful before major
upgrades and during the contest before problem imports.
- Fixed some bugs to become OpenAPI spec compliant again.
- Prevent a race condition leading to two submissions receiving the same
colour balloon.
- Compile executables with `-std=gnu++20` now.
- Record the testcase directory for judging runs, this makes investigating
easier.
- Set default C/C++ standards in configure script, we intend to ship all
scripts free of warnings/errors.
- Respect basic authentication in the URL for the import-contest when .netrc
exists.
- Fix CORS header for API to make extending with other tools easier.
- Fix eventfeed when SQL commits happen out of order to send all events.
- Lazy load the team pictures for the scoreboard, to prevent spamming access
log with HTTP404s
- Make TLE detection more robust for interactive problems.
- Added option for ICPC online scoreboard with no rank displays.
Version 8.2.0 - 6 March 2023
----------------------------
- Various bugfixes & UI improvements.
- Add support for Rust as submission language.
- Add teamphotos to scoreboard zip.
- Add jury option to to download ZIP with all problem samples, attachments
and problem statement.
- Extend team import with optional room and other API extensions, see the API
doc for further details.
- Drop support for shadowing a single contest from multiple sources.
- Log account logins via API separately.
- Add support for PHP v8.2.
- Upgraded library dependencies.
- Removed output of detected entry point to teams.
- Added option to add custom apt repositories to judge chroot.
- Added CLI script to configure the domserver with a yaml file.
- Changed activation behaviour of contests imported via UI to be directly
available.
- New option added to reset login status of teams between contests.
- Highlight submissions which were judged with compiler flags which since
have changed. Useful when you find wrong flags during the contest.
- Handle network errors for judgedaemon when domserver is unavailable.
- Added super lazy mode useful for ICPC analyst instances. Here nothing is
judged unless manually requested.
- Split problem import messages in info/warning/danger, to make sure errors
are not missed when importing.
- Store user login sessions in database.
- Contest import CLI script is now rewritten in python.
- The example test problems are now imported via the contest package format.
Version 8.1.0 - 1 June 2022
---------------------------
- Document that minimum PHP version is now 7.4.0.
- Add support for PHP 8.1.
- Upgrade Symfony to 5.4 LTS and upgrade other library dependencies.
- Replace calls to deprecated `strftime` with `date`. Note: if you have
configured a custom `time_format`, you need to update it to the format
supported by `date`.
- Dropped the presentation-error verdict, databases from before DOMjudge 5.0
will be altered to replace the verdict with wrong-answer.
- Changed API import to give admin users a team.
- Balloon users can now be created via the API.
- Shadow mode will now fix missing data by reading from the primary CCS.
- Fixed cgroup naming for docker to prevent sharing the same container.
- Removed python2 in the chroot, remove python3 in favor of pypy3 in chroot.
- Added support for sentry for logging.
- Added default external IDs on all places.
- Fixed medals on scoreboard for filtered scoreboards.
- Dropped old balloons CLI.
- Reimplementation of runpipe for interactive problems.
- Individual files can now be removed from executables.
- Added mysql socket option, for when port/IP is not used.
- Added support for accounts.{yaml,json} for import script.
- Added support for judgeremaining for problems.
- Add option to delete existing testcases/attachments/other data when
importing a problem.
- Dropped support for ICPC results HTML export feature.
- Balloon runners can now always see the frozen scoreboard.
- Custom CSS can now be used for the login page.
- Removed option to use multiple timezones in same contest.
- Fixed kotlin compile script for modern versions.
Version 8.0.0 - 30 January 2022
-------------------------------
- Compilation of submissions now happens inside the chroot.
NOTE when upgrading: you need to install compilers and other
dependencies for the compile phase inside the DOMjudge chroot.
Also you need to remove the '--tmpdir' switch from the mktemp
call in the java_javac_detect compile script (when using this).
- Python 3 now uses pypy by default and is default enabled on new
installations.
- Improve performance with large amounts of affiliations.
- Judging verifier is now also available to jury users.
- Search for @EXPECTED_RESULTS@ marker in all submitted files
to validate test submissions.
- Allow users to specify their full name in self-registration.
- Add metrics API endpoint for use with Prometheus.
- Always show banner.png, if present, on the public scoreboard.
- Upgrade bundled libraries.
- Add problem statistics to team/public problem pages.
- Add support for specifying database port.
- Update API documentation to OpenAPI 3.
- Add support for loading custom CSS and JavaScript.
- Speed up loading team pictures and affiliation logos.
- Add filter on result to jury submissions page.
- Add API actions to create single team, team affiliation, team category and user.
- Add problem attachment support.
- Judge a single submission on multiple judgedaemons in parallel if the
judging queue is empty.
- Limit the size of the program output stored by default in the database;
with a button in the UI to retrieve the full output.
- Add new clarification handler role.
- Reduce cost of the hash function to handle large amounts of accounts when
generating or storing passwords.
- Improve API action to add submission to adhere to the CCS spec.
- Add API action to create clarification following CCS spec.
- Add support for showing (pending) awards on the scoreboard. Thanks @shuibinlong!
- Remove JudgehostRestriction feature due to new Judgehost API.
- Replace C++ submit client with (standalone) Python version.
- Remove old way to run interactive problems.
NOTE when upgrading: if you have an old-style interactive problem, you need
to convert it to the new style (see 'boolfind' example) or change it to
include the old run_wrapper.
- Replace jscolor by coloris.
- Created insights page in current work queue
- Increase performance by not dynamically loading classes.
- Added alternative inplace install mode
- Added PHP8.0 support
- Add option to default pause new judgedaemons
- Added medals to scoreboard
- Warn contestants if file has not been modified for some time
- Make public/team pages mostly WCAG2A compliant
- Add support to import multiple accounts per team and IP addresses for users.
Version 7.3.2 - 23 November 2020
--------------------------------
- Be more tolerant of empty lines in restapi.secret.
- Fix team manual build failure with recent rst2pdf versions.
- Update URL for imports from ICPC CMS.
- Fix team count on jury contest overview screen.
- Truncate output for sample runs on team pages.
- Fix compatibility with MySQL 8.x.
Version 7.3.1 - 10 November 2020
--------------------------------
- Fix chroot install on Ubuntu 20.04.
- Fix results.hml and results.tsv output.
- Fix race condition in scoreboard related to a Doctrine bug.
- Fix having fresh data for scheduling repeated rejudgings.
- Fix clarification filter buttons when not using queues.
- Fix database user creation for MySQL >= 8.0.
- Fix warning about DataTables initialization on judgehosts page.
- Documentation improvements.
Version 7.3.0 - 26 June 2020
----------------------------
- Move specification of database configuration out of database and into
a YAML file. Also show select boxes when appropriate.
- Rename team.externalid to team.icpcid, since it is not an external ID in
the sense the other ones are.
- Add team display name support.
- Add support for importing teams, organizations and groups using JSON.
- Add script dj_judgehost_cleanup for maintenance on judgehosts.
- Team manual source is now RestructeredText.
- Log out an active user whose password is changed, and updates to the
roles of a logged in user are effective immediately.
- Allow to "delete" testcases even with associated judgings.
- Fix permissions on webapp/var/* by using group setsid bit.
- Allow public and team to view submissions, awards and clarifications
using the API.
- Allow users with API_READER role to fetch inactive contests
- Drop smart renaming for Java public classes.
- Show browser notifications also for new balloons to be handed out.
- Add option to allow teams to download their own submission.
- Change shadow import to read data from a configuration file and store
a copy of the feed.
- Pin scoreboard header to top when scrolling page.
- Add console command to reset the password of any user.
- Many code cleanups, improvements and tests.
- Upgrade Symfony to 4.4 LTS and upgrade other library dependencies.
Version 7.2.1 - 6 May 2020
--------------------------
- Various documentation fixes and improvements.
- Fix filtering balloons by affiliation (Thanks Michael Baer).
- Fix audit log entries for newly created entities.
- Small fix to make API delete events adhere to the specification.
- Fix some edge-case bugs in the scoreboard calculation.
- Fix arguments to UploadedFile().
- Fix SQL group by leading to errors on newer DB versions (Thanks
Michael Baer).
- Fix submit help to work when baseurl is invalid.
- Various small fixes to the build/install system.
- Fix user IP address field to accept IPv6 addresses.
- Fix and document static scoreboard contest selection feature.
- Fix a sed error message on internal compile error.
- Fix link to documentation from the admin index page.
- Fix problem text links from scoreboard header.
- Fix that country select fields are hidden when show_flags is off.
- Fix editing testcase descriptions.
- Fix encoding of multiline testcase descriptions in submit graphs.
- Fix hardcoded domjudge username in SystemD service file.
- Fix compatibilty with PHP 7.4.
- Document that minimum PHP version is now 7.2.5.
Version 7.2.0 - 4 January 2020
------------------------------
- Rewrote documentation into a completely new DOMjudge Manual.
- Reduce page load times and memory requirements, especially for contests
with many problems.
- Add DB indices to improve event log updates.
- Fix doctrine query that lead to a polluted query cache.
- Multiple bug fixes with respect to first to solve.
- Fix contest clock update.
- Improve submission and judging run display in jury interface.
- Always display a flash message for skipped submissions in rejudgings
- Restrict displayed balloons to currently selected contest.
- Show affiliation logo's on jury affiliation overview page.
- Fix AJAX refreshes with multiple active contests.
- Add support for testdata subgroups.
- Store original input filename of testcases.
- API: Add endpoint to get users.
- API: Improve awards endpoint.
- API: Add endpoint to upload contest.yaml, groups.tsv, teams2.tsv, and
accounts.tsv.
- Update compiler options in internal build scripts.
- Update default configuration values to modern system limits.
- Add simple script to import a whole contest from a CLICS compatible
ccsconfig directory.
- Add a command to merge scoreboards from multiple ICPC Contest API
endpoints (#632, thanks Ragnar Groot Koerkamp).
Version 7.1.1 - 20 October 2019
-------------------------------
- Update documentation for Fedora (Thanks Marc Furon!).
- Fix printing in jury interface.
- Fix registration action.
- Fix showing user last login info.
- Fix balloon page when we do not have award info.
- Fix logging events that require higher permissions than the user
that triggers the action has.
Version 7.1.0 - 25 September 2019
---------------------------------
- Minimum PHP version is now 7.1.3.
- Use optimized composer autoloader.
- During self-registration team name and affiliation can now be specified.
- Judgedaemon will now keep retrying when an endpoint is unavailable.
- Store external judgements and runs.
- Move external CCS submission detail URL to database configuration.
- Add support for showing shadow differences and external judgements.
- Reduce dependencies of Judgedaemon.
- Also install genrestapicredentials on judgehost.
- Submit client will error early and explicitly when API calls fail.
- Improve balloons page and make filtering persist when reloading.
- Split up contest.public into contest.public and contest.open_to_all_teams,
allow public contests with a limited set of teams and private contests
with all teams.
- Upgrade Symfony and dependencies to version 4.3.
- Use Doctrine for migrations and initial data.
- Add option (enabled by default) to limit files passed to
language compilers by langauge extension list.
- Add option to add a whole team category to a contest.
- Allow admin to specify print command using configuration setting.
- Show metadata for judging runs.
- Restrict some API endpoints to jury or API users.
- Allow to download statistic graphs as SVG.
Version 7.0.3 - 11 July 2019
----------------------------
- Fix printing: disable debugging code.
- Fix import/export SQL query to run with recent MySQL versions.
- Make forms more robust against misconfigured application hostname.
- Fix balloons page showing random balloon results.
- Fix results.tsv export to always use externalId of team.
- Fix contest edit form interfering with countdown clock on same page.
Version 7.0.2 - 4 June 2019
---------------------------
- Fix first-to-solve indicators after applying a rejudging.
- Fix the public interface when there are no active contests.
- Fix performance when using the update_judging_seconds option.
- Fix performance of applying a rejudging.
- Fix judgedaemon error message on missing chroot.
- Fix highlighting of own team row in team scoreboard.
- Fix some title elements on jury submission page.
- Fix type error on jury Analysis page.
Version 7.0.1 - 6 May 2019
--------------------------
- Fix affiliation checking in Configration Checker.
- Improve feedback on errors when uploading problem zip files.
- Fix adding a team to a contest by editing the team.
- Fix submitting when sourcefiles_limit is set to 1.
Version 7.0.0 - 28 April 2019
-----------------------------
- Initial admin password is now generated on database creation, and written
to etc/initial_admin_password.secret.
- Rewrite the interface in Symfony and Bootstrap. Add many UI
improvements in the process.
- Rewrite API in Symfony, expose Swagger docs.
- Rewrite jury analysis page.
- Make interactive problem support more robust.
- Fix first-to-solve check and make it consistent across UI and API.
- Change judging directory layout to be hierarchical, i.e. to
output/judgings/$judgehost-0/endpoint-default/$cid/$sid/$jid/.
- Add explicit config check for max test case size and max_allowed_packet.
- Add API endpoint to import problems to an existing contest.
- Improve judgedaemon performance. New setting update_judging_seconds that
allows to control how often updates are sent back; less often is faster.
- Improve IP authentication and add X-headers based auth method.
- Improve submit client usability.
- Add support for the R programming language (#516 thanks Michał Kaczanowicz).
- Add support for the Swift programming language.
- Add support for creating a writable tempdirectory for submissions.
- Add option to download all sample files of a problem in a single zip.
- Upgrade Symfony to 3.4.
- Upgrade jQuery to 3.3.
- Upgrade Bootstrap to 4.1.
- Remove old v3 API.
- Remove combined_scoreboard tool.
- Removed eventdaemon again and moved its logic to the event feed API
action and just before inserting other events.
Version 6.0.3 - 15 December 2018
--------------------------------
- Fix a race condition in runguard where in rare cases not all output was
read from a pipe, resulting in wrong-answer verdicts.
- Document that php-intl is now a requirement and fix results export.
- Fix problem name sanitizing in zip upload.
- Improve error detection while uploading test cases.
- Don't break judgedaemon if in/output are missing for a testcase.
- Fix scoreboard summary row when affiliation logos are enabled.
- Do not try to set session params, fixes notices in newer PHP versions.
- Remove mention of obsolete AUTH_METHOD configuration variable.
- Fix problem import from Baylor after API change.
- Set MySQL charset to UTF8mb4 for security and Emoji reasons.
- Fix for modifying a user when the user has no roles.
- Fix that users with balloons-only privileges could view more contest
data than was strictly necessary.
Version 6.0.2 - 22 October 2018
-------------------------------
- Fix config check for default admin password.
- Fix balloon daemon for changed database structure.
- Fix flash message on login page used after self-registration.
- Fix scoreboard layout issue by preferring Roboto over sans-serif.
- Fix a bug when submitting with entry_point containing spaces.
- A few more fixes for potential errors.
Version 6.0.1 - 23 September 2018
---------------------------------
- Security: disallow login for disabled user accounts.
Thanks Henk van der Laan for reporting.
- Fix eventlog for problems type.
- dj_make_chroot: also install pypy for Ubuntu variant.
- Finalise contest: fix all clarifications answered check.
Thanks Thomas Verwoerd for reporting.
- Clarify label for same-judgehost judgehost restriction.
- Allow to import jury submissions without entry points.
- Fix change contest dropdown when using Nginx.
- API now also returns non-public contests for jury users,
and non-public contests for users that are in them.
- Fix DOMjudge logo display on Jury home.
- Fix styling of navbar for non-started contest.
Version 6.0.0 - 4 September 2018
--------------------------------
- Do not show affiliations more than once in pre-contest list.
- Fix display of timelimits in team problem overview.
- Improve SQL migration script.
Version 6.0.0RC1 - 28 July 2018
-------------------------------
- Minimum PHP version is now 7.0.
- New layout for team and public web interface including improved
scoreboard layout.
- Add "entry point" field for submissions to override auto detected
main class or file.
- Add clarification queues and allow to send canned answers.
- Add eventdaemon to create some entries for event-feed API endpoint.
- Update API to conform to ICPC Contest API specification.
- Allow installing DB default data and examples separately.
- Add option to disable starttime (pause countdown).
- A contest can now be finalized (results declared final).
- Allow to disable affiliation logos if desired.
- Reduce memory reserved for JVM overhead and make stack size
configurable in Java compile script.
- Allow configuration variables to be publicly viewable or not.
- Judgedaemon will now report 'internal error' on more failure
conditions instead of just bailing out.
- Jury edited submissions will be automatically 'claimed' by that user.
- Include team location in header of documents printed.
- No longer pass ONLINE_JUDGE and DOMJUDGE directives to submissions.
- Fix runguard bug when stdout/stderr are not redirected to file.
- Add helper script dj_run_chroot to perform chroot operations.
- Support integration with ICPC Analytics' iCAT.
- Migrate (parts of) the API and webpages to Symfony.
- Use d3 charts instead of float for statistics.
- Update ACE editor to version 1.3.3.
- Removed likely unused Dutch translation of team manual.
- Removed static_scoreboard script, use static=1 URL parameter via HTTP.
- Many small issues fixed and documentation improvements.
Version 5.3.3 - 30 July 2018
----------------------------
- Executables: allow edits only by admin.
- Allow build with PHP >= 7.2.
Version 5.3.2 - 29 December 2017
--------------------------------
- Fix runguard crash when deleting cgroups (#311).
- Parse team IDs more flexible in accounts.tsv import (#310).
- Add documentation on Apache KeepAlive settings.
Version 5.3.1 - 2 November 2017
-------------------------------
- Fix runguard reusing cpuacct cgroup potentially giving wrong runtimes.
- Increase length of auditlog.action DB column, fixing SQL error when
updating some configuration settings (#308).
- Fix testcase download filename.
- Various small documentation fixes.
Version 5.3.0 - 21 October 2017
-------------------------------
- Add support for Kotlin by mounting /bin in chroot environment.
- Add options to have second scoreboard resolution and to suppress
problem information from the scoreboard. Thanks Marc Furon.
- Change judging feedback dir ownership after compare script ran.
Fixes a crash when output validators have stderr output.
- Fix display of user IP address on jury interface.
- Various fixes to compile scripts.
- Fix automatic setting of clarification category in jury interface.
- Allow jury to view problems before contest start.
- Various small fixes to test sources.
- Delete team scoreboard cache data when deleting a team.
Version 5.2.0 - 3 October 2017
------------------------------
- [security] bind PHP session cookie to specific web URI to prevent
sharing sessions between different websites on the same host.
- [security] Add RUNGROUP configure setting to make sure that submissions
do not have access to group root files. (#250 thanks Richard Lobb)
- Allow team to download testcase data marked as 'sample'.
- Add icons to menu bars.
- Allow to filter submissions on team, problem, language.
- Show when a problem can not be judged on any judgehost.
- Add "internal error" messages to deal more graceously with judgehost
problems e.g. due to faulty compile or compare scripts.
- Detect low disk space on judgehosts and decrease space usage.
- Support OpenID Connect as login authentication provider.
- Various improvements to the import/export functionality.
- Use current contest as default when uploading problem archive.
- Allow to add user during team creation in UI.
- Make problem texts always downloadable for jury.
- Decode HTML entities for proper display of error messages in
submit client.
- The event feed and REST API now comply with ICPC WF 2016 specs.
- Disallow deleting a judgehost that has performed judgings,
since the dangling reference from the judging table makes
submissions being rejudged again.
- Performance: merge jury and public versions of cache database
tables into single tables. Please refresh scoreboard cache after
upgrade.
- Make Linux cgroups a requirement: running Java without it has
become too painful with memory overheads, also when compiling.
- Add 'output-limit' verdict.
- Renamed dj-setup-database to dj_setup_database for consistency
with other script names.
- Update ACE editor to version 1.2.6, jQuery to version 2.2.4,
and JavaScript Cookie to version 2.1.3.
- Implement better password hashing (#237 thanks Bert Peters).
- Allow float timelimits (#235).
- Add filtering to balloons page (#251 thanks Michael Baer).
- Changed semantics of dj_file_contents_get() optional size argument.
- Make storage and display limits for output/error files configurable.
- Changed special case handling of color name/hex conversion functions.
- Update make_chroot, merge Debian and Ubuntu versions, and other fixes.
- Add option -y to force yes to some make_chroot script questions.
- Many smaller bugfixes, improvements and documentation updates.
Version 5.1.0 - 7 December 2015
-------------------------------
- Minimum PHP version is now 5.4.
- Minimum MySQL/MariaDB version is now 5.5.3.
- More pervasive UTF-8 support.
Also introduces new DJ_MYSQL_COLLATION configuration setting.
- Remove CHROOT_SCRIPT configuration setting: automatically run
chroot-startstop.sh if a pre-built chroot tree is found.
- Update ACE editor to version 1.2.2, JScolor to version 1.4.5.
- Support microsecond resolution contest times and timezones.
- Port XML event feed from ICPC-live branch.
- Port clarification categories feature from ICPC-live branch.
- Merge Debian/Ubuntu chroot scripts and add minor fixes.
- Fix float compare script output and relative checking.
- Fix various small bugs in problem ZIP import.
- Fix ACE editor to resize after tab change (#145).
- Fix variance calculation in judging_statistics script.
- [security] Disable GCC family automatic language detection to
prevent submitting other languages or object/executable code.
- Write compare script errors to logfile (#179).
- Substitute invalid Unicode characters instead of producing
blank output.
- Various smaller fixes and improvements to the jury interface.
Version 5.0.0 - 11 August 2015
------------------------------
- Removed support for 'presentation-error' judgement.
- Various documentation improvements.
- Preserve aspect ratio when creating testcase image thumbnails.
- Fixed bug that REST API scoreboard "solved" was always true.
Thanks Shuhei Takahashi.
- Make REST API return properly typed values. Thanks Shuhei Takahashi.
- Synchronise selected contest between jury/team/public interfaces.
- By default only refresh caches of the selected contest.
- Show differences of a resubmission with the original submission.
- Fix length of role DB field. Thanks pinkston3 for pointing out.
- Update ACE editor to version 1.2.0.
- Update jQuery to version 2.1.4.
- Update autoconf M4 macros from upstream.
- Miscellaneous smaller fixes.
Version 5.0.0 Release Candidate 1 - 7 July 2015
-----------------------------------------------
- Add support for the problemarchive.org problem package format, thereby
dropping support for our custom format. In particular, the specification
of compare scripts has changed.
- Add support for multiple simultaneous contests.
- Add support for HTML5 desktop notifications of clarifications,
judgings and judgehost status (#133).
- Add support for optional user self-registration.
- Add support for problem points, allowing one to assign different
scoring weights to diffent problems in a contest.
- Add selection options for rejudging, and preview rejudging results
before applying them.
- Add optional per problem memory/output limits (Closes #152).
- Apply runguard limits also to compare scripts (#68).
- In runguard, kill all remaing processes in the cgroup at the end
of the run; preventing leftover processes in corner cases like
detaching from itself.
- Allow to add restrictions on contests, problems and languages to
judgehosts.
- Allow judgedaemons to query multiple domservers.
- Allow storing optional descriptive image for each test case.
- Add support for accounts.tsv import, results.tsv and userdata.tsv export.
- Add support for additional per-team penalty time (can be negative).
- Move checktestdata to stand-alone repository.
- Update dj_make_ubuntu_chroot to Trusty (#139, thanks Ruud Koot).
- Fix diff display on team submission output page when showing the
result of sample testcases is enabled (#137, thanks Ruud Koot).
- In Haskell run script, set maximum stack size to someting small to
prevent ghc from running out of memory (#138, thanks Ruud Koot).
- Update ACE editor to 1.1.8, JScolor to 1.4.4.
- Improve installation on and documentation for Red Hat(like) Linux.
- Root is not required anymore for 'make install'.
- Raise minimum required PHP version to 5.3.3.
Version 4.0.0 - 22 July 2014
----------------------------
- Fix chroot create script when using an APT proxy.
- Fix broken link to problem download for teams and public.
- Small tweaks to new judgehost load display.
- Display problem/language name instead of ID above submission lists.
- Install ACE and flot Javascript library files.
- Rename SQL upgrade snippet to release name.
- A few miscellaneous minor code improvements.
Version 4.0.0 Release Candidate 1 - 8 July 2014
-----------------------------------------------
- checktestdata logical operators are now '&&' and '||'.
- Introduce REST API; used by judgedaemon and submit client to communicate
with domserver. API is not officially declared 'stable' at this point.
- Removed submitdeamon; submit client now always uses the REST API.
- Removed xml plugin interface; use the REST API instead.
- Move nearly all judgehost configuration to the database, making it
controllable centrally from the DOMjudge web interface, including all
compile and check scripts.
- Problem, team and affiliation now have a numeric auto-incrementing ID.
Problem short names now need to be unique per contest, but not globally.
- Redesign authentication system: there's a single set of users for all
interfaces, which may have different roles, such as team or admin.
- Submitclient now also works with user/password authentication.
- New authentication scheme 'external' leverages Apache to provide a
REMOTE_USER value.
- New scoreboard layout: more compact, affil. logos replaced by names.
- Store timestamps in database as Unix epoch, independent of time zones
with subsecond resolution.
- Store recognized language extensions in database and query from
submit client through REST API.
- Show diff of team and reference output even if run stopped prematurely.
- Make timelimit overshoot margin configurable.
- Judge too-late submissions without scoring them (Closes #99).
- Update jscolor and sorttable javascript to latest upstream versions.
- Misc. minor bugs fixed reported by Coverity scan.
- Replace flex++ by flexc++, fixes a missing build dep. and code cleanup.
- Add support for new languages: Prolog, Ruby, JavaScript.
- Replace GeSHi syntax highlighter with Ace javascript code editor.
- [security] Compile as unprivileged user to prevent compile-time access
to e.g. testdata files.
- Added rankcache_* tables to improve scoreboard page for large contests
(thanks to the Amrita people), renamed scoreboard_* tables to match.
- Added support for publicly visible sample testcases.
- Move compile/run/compare scripts to database (Closes #123).
- Add option to have compiler-error not add penalty time (Closes #127).
- Gather and store metadata from runguard and start work to completely
separate program/runguard stderr output (Closes #122).
- Add statistics page with a graph of submissions during the contest.
- Add ICPC import/export, both via TSV files and via their web service.
- Notify admin of judgehosts that are down by indicating this in the
menu bar.
- Overhauled layout of submission detail page.
- Changed Java classname detection to use reflection instead of javap.
- Added script misc-tools/judging_statistics to extract various
statistics (variations in judging results and runtimes, etc.).
Version 3.4.0 - (unreleased)
----------------------------
- Add problem text to database and support viewing in PDF/HTML/ASCII.
- Add optional printing support via DOMjudge web interface. Using
local system printing remains the preferred way.
- Change non-lazy evaluation to also return the result to the team
as soon as possible while continuing to judge the remaining test
cases.
- Display verification comment for previous run.
- Check IP address equivalence with inet_pton.
- Do not apply framing protection to public interface.
- Update GeSHi to upstream 1.0.8.11.
- Update JSColor to upstream 1.4.0.
- Increase highlighted source limit from 10 kB to 32 kB.
- Add mapping to GeSHi highlighting to translate DOMjudge language
ID's to their GeSHi counterparts.
- Move configuration data to separate SQL file.
- Store CPU/wall time limits in double to prevent overflows.
- Fix bug: CSS class missing in disabled balloon interfaces rows.
- Fix bug: link to CSS colour names reference was broken.
- Make Java class name detection compatible with Java 7.
- Make Haskell example source compatible with newer GHC versions.
- Make default colour for observers grey instead of yellow.
- Fix bug: buffer underflow bug in runguard when compiled on Ubuntu 12.04:
added check for closed pipe (file descriptor == -1). Thanks Keith Johnson.
- Fix bug: change absolute time strings for those times which are specified
as relative time when starttime was changed by "start now".
- Fix bug: long overflow in runguard / output_exit_time.
- Fix bug: add missing $pagename to check_judgings.php.
- Fix bug: race condition in runguard where the forked child terminates
before the parent could setup a signal handler.
- Fix bug: handle gracefully events deleted from the database.
- Fix bug: submitclient compile error with g++ (Debian 4.7.1-2) 4.7.1.
- Don't let sudo try to read passwords.
- Various documentation improvements.
- Add cascading delete on submitid to balloons table.
- Support stringwise token compare and ignoring whitespace in check_float.
- Add option to generate testdata and add ASSERT to checktestdata syntax.
- Extend checktestdata syntax: arrays, strings, UNIQUE, INARRAY tests.
- Correct mount bind option, see Debian bug #677815. Ported from
WISVCH/DOMjudge tree at GitHub.
- Add program to "relive" simulate original contest submissions.
- Add option to display favourite teams on top of the public scoreboard.
- Make format of timestamps in web interfaces configurable.
- Use PHP multibyte string functions where applicable. Thanks Vladimir
Vassiliev for the bug report.
- Use HTML5 for multiple file uploads and form validation, when available.
- Fix: close all file descriptors when daemonizing (no PHP solution yet).
- Upgrade to PHP's 'mysqli' extension instead of the legacy 'mysql'.
- Switch make_chroot to Debian 7.0 'Wheezy' and OpenJDK 7.
- Add support for memory control in rungard with Linux cgroups.
Patch provided by Keith Johnson.
- Prevent network access from runguard when cgroups are enabled.
- Pass ONLINE_JUDGE and DOMJUDGE directives to submissions.
- Add support for new languages: Python3, Ada, Fortran, Lua, Scala.
- Make it explicit that rejudging 'all' does not include CORRECT submissions.
- Allow to (de)activate judgehosts on the judgehosts overview page.
- Apply the z-index to the clock only, otherwise the refresh button
stops being clickable.
- Remove unnecessary sleep from submitting test sources.
- Run C preprocessor on Fortran source to be able to pass defines.
- Also install an Ubuntu chroot creation script.
- Support deleting a problem description.
- Move the balloon daemon configuration into domserver-config, and install
it by default.
- Mount lib64 in the chroot if it exists.
- Allow multiple judgedaemons to be run on the same host, and use cgroups
to bind each to a separate CPU core.
- Judgehosts will auto-register with the domserver and do not need to be
manually listed beforehand.
- Fix bug that teampage_first_visit would be updated on each visit.
- Update clock in web interface each second through JavaScript.
- Further tighten permissions on files written when judging submissions,
to make the case when not using chroot more secure.
- Add c++ as a language extension for C++.
- Display a total and maximum of all testcase runtimes for a submission,
and always print runtimes with two decimals.
- Judgehosts update their status after each testcase to prevent
warning/critical status with many testcases.
Version 3.3.0 - 29 May 2012
---------------------------
- Fix bug: don't show unverified submission details if verification is
required. Thanks Keith Johnson.
- Add sourcefiles_limit setting, upper bound on the number of source
files in one submission.
- Improve polishing of multifile submission handling.
- Preselect original text in clarification form.
- Remove judgehost from submission overview tables.
- Calculate team that first solved a problem per sortorder.
- Do not show submission form when contest has not yet started.
- Add button to submission list to view only unjudged submissions.
- Improve performance of checkconfig under large databases.
- Change runguard kill process to remove unnecessary sleep()s.
- Create chroot once per judging instead of once per testcase to
remove overhead of repeated chroot start/stopping.
- Make chroot bind mounts read-only for extra security.
- Refresh scoreboard cache only after a warning has been acknowledged.
- Add advisory locking to calcScoreRow() updating of scoreboard cache,
to prevent accidental high database load.
- Check for unfinished judgings on judgehost startup and give
them back to the queue.
- Display problem description in submit confirmation dialog.
- Add configure-variables-interpolated sudoers.d-snippet.
- Fix JS sorting on id for several tables.
- Sort problems from the current contest to the top on the problems
overview page.
- Add optional judge comment field to judging verification.
- Redirect to originating page after verification of submission.
- Move checktestdata grammar specification to separate file
and publish as public domain.
- Add possibility to export a problem to a zip-bundle.
- Add specification of DOMjudge problem format zip-bundle.
- Add admin button to rejudge all submissions in the current contest.
Version 3.3.0 Release Candidate 1 - 30 April 2012
-------------------------------------------------
- [INCOMPATIBLE CHANGE,security] enable cURL SSL host/peer verification
in the command line submit client. This requires any self-signed
certificates now to be available to libcURL on a team machine.
- Add compile script and test source for language 'bash'.
- Prioritize to team's last judging (port from ETH tree).
- Fix testing for empty output with strlen (port from ETH tree).
- Update M4 macro's from upstream, fixing some problems.
- Fix configure script to allow subdir customization in FHS mode.
- Upgrade included dash shell to version 0.5.7-2.
- Use Debian 6.0 Squeeze for building Java chroot.
- Fix warning of runguard trying to reset resource limits to infinity.
- Fix minor bug in diff output coloring due to line number overflow.
- Rename SQL upgrade snippets and add README file for these.
- Raise minimum required PHP version to 5.2.
- Judges now use individual accounts to access the jury webinterface,
which will be used to track claiming, verification, etc.
- Add auditlog for all actions changing contest state.
- Protect against clickjacking by forbidding framing using the
X-Frame-Options HTTP header supported in modern browsers.
- Reimplement balloon tracking and notification backend.
- Display current contest prominently on contests page and provide
button to have the next contest milestone happen now.
- Add script to automatically submit solutions and clarifications.
- Remove duplicate queries in scoreboard generation.
- Add team 'enabled' switch which defaults to true, but when
disabled makes a team to immediately disappear from the
scoreboard and renders their team interface unusable.
- Support 'first for contest/team/problem' comments for balloons.
- Change ISO 3166-1 country codes from alpha-2 to alpha-3.
- Use CPU time as primary limit (port from ETH tree).
- Move checktestdata code to separate library for easier use in
stand-alone checkers, and add 'IF() [ELSE] END' syntax.
- Add option to display pending submissions on the scoreboard.
- Remove 'identify daemon' experimental code. It hasn't been
working for years and no-one discovered that.
- Remove 'lib.config' experimental library for INI-file configuration.
It was unused and we're moving to DB stored config with lib.dbconfig.
- Merge all MySQL users into one omnipotent user (previously
domjudge_jury). The differences between the levels were
getting to a point where the separation provided not enough
added benefit anymore. You should remove the users
domjudge_{team,public,plugin} from MySQL and dbpasswords.secret.
- Add configuration page to admin interface and move various variables
from etc/*-config.php to the DB configuration table.
- Support inclusion of external libraries under the lib/ext/ path.
- Include a copy of the GeSHi syntax highlighter.
- Result remapping is now done on each testcase result, in order
to avoid surprising interactions with results_prio. A message
is logged for each remapping done.
- Transparant redirection of stdio through runguard, Closes: #89.
- Display first solved in scoreboard (suggested by Andrés Mejía).
- Fix source code diff function to work with resubmitting modified
source from the jury interface.
- Support submissions consisting of multiple source files.
- Replace check_judgings script by web page in jury interface ('judging
verifier').
- Add toggle link for showing/hiding verdicts of previous submission by same
team.
Version 3.2.0 - SVN r3594 (unreleased)
--------------------------------------
- Add better support for interactive problems, add sample problem.
- New, redesigned single page "dashboard" team web interface.
- Change execute() function for more flexible I/O redirection.
- Add runpipe program for connecting stdin/out of two processes.
- Rename compare_program.sh to *_wrapper, allow symlinked usage.
- Add FLOAT command and exponentiation to checktestdata program.
- Add countdown before contest and timezone to clock.
- Add daemon support in C/PHP libraries, use for submit/judgedaemon.
- Add category to balloons list and button to view only unsent.
- Lots of small changes to C/C++ sources and build system for better
POSIX compliance and portability; support LLVM clang compiler.
- Replace bash by POSIX shell in compile, testcase_run. (Closes: #1735673)
- Create separate execdir subdir for judging. (Closes: #3041492)
- Replace setuid root installation of runguard with invocation
via sudo.
- Fix missing permissions for plugin interface SQL user.
- Remove CHROOTDIR (mountpoint prefix) variable to avoid confusion
with the directory where the Java chroot was created.
- Redirect to submissions overview page after verification.
- Fix information leak in clarification problems list. (Closes: #3096018)
- In JS problem name detection, probid needs to be casenormalised too.
- Fix websubmit when using numeric problem ID's, thanks Vladimir Vassiliev.
- Allow specification of contest times relative to starttime.
- Add toggle button for autorefresh of jury pages (port from ETH tree).
- Add support for team authentication via LDAP server (port from ETH tree).
- Pass SYSLOG variable from PHP config to C/C++ programs via environment.
- Set MySQL connection encoding explicitly. Introduces a new option:
DJ_CHARACTER_SET_MYSQL.
- Add 'frozen' flag option to scoreboard plugin interface.
- Remove language 'extension' column from SQL database, langid is now
used for source file extensions.
- Add multiselect filters on scoreboard with javascript hiding.
- Add cascaded deletes to DB tables: most data can now be deleted from
the admin webinterface.
Version 3.1.0 - 14 July 2010
----------------------------
- Add multiple testcases support.
- Add PHP session support as alternative to IP address authentication.
Based on patches by Tobias Werth.
- Bugfixes and improvements to checktestdata program.
- Fix error trapping in subshells, thanks Jan Jergus. (Closes: #2866430)
- Fix bug in lib.database.php with array_map "class::method" notation.
- Add 'enabled' field to contest to allow for easier editing.
- Only show the configured submission methods in the team manual.
- Fix install of gendbpasswords and use /dev/urandom.
- Add documentation on static_scoreboard.
- Add problem subject to clarifications, idea from DomJudge@FAU.
- Add WHILE command and tests to checktestdata syntax.
- Move PENALTY_TIME variable out of common-config into domserver-config.
- Add combined_scoreboard script to view scoreboard of multiple sites.
- The judgedaemon now tries to restore a lost db connection (Closes: #2897130)
- Fix: check for both htpasswd{,2} binaries in configure.
- Fix white problem colour by adding a circle image with black border.
- Ports from ETH tree: use pipes with wc and gcc.
- Fix bug: typo in presentation-error exitcode, and add safeguard.
- Add security: check for stale judging directories (port from ETH tree).
- Bugfix: allow zero size testcases (port from ETH tree).
- Show config checker runtime (port from ETH tree).
- Make syntax highlighting more modular, and add support for the
GeSHi syntax highlighter.
- Add sample PDF problem texts for inclusion in the database.
- Fix bug in handling of libmagic cookie.
- Refactor team authentication code to allow for other methods.
- Eliminate WEBBASEURI setting.
- Add JavaScript colour picker to balloon colour edit box, using
jscolor 1.3.1 by Jan Odvárko.
- Improve layout and usability of displayed tables.
- Add "viewing" to verification status in jury submission list, idea
from DomJudge@FAU.
- Added AWK, C# and Python language support.
- Added upgrade support for the SQL database.
- Fix some HTML escaping issues found with skipfish.
- In chroot-startstop, cope properly with /lib64 being a symlink to
/lib. Thanks Christoph Dittmann.
- Enforce the previously implicit notion that probid may only consist
of characters in "a-zA-Z0-9_".
- Fix SQL syntax error in restore_sources2db script.
- Upgrade included dash shell to version 0.5.5.1-6.
- Fix swapped error messages in submit client.
- Correctly handle empty optional diff file argument.
- Include standard C headers in misc/scanner.h.
Version 3.0.0 Release Candidate 2 - 3 September 2009
----------------------------------------------------
- Fix directory install permissions.
- Only show languages that are not submitable as 'disabled'
and show a separator between contests on the problems page.
- Minor updates to team manual.
Version 3.0.0 Release Candidate 1 - 16 June 2009
------------------------------------------------
- Raise required PHP version to 5.
- Replace included static bash by dash shell.
- Revise team manual.
- Add missing link to add testcases to a new problem.
- Fix bug causing segfaults of submitdaemon. (Closes: #2046031)
- Added script to check results of submitted test-sources.
- Added 'checktestdata' script for checking testdata via grammar specification.
- Add support for FHS directory structure installation.
- Move all configure paths to globally included paths.mk file.
- Repair broken documentation build/install system.
- MySQL table types are now InnoDB. Define foreign key relations
between tables (Closes: #2144325).
- Use db values instead of the userinput. (Closes #2144718)
- Add a FLUSH PRIVILEGES statement after user grants during
installation, as this may be necessary to have MySQL pick up
all changes correctly.
- Don't use -fstack-protector under Cygwin. (Closes: #2144713)
- Distribute prebuilt versions of the admin and judge manuals and
remove svn,expdlist downloads for the team manual.
- New compactified layout of team manual.
- Add note about Java class naming in team manual. (Closes: #2153189)
- Add Java compile script that autodetects class name. (Closes: #1964765)
- Add binary file check in commandline submit. (Closes: #2046017)
- Make HTML tables sortable in the jury view.
- Removed "feature" of only allowing alnum chars in filename base
for submit client problem parsing.
- Show truncated team names instead of logins in submissions overview.
- Fix bug of submittime==endtime not showing as too-late, thanks Tobias Werth.
- Replace 'hostname --short' option, fixing inconsistent results.
- Merge changes in ipv6 branch to trunk, IPv6 comparison not yet functional.
- Show unread clafications in the title of the team clarifications page.
(Closes: #2148054)
- Added test sources for java class name, network and root user.
- Only wrap unquoted lines in clarification texts. (Closes: #2244652)
- Only build submit client/daemon on request via configure. (Closes: #2046029)
- Flush results in config checker for better feedback.
- Fixed DB installation support with script 'dj-setup-database'.
- Update included dash shell to version 0.5.5.1-2 (Debian upstream).
- Replace beep by alert plugin program. (Closes: #1878083)
- Add functionality and fix security issue in runguard, thanks Thomas Rast.
- Check for safe_mode before diff-ing tempfiles. (Closes: #1808354)
- Proper error message when entering a team ip that's already in use.
- Remove javascript sorting from table columns where it doesn't make sense.
- Commandline submitclient supports only http by default now.
- Remove redundant copies of testdata by symlinks. (Closes #2805385)
- Java chroot script now uses Sun's OpenJDK-headless, allowing for a leaner
chroot and more supported architectures.
- Reorder source tree: removed bin dir, move test-sources to tests, cleanup.
- Fix DEBUG_JUDGE option for debugging judging backend.
- FreeBSD porting fixes, making DOMjudge more POSIX compliant.
- Make DOMjudge work when PHP's short_open_tag = Off.
- Add support for staged installs (DESTDIR).
Version 2.2.0 - 11 August 2008
------------------------------
- Do not install domjudge straight in $HOME by default.
- [security] Add sanity check in jury interface whether basic authentication
is enabled, and lock down jury inferface also for non-GET/POST requests
- Fix race condition in team password check.
- Improved MySQL query performance.
- Move .htaccess config to apache config.
- Fix 'NONINTERACTIVE' undefined (Closes: #1814594, thanks Maks Verver)
- Moved beep system call to separate function in lib.misc.{c,php}.
- Switch to UTF-8 for output. (Closes: #1742460)
- Represent balloon colours with a symbol rather than filling the background,
making the scoreboard less cacophonic. (Closes: #1808561)
- Add a web based tool for tracking balloon handouts.
- Fix C compiler warnings by using 'const char *'.
- Fix noninteractive/logging code in websubmit to restore submitclient
error parsing (Closes: #1829621).
- Fix variable name in judge/compare_program.sh.
- Added make dist target and removed generated figures.