# Changelog This change log tracks the releases on our [pilot server](https://recodex.mff.cuni.cz/). Since ReCodEx is in fact composed of many components, we also provide a table of component version which work together in stable releases. | Date | [web-app](https://github.com/ReCodEx/web-app/releases) | [core-api](https://github.com/ReCodEx/api/releases) | [worker](https://github.com/ReCodEx/worker/releases) | [broker](https://github.com/ReCodEx/broker/releases) | [fileserver](https://github.com/ReCodEx/fileserver/releases) | [monitor](https://github.com/ReCodEx/monitor/releases) | [cleaner](https://github.com/ReCodEx/cleaner/releases) | | --- |:---:|:---:|:---:|:---:|:---:|:---:|:---:| | 22.11.2020 | v1.23.0 | v1.23.0 | v1.7.0 | v1.3.0 | ------ | v1.0.0 | v1.1.0 | | 19.9.2020 | v1.22.1 | v1.22.0 | v1.6.5 | v1.3.0 | v1.2.1 | v1.0.0 | v1.1.0 | | 13.8.2020 | v1.22.0 | v1.22.0 | v1.6.4 | v1.3.0 | v1.2.1 | v1.0.0 | v1.1.0 | | 30.3.2020 | v1.21.0 | v1.21.0 | v1.6.4 | v1.3.0 | v1.2.1 | v1.0.0 | v1.1.0 | Older versions are at the bottom of this page. ## 22.11.2020 * Total overhaul of file storage subsytem (file management integrated into core-api, fileserver no longer needed). * Several important bugs fixed in web app frontend. ## 19.9.2020 * Migrating from Mono to .NET Core 3.1. ## 13.8.2020 * Refactoring score (tests) edit form and implementing AST tree expression editor * Implementing "explain" button for (reference) solution score that shows dialog that explains how solution correctness was computed * Improving error reporting for exercise configuration (entangling error messages with links to forms where the problem should be fixed) * Adding 'detaining' flag of groups, which prevents students from leaving the group on their own * Showing evaluation failures to regular users * Multiple minor ux improvements ## 30.3.2020 * Adding comment threads for assignments (as public discussion). * Solution file limits (count and size) imposed (configurable in assignments, defaults in exercises). * New languages (runtime environments) introduced: Scala, Groovy, Kotlin, and Bash. ## 13.1.2020 * Updating main results table on GroupDetail page to display interactive dialog when clicking on particular points. * New "reviewed" flag added to assignment solutions. * Implement new type of after submit notification concerning the reviewed flag. * Dialog for editing note of a solution. * Improving appearance of solution detail table by adding links to related solutions. * Adding (un)select all/invert selection features to RTE filter of the exercise list. * Code syntax highlighting added to markdown fields. * Many UX improvements (better labels, confirmation dialogs, buttons, shortcuts, missing info, styling...). * Switching from Symfony Yaml parser to PECL Yaml for performance reasons. * Entire API automatically reformatted by PHP Sniffer to PSR-12. ## 30.11.2019 * User settings (notifications) updated, new notification added. * Filters for tags and environments added to exercise lists. * Exercise tags implemented. * Bug fixes, English labels updated. ## 26.10.2019 * Updates in SIS module -- supervisors may unbind a groups, students no longer see organizational groups. * Fixing bugs in error messages and their translations. * Group relocation feature added for superadmin. ## 5.10.2019 * Better handling of unauthorized requests. * Improving user switching controls (superadmin stuff). * Adding interface for localized API error codes in UI. * Correction in can-submit condition check (correctly restricts number of allowed submits now). ## 22.9.2019 * Adding Go and Rust programming languages. * Superadmin may change any user password without verifying old password. * Updating email templates to support localized email subjects. * Major redesign of web application core to make it compatible with new versions or React and React Router. * Improving user's badge, adding ability to change effective role (for superadmin only). ## 23.5.2019 * Implementing first version of system messages (and corresponding admin page). * Switch to 24h format for all Datetime form fields (all locales). * Assignment results page redesigned. * New admin's dialog for creating users (manually). * Improving performance of assignment best solution identification and related DB schema issues. * Fixing bugs, improving ux. ## 15.4.2019 * Haskell support added. * Several bugs fixed, including bug in judge of float numbers. ## 24.3.2019 * Prolog support added, exercise simple config form slightly refactored. * Bug fixes and minor ux improvements. ## 8.3.2019 * Bug killing spree. * SIS isolation, showing external identifiers for users. * Allowing the user to select default page (after login). * When security token expires or anonymous user attempts to access page that requires authentication, the page is remembered and user is redirected there after login. * Keeping date of users last authentication, so we can delete students that have been inactive for a long time. ## 17.2.2019 * New broker features (reading stats, freeze/unfreeze) implemented (including controls in UI). * Updating appearance of registration forms. * Multiple webapp instances may now run on the same domain (and DEMO recodex was installed on the MFF domain). * Adding a better endpoint for getting and setting exercise limits (**old limits endpoints were deprecated**). * Adding tags to exercises (API only). * Adding configuration and implicit groups to internal registration. * Migration of the entire database (and ORM model) to UTF8mb4 (finally, we can use emoji 😉). * Many bug fixes and minor UX improvements. ## 28.1.2019 * New exercise assignments page (where a list of all assignments of given exercise is presented). * Multi-assign form moved to exercise assignments page and merged with assignment edit form. * Adding "visible from" option to assignments which can postpone the publication of assignment to students. * Adding "show judge logs" option to assignments. If enabled, the students may see judge logs. * Adding "debug" flag to (re)submissions, so they can be distinguished in the submission history table. * Updating notification email templates and their localizations. * New notification created -- students may be notified when the awarded points for their solution is changed. * Judge logs are now available also for data-only exercises. * Pipeline detail page improved. ## 2.1.2019 * Shadow assignments finally completed. * Multiple bugs fixed. ## 12.12.2018 * Updated Java runner and Java exit code messages, fixed Java compilation * File tables finally show "Download All" buttons * More strict submit checks: All files given must be used within evaluation * Improved Python wrapper, Python compilation removed (so runtime errors can be reported correctly) * Added switch in user settings for solution comments notification emails * Allowing teachers to resubmit any ref. solution they can see * Improvements of emails that notify about approaching assignment deadlines * Many bug fixes and tweaks ## 26.11.2018 * Grand compilation optimization. The job config passed to the worker (which is compiled from the exercise configuration and actually submitted solution) is now much more optimized. Mainly, this means that the solution is not compiled multiple times unless really necessary. * Localized text redesigned in all forms. * Internal changes in configuration and build/deployment process of web app. * Partial implementation of Shadow assignments (not visible yet) in the web app. * Sending email notifications when new comment is added to solution. * General notifications implemented in API (not in web app yet). ## 21.10.2018 * Adding download and delete features to pipeline files. * Allowing library and object files to be passed as extra files to GCC compilation. * Modifying role detection algorithm for CAS registration. ## 14.10.2018 * Change Python execution command to `/usr/bin/env python3` (coinciding with Python upgrade on workers). * Better way to detect student and staff roles from CAS attributes. * Filter input files of gcc/g++ compilation command, so that only sources and not headers are included. * Making API more robust when some part of the localized text is not provided in parameters. * Multiple bug-fixes and improvements on exercise config page. * Improving behavior of exercise multi-assign form. * Minor adjustments of GroupInfo page appearance. * Fixing bugs and improving SIS integration (supervisor's part). * Multiple reloading issues (exercises, submission evaluation) fixed. ## 10.10.2018 * Pipeline modifications and extensions required to accommodate bison and flex compiler tools (required by advanced exercises). * Bug fixes. ## 1.10.2018 * Big load of bug fixes. * Grand cleanup of endpoints returning groups and corresponding webapp modifications. * Separating SIS-related stuff from Dashboard to SIS integration page (aiming for maximal SIS-ReCodEx separation, since SIS features should be an extension). * Updating SIS extension to new SIS API (now returning also non-scheduled courses). * New webpack deployment configuration (preparation for rpm deployment). ## 16.9.2018 * New exercise configuration page (visible to empowered supervisors and superadmins only, at the moment), which allows switching to advanced configuration and handle it. Advance exercise configuration offers pipeline selection, custom environment variables settings and manually set all the variables of the pipelines. * Group archiving and new page with archived groups added * Form that allows superadmin edit user's role on the user's settings page. * Internal performance optimizations, stopping pending AJAX requests when page changes * Various minor ux improvements. * Preparation for shadow assignments. ## 19.8.2018 * Many bug fixes in web application, API, and Token Judge. * Adding a toggle button for superadmin to allow/disallow user accounts. * Remove java-jars hack and add jar files -- files that can be added to Java compilation like extra files. ## 10.8.2018 * Exercise, User, and Pipeline lists on Exercises, Users, Pipelines, and Group Detail pages are now displayed paginated with improved loading and optional filters. * Exercise - Group relations can be modified on Exercise page. * Solution evaluations can be deleted. * Applying permission hints on multiple places to correctly display/hide controls based on privileges. * Replaced markdown renderer to support inline KaTeX, adding Markdown Math. * Download group results as CSV file. * Improving appearance of solutions and ref. solutions tables. * Improving appearance of date-time values and deadlines. * Restricting deadlines, how far in future they can be. * Fixing erratic behavior of submission progress bars. Adding refresh buttons to solution and ref. solution page, so the user may reload relevant data (if the progress bar was closed prematurely). * Python exit codes translated to error messages. * User may be in multiple instances (UI selects the instance automatically at the moment). * Shadow assignments (similar to global bonus points in old CodEx) implemented in API. * New roles supervisor-student (those who both teach and study) and empowered-supervisor (more powerful teacher who would be able to create custom exercise configurations with private pipelines). * Users may have one local login at most. Improving checks and security regarding credentials creation. * New token judge employed to produce better logs for failed tests. ## 11.6.2018 * New UI for reference solutions which is more similar to UI for regular solutions. * Points assigned to a submission evaluation by ReCodEx may be overwritten by supervisor. * Short description of the exercise restricted, so it is not visible to students. * Text with a hint for students (not synchronized with exercises) added to assignments. * Exercises (and assignments) may provide external link instead of text in MD. If the external link leads to a page containing plain text or markdown (and it can be fetched by CORS request), a preview is displayed directly in ReCodEx. * MultiAssign form is more user friendly. * When assignment is published, an optional switch can prevent from sending notification e-mails. * SIS codes added to group info. * JWT tokens (for API scripting) can be generated at User Settings page. * Compilation logs are carboncopied into files (with much more benevolent size constraints) when solution is re-evaluated in debug mode. * Affiliation is not mandatory for registration and login using CAS (may improve login via CAS experience for users with strange affiliations). * Email addresses added to user names in UI. New mailing endpoints were added in API, so they can be used in web app in the future. * API added and updated several important endpoints which will optimize fetching data in future versions of web app. * Cleaner released for the first time. * New token judge added in worker (will be employed soon after due testing). ## 1.5.2018 * Button for downloading best solutions in a ZIP archive added to Group Detail page. * Fixing multiple bugs. * Improving appearance and user experience. ## 29.4.2018 * Introducing data-only exercises (the user submits only data which are validated by custom judge). * Improving Smart-Fill feature in test configuration form. * Gravatar optimizations — user may disable/enable own gravatar and configure whether gravatars are visible to hir in general * Results table in Group Detail page is sortable by name and by total points now. * User may delete own submission comments. * Performance optimization of various SQL queries, functions, and visualization. * Displaying judge logs to supervisors. * Do not allow to create exercises without assigned group. * Additional API preparations (to be implemented in UI yet) - Introduce mass list endpoints for users and exercises. - Add endpoint for downloading best solutions archive of an assignment. ## 20.4.2018 * Various bugfixes and optimizations in REST API ## 17.4.2018 * Switching to Font Awesome 5 icons * Bug fixes, forgotten UI issues ## 14.4.2018 * Implementing support for organizational groups (organizational groups are meant for creating hierarchy, they cannot hold students nor assignments). * Adding language/environments list to assignments and exercises. * Exercise marked as broken on creation and if appropriate on forking * Create a submission failure when the submission will not even compile * Add revocation mechanism to authentication tokens and invalidation endpoint for all issued tokens of user (API only) * Implement issuing of restricted read-only tokens for usage in applications or scripts (API only) * Deadline of created assignments is further in the future and not now * Implement endpoint for deletion of comments (API only) * Refactoring, optimizations, bug fixes ## 28.3.2018 * Group page redesign — splitted into two pages (info and detail), cleaner design and much better performance * Assignments can restrict the set of runtime environments (as a subset of the RTEs of the exercise) * Pre-submit files validation with automated environment selection and entry point (bootstrap file) selection * Entry point selection also added to extra files in the exercise config form * Completed Czech translations * Bug fixes and performance optimizations ## 4.3.2018 * Form for assigning exercise in multiple groups at once was debugged and enabled. * External accounts (accounts mapped to SIS accounts) are prevented from changing their names. * Supervisors may delete solutions submitted by the students. ## 26.2.2018 * Fixing bugs. ## 25.2.2018 * Test limits were redesigned - Move to a separate page in the UI - Changed internally in the API (simple limits endpoints were removed) * Hardware group selection was added to the limits page - Second hardware group for long-running exercises added - Limits constraints are now bound to selected hardware group * Students can see stats table when enabled in group settings * Many bugs were fixed; number of submitted solutions reflects correct state (#153) ## 15.2.2018 * CPU/wall time selection in limits form (called "precise time measurement" in UI) * Extra (additional) files for exercise compilation can be provided by exercise author * Solution source codes and exercise test files can be downloaded as single ZIP package * New page for managing SIS interaction (for admins) * Students who also teach now can see both courses (which they study and which they teach) in SIS mappings * Exercise configuration is tested when edited and possible errors are reported * Group tree view improved and filtered, so only groups visible to logged user are shown * Bug fixes and performance optimizations ## 16.1.2018 * Users registered externally are now able to create local account * Several modifications in API and default pipelines, which are not apparent from webapp yet: - All compilation pipelines supports extra source files given by exercise author (so custom frameworks or boilerplates may be used in exercises) - Added cpu-time alongside wall-time in exercise limits and submission evaluation * Multiple bugs fixed and minor improvements implemented in the web application frontend * Refactoring and consolidation of some parts of the frontend in preparation for the modifications of the API ## 3.1.2018 * Added comment statistics to assignment solution list view * **Pascal** solutions will now accept multiple files * Added new file/folder existance check after compilation of user solutions (useful for cases when a compiler like **FPC** does not output proper binary file even if told to) * New loading screen to make sure the javascript bundle is loaded before anything else happens * Allow proper caching of bundle and static content in browser, which should bring better performance * Updated **CAS** login process, which should help especially on Android and (possibly desktop) Firefox to handle both authentication phases correctly * Display point stats in students assignment overview component * Multirow comment texts at solutions * Added custom messages for **Pascal** exit codes ## 19.12.2017 * Proper synchronization of assignments which copies all needed items * Various UX impromevents # Older Versions | Date | [web-app](https://github.com/ReCodEx/web-app/releases) | [api](https://github.com/ReCodEx/api/releases) | [worker](https://github.com/ReCodEx/worker/releases) | [broker](https://github.com/ReCodEx/broker/releases) | [fileserver](https://github.com/ReCodEx/fileserver/releases) | [monitor](https://github.com/ReCodEx/monitor/releases) | [cleaner](https://github.com/ReCodEx/cleaner/releases) | | --- |:---:|:---:|:---:|:---:|:---:|:---:|:---:| | 13.1.2020 | v1.20.0 | v1.20.0 | v1.6.4 | v1.3.0 | v1.2.1 | v1.0.0 | v1.1.0 | | 30.11.2019 | v1.19.0 | v1.19.0 | v1.6.4 | v1.3.0 | v1.2.1 | v1.0.0 | v1.1.0 | | 26.10.2019 | v1.18.3 | v1.18.2 | v1.6.3 | v1.3.0 | v1.2.1 | v1.0.0 | v1.1.0 | | 5.10.2019 | v1.18.2 | v1.18.1 | v1.6.3 | v1.3.0 | v1.2.1 | v1.0.0 | v1.1.0 | | 22.9.2019 | v1.18.1 | v1.18.0 | v1.6.3 | v1.3.0 | v1.2.1 | v1.0.0 | v1.1.0 | | 23.5.2019 | v1.17.0 | v1.17.0 | v1.6.2 | v1.3.0 | v1.2.1 | v1.0.0 | v1.1.0 | | 15.4.2019 | v1.16.1 | v1.16.0 | v1.6.2 | v1.3.0 | v1.2.1 | v1.0.0 | v1.1.0 | | 24.3.2019 | v1.15.2 | v1.15.2 | v1.6.1 | v1.3.0 | v1.2.1 | v1.0.0 | v1.1.0 | | 8.3.2019 | v1.15.1 | v1.15.1 | v1.6.1 | v1.3.0 | v1.2.1 | v1.0.0 | v1.1.0 | | 17.2.2019 | v1.15.0 | v1.15.0 | v1.6.1 | v1.3.0 | v1.2.1 | v1.0.0 | v1.1.0 | | 28.1.2019 | v1.14.0 | v1.14.0 | v1.6.1 | v1.2.2 | v1.2.1 | v1.0.0 | v1.1.0 | | 2.1.2019 | v1.13.0 | v1.13.3 | v1.6.0 | v1.2.2 | v1.2.1 | v1.0.0 | v1.1.0 | | 12.12.2018 | v1.12.5 | v1.13.1 | v1.6.0 | v1.2.2 | v1.2.1 | v1.0.0 | v1.1.0 | | 26.11.2018 | v1.12.4 | v1.13.0 | v1.6.0 | v1.2.2 | v1.2.1 | v1.0.0 | v1.1.0 | | 21.10.2018 | v1.12.3 | v1.12.3 | v1.5.4 | v1.2.2 | v1.2.1 | v1.0.0 | v1.1.0 | | 14.10.2018 | v1.12.2 | v1.12.2 | v1.5.3 | v1.2.2 | v1.2.1 | v1.0.0 | v1.1.0 | | 10.10.2018 | v1.12.1 | v1.12.1 | v1.5.2 | v1.2.2 | v1.2.1 | v1.0.0 | v1.1.0 | | 1.10.2018 | v1.12.0 | v1.12.0 | v1.5.2 | v1.2.2 | v1.2.1 | v1.0.0 | v1.1.0 | | 16.9.2018 | v1.11.0 | v1.11.0 | v1.5.2 | v1.2.2 | v1.2.1 | v1.0.0 | v1.1.0 | | 19.8.2018 | v1.10.1 | v1.10.1 | v1.5.2 | v1.2.2 | v1.2.1 | v1.0.0 | v1.1.0 | | 10.8.2018 | v1.10.0 | v1.10.0 | v1.5.2 | v1.2.2 | v1.2.1 | v1.0.0 | v1.1.0 | | 11.6.2018 | v1.9.0 | v1.9.0 | v1.5.0 | v1.2.2 | v1.2.1 | v1.0.0 | v1.1.0 | | 1.5.2018 | v1.8.1 | v1.8.3 | v1.4.1 | v1.2.1 | v1.2.1 | v1.0.0 | --- | | 29.4.2018 | v1.8.0 | v1.8.2 | v1.4.1 | v1.2.1 | v1.2.1 | v1.0.0 | --- | | 20.4.2018 | v1.7.2 | v1.8.1 | v1.4.0 | v1.2.1 | v1.2.1 | v1.0.0 | --- | | 17.4.2018 | v1.7.2 | v1.8.0 | v1.4.0 | v1.2.1 | v1.2.1 | v1.0.0 | --- | | 14.4.2018 | v1.7.1 | v1.8.0 | v1.4.0 | v1.2.0 | v1.2.1 | v1.0.0 | --- | | 28.3.2018 | v1.7.0 | v1.7.0 | v1.3.0 | v1.2.0 | v1.2.1 | v1.0.0 | --- | | 4.3.2018 | v1.6.2 | v1.6.2 | v1.3.0 | v1.2.0 | v1.2.1 | v1.0.0 | --- | | 26.2.2018 | v1.6.1 | v1.6.1 | v1.3.0 | v1.2.0 | v1.2.1 | v1.0.0 | --- | | 25.2.2018 | v1.6.0 | v1.6.0 | v1.3.0 | v1.2.0 | v1.2.1 | v1.0.0 | --- | | 15.2.2018 | v1.5.0 | v1.5.0 | v1.3.0 | v1.2.0 | v1.2.1 | v1.0.0 | --- | | 16.1.2018 | v1.4.4 | v1.4.4 | v1.2.1 | v1.2.0 | v1.2.1 | v1.0.0 | --- | | 3.1.2018 | v1.4.3 | v1.4.3 | v1.2.1 | v1.2.0 | v1.2.1 | v1.0.0 | --- | | 19.12.2017 | v1.4.1 | v1.4.1 | v1.2.0 | v1.2.0 | v1.2.0 | v1.0.0 | --- |