Releases: UniTime/unitime
Releases · UniTime/unitime
UniTime 4.9 build 102
Course Timetabling
Instructional Offerings, Classes, Class Assignments: Legacy Check
- When an old (Struts-based) page URL is used, but the configuration does not enable the legacy version of the page, redirect to the new (GWT-based) page.
- This makes the Classes and Class Assignments links on the Not-Assigned Classes page point to the correct versions of the two pages.
Suggestions
- Compute and populate conflicting constraints when a placement with conflicts is selected from the Suggestions table in the Placements mode.
- Fixed a problem when an invalid placement is selected for the 2nd or later class from the Selected Assignment, which was causing conflicting placements to get unassigned.
Max (Work) Days Range Distributions
- Given classes must be taught within the number of consecutive days or work days.
- This means that between the first and last meeting of all classes in the constraint, there cannot be more than the given number of consecutive days or work days, including the first and last day.
- When work days are used: Weekends, holidays, and breaks are ignored.
Student Scheduling
Course Reservations
- Improved course checking for course-related reservations.
- Check the course of the enrollment/request rather than all courses that the student is requesting.
- This can make a difference when a student requests multiple cross-listed courses from the same instructional offering.
Universal Reservations
- Added an ability to filter by requested course using the course: tag.
Scheduling Assistant: Submit
- Ensure that there are enough primary course requests to cover all enrolled and wait-listed courses.
- This optional check fixes an issue where a student may end up in a state where a substitute course is enrolled without a matching not-assigned course request that it is substituting.
- The check can be disabled by setting unitime.enrollment.checkSubstitutes to false.
Student Notifications: Course is no longer requested
- When a course is made not offered, only send a notification when the student was initially enrolled in the course.
Administration
Subject Areas: Delete
- Fixed a Hibernate exception (ObjectDeletedException) when deleting a subject area that has some not-offered courses.
- Caused by the latest Hibernate upgrade (to version 6.6).
Student & Instructor Name Format
- Fixed an exception that was thrown when a first name or a last name is just a single space for name formats using initials.
Data Exchange: Examination XML
- Examination XML Export: added the following examination attributes:
- enrollment: number of students enrolled in the classes/courses of the exam
- limit: total limit of the classes/courses of the exam
Technology Update
- The following dependencies have been updated:
- Apache Struts2 to 7.1.1 to fix CVE-2025-64775 vulnerability.
UniTime 4.9 build 93
Course Timetabling
Add/Edit Instructor
- Corrected the label for the instructor email field.
Instructional Offerings, Classes
- Do not show examination columns when there are no examination periods defined (Examinations do not show up in the Filter).
- Added an ability to not show the subject area titles in the filter (when unitime.offering.subjectFilterShowTitles is set to false).
Add/Edit Room: Room Sharing
- Added an ability to list all departments as available for room sharing (instead of those that are being used, i.e., departments that have a manager, a subject area, or another room).
- Set unitime.roomDepts.usedDepartmentsOnly to false to enable (defaults to true, only show departments that are being used).
Examination Timetabling
Add/Edit Examination
- Corrected setting of neutral period preferences for midterm exams.
Student Scheduling
Student Scheduling Solver: Dependent Courses
- Corrected the can leave unassigned check for branch&bound.
- When the associated course is to be moved up during solver load, swap the associated and the dependent courses instead of adjusting the comparator (to avoid transitivity issues with the comparator).
Online Student Scheduling Dashboard: Release/Suppress PIN
- Display a confirmation dialog when students not advised by the user are involved in the PIN release change.
Administration
Add/Edit Subject Area
- List all available departments (excluding externally managed ones) for a subject area.
- Instead of those that are being used (have a manager, a room, or another subject).
UniTime 4.8 build 219
Course Timetabling
Edit Course Offering
- Fixed a Hibernate error thrown when a course that has just been added to a cross-list is being edited.
- Caused by the latest Hibernate upgrade (to version 6.6).
Class Assignment
- Fixed a potential Hibernate exception (TransientObjectException) when making a larger change.
- Caused by the latest Hibernate upgrade (to version 6.6).
Data Exchange
Course Offering XML Import
- Fixed a Hibernate exception when importing exams with instructors.
- Caused by the latest Hibernate upgrade (to version 6.6).
UniTime 4.9 build 89
Course Timetabling
Class Assignment
- Always show the student conflicts for the selected assignment. The Show student conflicts toggle only applies to the conflict numbers for the available times.
- A few changes have been made to improve the page speed.
Classes, Class Assignments: Export CSV
- Do not split the CSV export by subject area.
Examination Timetabling
Add/Edit Examination: Size
- Examination size did not get updated.
- Set the maximal number of rooms to zero when the Maximum Number of Rooms is left empty.
Add/Edit Examination: Preferences
- Fixed a problem of the Add/Edit Examination page not being loaded up correctly when there are no room features or no room groups.
Student Scheduling
Solver Dashboard: Dependent Courses
- Show the "Not-assigned associated course {0}." message when applicable while showing student details (List of Classes).
Student Scheduling Manual
- A new student scheduling manual is linked from the menu (Help > Manuals).
UniTime 4.9 build 85
Course Timetabling
Instructional Offerings, Classes, Instructional Offering Detail: Time Preferences
- Corrected display for time preferences when set to be displayed as text (allow the preference to get split into multiple lines).
Edit Class/Scheduling Subpart: Time Preferences
- Do not pop up the required/not-required times warning for a user who has the "Display confirmation dialogs" preference set to no.
Instructional Offering Detail: Last Changes
- Last Changes table made sortable, sort by Date (desc) by default.
- Added the last Class Assignment change.
Distribution Preferences: Sort
- Distribution Preferences table made sortable.
Instructional Offering Detail: Configurations
- Configuration tables do not show the configuration line on the Instructional Offering Detail page.
- Scheduling subpart lines have a blue background for not-offered courses.
Examination Timetabling
Examinations, Examination Distribution Preferences: Export CSV/PDF/XML
- Corrected permission checking when one or more subject areas are selected.
Examination Detail: Clone
- The new exam does not copy the period preferences from the original exam (just like it did not on the legacy Struts-based page).
Add/Edit Examination: Period Preferences
- Do not allow for required/prohibited preferences when the user does not have the Can Use Hard Period Prefs permission.
Add Examination: Instructors
- Pre-populate the list of available instructors when adding an exam from the Instructional Offering Detail or the Class Detail page.
Examination Timetabling Manual
- A new examination timetabling manual is linked from the menu (Help > Manuals).
UniTime 4.9 build 82
Please Note: UniTime 4.9 requires Java 17 and Apache Tomcat 10.1 or later to run.
Course Timetabling
Technology Update / GWT
- The following pages have been rewritten to GWT:
- Instructional Offerings
- Classes
- Class Assignments
- Instructional Offering Detail
- Scheduling Subpart Detail
- Class Detail
- Instructors
- Instructor Detail
- Instructional Offering Cross Lists
- Edit Class
- Edit Scheduling Subpart
- Instructor Preferences
- Instructor Assignment Preferences
- Add/Edit Instructor
- Distribution Preferences
- Add/Edit Distribution Preference
- Class Assignment
Examination Timetabling
Technology Update / GWT
- The following pages have been rewritten to GWT:
- Examinations
- Examination Detail
- Add/Edit Examination
- Examination Distribution Preferences
- Add/Edit Examination Distribution Preference
Student Scheduling
Added support for Dependent Courses
- If both the dependent course and its parent (associated) course are requested by a student, the student scheduling student solver can assign the student the dependent course only when the associated course is also assigned.
- Edit Course Offering: Associated Course field added.
- Only available when unitime.sectioning.parentCourse is set to true (defaults to false).
- Also, Edit Course Offering Associated Course permission is needed to edit the associated course of a dependent course.
- Instructional Offering Detail: display the Associated Course when set.
- Student Scheduling Solver: load associated courses into the solver, create a new Dependent Courses global constraint.
- Various heuristics and algorithms adjusted to correctly handle dependent courses.
- Solver Reports: Not-Assigned Associated Course Issues report added, listing cases when a student has the dependent course assigned without having the associated course.
- Scheduling Dashboards: show an error when not-assigned associated course as a reason for a dependent course not being assigned.
- Course Requests & Advisor Recommendation Credit Computation: adjusted credit computation for dependent courses.
- Scheduling Assistant: show the "Not assigned associated course X." message when a course cannot be assigned because the associated course is requested, but not assigned.
- Roll Forward Session: added an option to copy associated course settings from the previous session.
Scheduling Assistant: Not available (course is full).
- When displaying the "Not available (course is full)." for a course for which a limit override can be requested, also include "An override can be requested." in the message.
- Only enabled when unitime.enrollment.fullCourseCanRequestOverride is set to true.
Administration
Technology Update
- Jakarta EE Migration: UniTime 4.9 requires Java 17 and Apache Tomcat 10.1 or later to run.
- The following dependencies have been updated:
- Apache Struts2 to 7.0
- Spring Framework to 6.2
- Spring Security to 6.4
- Spring Integration to 6.4
- Jakarta Servlet API 6.1
- Jakarta JSP API 4.0
- Jakarta Standard Tag Library API 3.0
API Tokens, Query Encoder
- Added an ability to use more secure algorithms to encode query parameters and API token using the following parameters:
- unitime.encode.algorithm=PBKDF2WithHmacSHA512
- unitime.encode.iterationCount=100000
- unitime.encode.keyLength=128
- unitime.encode.cipher=AES/CBC/PKCS5Padding
- unitime.encode.cipher.iv=FIXME
- Please note that any change in the above parameters will invalidate the existing API tokens and encoded queries.
Data Exchange
- Course Offerings Export: only export exam size when it is set (not when it is counted from enrollment data).
- Course Offerings Import: improved handling of multiple scheduling subparts with the same instructional type on the same level.
- Course Offerings Import: corrected import of assigned period when print offsets are being used.
- Examinations Import: added an exams-only import (matching the exams-only export).
- GZip the exported XMLs when unitime.export.TYPE.xml.gz is set to true (defaults to false, TYPE is the name of the root element in the export).
UniTime 4.8 build 216
UniTime 4.8.216 release notes
Course Timetabling
Curricula: Add/Edit Curriculum
- Added an ability to customize the course selection box width (unitime.curricula.courseWidth property, defaults to 130px).
- The setting is also used to set the course selection box width on the Add/Edit Reservation page.
Instructional Offering Cross Lists
- Fixed a Hibernate exception when removing/adding a course from/to a cross-list, if the course is listed as a demand course on some other course of the cross-list.
- Caused by the latest Hibernate upgrade (to version 6.6).
Multiple Class Setup
- Fixed a Hibernate exception when removing multiple classes assigned to the same instructor.
- Caused by the latest Hibernate upgrade (to version 6.6).
UniTime 4.8 build 213
Course Timetabling
Instructional Offering Cross Lists
- Fixed a Hibernate exception when removing a course from a cross-list that has some advisor course recommendations.
- Likely caused by the latest Hibernate upgrade (to version 6.6).
Multiple Class Setup
- Fixed a Hibernate exception that is sometimes thrown when deleting two or more classes in a parent-child relation.
- Likely caused by the latest Hibernate upgrade (to version 6.6).
Administration
Authentication & Authorization: User Name
- Added an ability to use the student's name from the most recent applicable active academic session as the user name.
- Enable by setting unitime.authorization.preferStudentName to true (defaults to false).
- Added an ability to customize user name format by setting unitime.authorization.userNameFormat, defaults to last-first-middle.
Data Exchange: Course Offering XML Import
- Removed a Hibernate session refresh that was occasionally causing the import to fail after the Hibernate upgrade to version 6.6.
Student Groups, Solver Parameters
- Corrected the Export CSV/PDF when the filter is set to All.
Roll Forward Session: Roll Exam Configuration Data
- Fixed the QueryTypeMismatchException when checking for an existing examination period.
UniTime 4.8 build 204
Note: Java 17 or later is required for this build (Java 11 is no longer supported).
Course Timetabling
Suggestions, Instructor Survey: Maximize
- Added an ability to maximize the Suggestions and Instructor Survey dialogs.
Course Timetabling: Initial Student Sectioning
- Added the ability to skip the assignment of a student to the course when there is a reservation for a class or a course that is not being loaded (e.g., distance configuration when solving on-campus students).
- Enable by setting StudentSectioning.MustFollowReservations in the solver configuration to true (defaults to false, which is the existing behavior).
Student Scheduling
Student Solver Reports, Student Dashboard: Not Available message
- Added a better explanation of why a course is not available for a student.
- Applies to the Not-Assigned Course Requests report.
- Applies to the List of Classes tab when a student is clicked.
Administration
Data Exchange: Import
- Avoid an issue with the import file being removed before it is imported by:
-
- Renaming the file once it is passed to the data exchange form
-
- Remove the file only after the import is finished
-
- This resolves the occasional "The system cannot find the file specified" error that may occur during the import.
JSON API: Reservations
- Added an ability to indicate that a given field or class should be excluded from JSON serialization (with the new @ExcludeFromJsonApi annotation).
- Fixed an issue with both IdName and Subpart/Clazz having a parent field.
- Fixed an issue with Subpart.config and Clazz.subpart creating a circle.
Technology Upgrade
- Hibernate upgraded to version 6.6.
- Infinispan upgraded to version 15.0.
- This fixes the issue with Java 23 or later (ISPN-14375 issue), however, this change also bumps the minimal version to Java 17.
- Apache Struts upgraded to version 6.7
- JGroups upgraded to version 6.5
- GWT upgraded to version 2.12
UniTime 4.8 build 198
Course Timetabling
Course Timetabling Solver: Exact Times
- Do not allow for a date pattern & exact time combination that has no meetings.
Rooms: Availability
- Fixed an array index out of bounds when generating the room availability thumbnail icons in some instances.
Course Timetabling Solver: Instructor Unavailable Dates
- Unavailability checking for externally managed classes has been corrected.
- Use the instructor's department, not the department for which the instructor is being loaded.
Timetable Grid: Per Date Display
- Avoid showing incorrect dates when the client is in a different time zone than the server.
Examination Timetabling
Examination Solver: Duplicate Instructor Fix
- Avoid Null exceptions when the same instructor is listed twice on the same exam (under different departments).
Add/Edit Examination: Classes / Courses Fix
- Fixed an issue of the Classes / Courses table not loading courses for a subject area with a course with a quotation mark in the title.
Online Student Scheduling
Online Student Scheduling Dashboard: Student PIN
- On the Students tab, show student PINs for students who have their PIN released.
- Allow admins and/or advisors to release/suppress student PINs (Student Scheduling Can Release Pin permission needed).
- Add a custom interface for populating student PINs (unitime.custom.StudentPinsProvider property) for students who do not have a PIN filled in.
Event Management
Sponsoring Organizations
- Added an option to make the sponsoring organization a mandatory field for special events.
- Enabled by setting unitime.events.sponsoringOrgRequired to true (defaults to false).
- When set to true, the sponsoring organization must be set when creating a new special event.
Administration
Data Exchange: Student PIN
- Added student PIN and PIN released flags in the student and course requests XML imports and exports.
- Student XML: added pin and pinReleased attributes to the student element.
- Requests XML: added pin element under updateDemographics with value and released attributes.
Timetabling Managers: Short Name
- Added an ability to customize the short name format used, e.g., in the Last Changes component.
- Can be changed using the unitime.managers.shortNameFormat property, which defaults to initial-last.