Skip to content

Releases: ia-toki/judgels

v2.1.0

04 Aug 15:26
Compare
Choose a tag to compare

Judgels server

New features

  • User management in admin interface (#475, #476, #481, #485)
  • Role management in admin interface (#484)
  • Role management endpoint (#482)
  • Added links to WIP docs for Account management (#487)
  • Updated default statement texts based on TOKI format (#474)

Bugfixes

  • Made nav headings consistent (#477)

Judgels client

New features

  • Allowed HTML content in announcements (#469)

Bugfixes

  • Fixed duplicate API fetch when chapter submissions page has filter which resulted in wrong filter (#471)

Cleanup

  • Remove System -> Users page (#486)

For developers

  • Removed unused /api/v2/user-rating/events/latest endpoint (#468)
  • Removed unused /api/v2/users/me/{role,password} endpoints (#479)
  • Removed unused /api/v2/user-rating/events/latest endpoint (#468)
  • Merged myUser.js to user.js (0ded3a0)
  • Removed USER and GUEST from JophielRole (#480)
  • Used different port for Wiser in integration tests to prevent flaky tests (fcbfa6f)
  • Extracted Feign clients for integration tests (#471)
  • Used Collection<> instead of Set<> (#472, 1a2cb10, f470a8c, ac40a62, 45bd739)
  • Moved UserStore to the correct package (c8217ad)
  • Fixed logo positioning in README (9d89d8e)

Full Changelog: v2.0.2...v2.1.0

v2.0.2

02 Jul 13:17
f219d16
Compare
Choose a tag to compare

Judgels server

Bugfixes

  • Fixed ORDER BY clause when getting submissions for calculating scoreboard entries (#465)

Judgels grader

Bugfixes

  • A race condition was discovered where multiple worker threads are accessing the same temporary files when doing final diff scoring. Now, the diff is done in different working directory per worker to avoid the race condition (#467)

v2.0.1

25 Jun 14:07
891e553
Compare
Choose a tag to compare

Judgels server

Breaking changes

  • Removed unused POST /api/v2/contests/import and POST /api/v2/contests/export endpoints (#456, #457).
  • Removed unused POST /api/v2/profiles endpoint (#462).

Enhancements

  • Removed premature caching optimizations (#454).

Bugfixes

  • Fixed hack where we cannot infer https for showing media files from problem statement, and thus hard-coding https for non-localhost deployment (#461).

For developers

  • Decoupled Dropwizard resources from JAX-RS contract interfaces (#458, #459).
  • Use @DefaultValue annotations in resources (#460).
  • Don't return Optional<> from update operations in store layer (#455).
  • UserClient => JophielClient. ProblemClient, LessonClient => SandalphonClient. ContestClient => UrielClient (#464).

v2.0

25 Jun 10:43
Compare
Choose a tag to compare

The first Judgels release with proper versioning! 🎉

This release focuses on three things:

  • Simplicity in understanding the concepts for end users, by removing the Greek codenames from public usage. Now it is just "server", "client", and "grader".
  • Simplicity in deployment, by merging the backend microservices into one server monolithic app.
  • Simplicity in development, by having a single framework for backend, Dropwizard (removed Play framework).

Migrating from "v1"? See: https://judgels.toki.id/docs/migration-guides/1to2.

Judgels server

Breaking changes

  • Merged Jophiel, Sandalphon, Uriel, Jerahmeel into one monolithic app: "Judgels server" (Docker image: ghcr.io/ia-toki/judgels/server).
  • Problem/lesson partner permissions are simplified and collapsed into just two:
    • VIEW: can see everything,
    • UPDATE: can edit everything.
    • Old partners will have the UPDATE permission if and only if the "Is allowed to edit problem" checkbox is ticked, otherwise VIEW.
  • The default domain for "Sandalphon" web interface (now called admin web interface) is admin.* (formerly sandalphon.*)
  • Removed support for nginx config for RabbitMQ management interface.

New features

  • Changed base Docker alpine image to alpine:3.18.0 and then install Java manually (was openjdk:8u181-jre-alpine3.8).
  • Problem/lesson partners can now be added in bulk via CSV input.

Judgels client

Breaking changes

  • Renamed Raphael app to: "Judgels client" (Docker image: ghcr.io/ia-toki/judgels/client).

Judgels grader

Breaking changes

  • Renamed Gabriel app to: "Judgels grader" (Docker image: ghcr.io/ia-toki/judgels/grader).

New features

  • Graders can now sync the required test data from Judgels server automatically during grading.
  • Ubuntu 22.04 is finally supported, by bumping Isolate to 1.10.1 (from 1.8.1).

Ansible deployment

Breaking changes

  • The admin interface's default domain name is now admin.* (from sandalphon.*).
  • Changed docker restart policy to on-failure with max retries 3 (from always).
  • Changed the host mount point from /judgels to /opt/judgels.
  • Renamed file dist/hosts => dist/hosts.ini.
  • Renamed file dist/env.yml => env/vars.yml.
  • Renamed these keys in env/vars.yml:
    • judgels_{name,slogan,title,description} => app_{name,slogan,title,description}
    • raphael_url => nginx_domain_judgels_client
    • judgels_server_api_url => nginx_domain_judgels_server_api
    • sandalphon_url => nginx_domain_judgels_server_admin
    • judgels_api_url => nginx_domain_judgels_server_api
    • letsencrypt_email => nginx_certbot_email
    • jophiel_superadminCreator_initialPassword => jophiel_superadmin_initialPassword
  • Removed these keys in env/vars.yml:
    • {jophiel,uriel,jerahmeel}_url (replaced with nginx_domain_*)
    • {jophiel,sandalphon,uriel,jerahmeel,gabriel}_xmx (replaced with java_opts_*)
    • judgels_mode (always JUDGELS for now)
    • judgels_scheme (always https)
    • {db,rabbitmq}_host (always localhost)
    • db_options (always ?useSSL=false)

New features

  • New keys in env/vars.yml:
    • app_version: Docker image tag
    • java_opts_judgels_{server,grader}: JVM opts. Any opts is supported, not limited to -Xmx.
  • Allowed letsencrypt ACME challenges to be done over https.

For developers

  • Reworked the Java projects into the following subprojects:
    • judgels-commons
    • judgels-server-{api,app}
    • judgels-grader-{api,engines,app}
  • The former {Jophiel, Sandalphon, Uriel, Jerahmeel, Gabriel} microservices are now just Java packages inside the judgels-server-* projects.
  • The administration (non-React) interface is now called "Michael". It is rewritten from Play framework to just Dropwizard, with Freemarker templating. Now, all backend logic are written in just one framework (Dropwizard), reducing dev confusion.
  • Bumped minimal Java version to 11 (from 8).
  • Bumped Gradle to 8.1.1 (from 6.0.1).
  • Bumped org.glassfish.jersey.core:jersey-client to 2.30 (from 2.25.1).
  • Bumped caffeine to 3.0.2 (from 2.8.1).
  • Removed all Palantir dependencies (sls-packaging, launch-config, baseline, git-version, conjure).
  • Removed wiremock dependency.
  • Removed jquery dependency.