Releases: UniTime/unitime
Releases · UniTime/unitime
UniTime 4.9 build 125
Course Timetabling
Distribution Preferences: Single Table
- Added an option to show all distribution preferences in a single table, not split by subject area.
- To enable, set unitime.distributions.showSingleTable to true (defaults to false).
Student Scheduling
Batch Student Solver Dashboard: Filter
- Do not show "My Students Not Advised" and "Not Advised" mode options in the filter, as they cannot be computed correctly.
Administration
Session Roll Forward: Room Split Attendance
- Include the split attendance flag (set on individual classes) in the roll forward.
Contact Us: Attachments
- Fixed the ability to attach files to the email inquiry.
Data Exchange: Preferences
- Include instructor unavailability in the Preferences XML export and import.
Other
WCAG/Accessibility
- Various adjustments to improve WCAG compliance of UniTime pages.
- Most pages should now be fully compliant with WCAG 2.2 level AA, with the following exceptions (typically only available to examination managers and administrators):
- Student > Enrollment Audits: Form field missing a label (4.1.2)
- Most pages under Examinations > Examination Timetabling (except for Solver and Log): Container element is empty (1.3.1), Minimum contrast (1.4.3), Form field missing a label (4.1.2), and Keyboard accessibility (2.1.1)
- Examination Assignment: Image missing a text alternative (1.1.1), Minimum contrast (1.4.3), Form field missing a label (4.1.2), and Keyboard accessibility (2.1.1)
- Examinations > PDF Reports: Form field missing a label (4.1.2)
- Some of the pages under Administration (those still using Struts2): Container element is empty (1.3.1), Minimum contrast (1.4.3), Form field missing a label (4.1.2), and Keyboard accessibility (2.1.1)
- The above-mentioned pages are all old pages still written in Struts 2. They are planned to be made ADA-compliant together with their rewrite to GWT in a later release.
- For preference colors, you can switch among three options in Preferences > Settings, under High Contrast Preferences: Use preference levels with color backgrounds.
- yes: (which is the default now) will use preference colors as backgrounds
- no: will use the new (much darker) preference colors that satisfy the 4.5:1 contrast ratio
- legacy: will use the old non-ADA-compliant colors
UniTime 4.9 build 116
Course Timetabling
Class/Scheduling Subpart Detail: Distribution Preferences
- Corrected the permission checking for the Add Distribution Preference button so that a Department Schedule Manager would see the button on an externally managed class or scheduling subpart.
Room Preference Index: Various Fixes
- Session Roll Forward: Copy room index for room-related preferences (room, room feature, room group, and building preferences).
- Preferences XML: Include roomIndex attribute for room-related preferences.
- Multiple Class Setup: Copy room index when room-related preferences are being moved pushed to the class level due to the change of the subpart's managing department.
Course Catalog
- Create a simple page that shows information provided by the custom CourseDetailsProvider.
- To enable:
- Configure unitime.custom.CourseDetailsProvider (returning an HTML snippet)
- Set unitime.custom.CourseUrlProvider to org.unitime.timetable.server.courses.CourseCatalogBackend.
- Set the Course Catalog permission for all the roles that should be able to see the catalog page.
- Possibly adjust the custom CSS to improve catalog page formatting.
Class Detail: Timetable
- Fixed an exception thrown when showing an in-memory assignment with a partially-assigned violated distribution preference.
Distribution Types: Custom Back-To-Backs
- Added the ability to parametrize Back-To-Back and Back-To-Back & Same Room distribution constraints.
- Back-To-Back can now have a reference BTB_TIME(min,max), where min and max are the bounds on the gap between two consecutive classes in time slots.
- For example, BTB_TIME(0,3) will allow a gap of at most 15 minutes (3 time slots) between consecutive classes.
- Back-To-Back & Same Room can now have a reference BTB(min,max), where min and max are the bounds on the gap between two consecutive classes in time slots.
- For example, BTB(6,6) will require a gap of exactly six time slots (30 minutes) between any consecutive classes.
Student Scheduling
Wait-Listing: Custom Validation
- Skip revalidation for a course that was made not offered (avoid null exception).
Solver Reports: Course Request Alternatives Statistics
- Added Course Request Alternatives Statistics report, an experimental report comparing course requests and advisor recommendations with and without alternatives.
- Only available to user roles with Student Sectioning Solver Admin Reports role.
Student Scheduling Assistant: Custom Enrollment Provider
- Fixed an issue that occurs when a student is enrolled in the same class multiple times (under different courses), tries to drop a class, and the drop is not allowed/fails due to the external system.
- The student was removed from the section in UniTime, and Special Registration did not get triggered.
Batch Student Scheduling: Free Times
- For students with FT (need free-time) accommodation: added an ability to mark the free-time requests as higher priority.
- Using solver parameter Load.FreeTimeAccRequestPriority set to Normal, Important, Vital, or Critical
- Added an ability to make sure that low-priority course requests do not overlap with a higher-priority free time request, even when it is not assigned.
- Using solver parameter Sectioning.FreeTimeConflict is set to true; set to false by default.
- A few changes in the user interface to show free time request priority and free time conflicts.
Student Scheduling Disclaimer
- A new optional text field is available on the instructional offering configuration level called Student Scheduling Disclaimer.
- It is editable with Instructional Offering Edit Disclaimer permission using Instructional Offering Configuration or the Multiple Class Setup page.
- Default scheduling disclaimers can be defined using the Default Scheduling Disclaimers administrative page.
Student Scheduling Assistant: Submit Schedule Confirmations
- All Submit Schedule confirmations are now present in a single Confirmation dialog.
- Display scheduling disclaimers in Course Finder and in the class schedule.
- When adding a new course or switching to a different config that has a different scheduling disclaimer, display the disclaimer in the Confirmation dialog.
Student Course Requests and Advisor Course Recommendations: Validation
- Created a new default Student Course Request Validation and Advisor Course Recommendations Validator that only does the UniTime-related checks, which include: no alternative course provided, associated course checks (associated course on the same request line, associated course requested as substitute, parent course not present), high-priority free time, min/max credit checks, scheduling rules check, single-section time conflict check, inconsistent student preferences check, and the new student scheduling disclaimer.
- Also include the new student scheduling disclaimer in the course validation.
- When a course has only a single configuration or multiple configurations with the same disclaimer, just display the disclaimer for the course.
- When there are multiple disclaimers, prefix the disclaimer with the instructional method of the configuration with the disclaimer. Reservations and scheduling rules are checked, and configurations that the student cannot take are ignored.
Event Management
Service Providers: HQL Bug Fix
- Fixed a query that loads all rooms for a service provider associated with a department, applying to all the department's event rooms.
Other
WCAG/Accessibility
- Various adjustments to improve WCAG compliance of UniTime pages.
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.