<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" media="screen" href="git-log.css"?>

<log>
  <title>UniTime v4.9 build 148 change log (since the last release, build 146 on 14 Aug 2026 02:00)</title>
  <logentry revision="14915a8">
    <commit>14915a801ecf84c981797c8ddcd994a7864f79eb</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>21-Aug-2026 5:46 PM</date>
    <subject>Page Warnings: GWT Fix</subject>
    <msg>- individual page warnings (e.g., tmtbl.page.info.sectioning)</msg>
    <msg>- extended page detection to include the new URLs for GWT-based pages</msg>
  </logentry>
  <logentry revision="93cdc70">
    <commit>93cdc703ff9b022c775ec23b68003923d382d835</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 9:03 PM</date>
    <subject>Student Scheduling Backend: Permission Checking</subject>
    <msg>- only check permissions for calls that have the Sectioning and Online flags set</msg>
    <msg>- relates to commit 26fd8d7</msg>
  </logentry>
  <logentry revision="22a8ce0">
    <commit>22a8ce0cb8775a238a79ed92dd525a8e91c5daef</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 8:39 PM</date>
    <subject>Advisor Course Recommendations: Student Status</subject>
    <msg>- allow advisors to set the default status if the Can Advisor Set toggle is set (and it is compatible with the current student status)</msg>
  </logentry>
  <logentry revision="0a3b9bf">
    <commit>0a3b9bf820c92cdb5265f60905daed4ba420ee9b</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 8:39 PM</date>
    <subject>Online Student Scheduling Dashboard, Reports: Status Change</subject>
    <msg>- allow advisors to set the default status if the Can Advisor Set toggle is set</msg>
    <msg>- only list statuses that the advisor can set to at least one of the selected students</msg>
    <msg>e.g., when only compatible statuses can be set, and all students have a pre-reg status, list only available pre-reg statuses as options</msg>
  </logentry>
  <logentry revision="4b8bcea">
    <commit>4b8bcea4b98cb8c37530b0d2ce0eb69c868bdfc3</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 8:38 PM</date>
    <subject>Student Scheduling Backend: Permission Checking</subject>
    <msg>- improved detection of an expired HTTP session</msg>
  </logentry>
  <logentry revision="c6e9b38">
    <commit>c6e9b38afc291b00e59692b13cc50a0789f9f4ca</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 8:38 PM</date>
    <subject>Online Student Scheduling Dashboard: Set Student Status</subject>
    <msg>- when status compatibility checking is enabled, check current student's status not the effective one</msg>
  </logentry>
  <logentry revision="a5fe02d">
    <commit>a5fe02dad8aebbab78424026d7160ccdbb4ee015</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:46 PM</date>
    <subject>Roll Forward Session: GWT</subject>
    <msg>- added missing ARIA labels for the session and subject area selections</msg>
  </logentry>
  <logentry revision="97d3c02">
    <commit>97d3c022a31ae14a2ead58be3cbbb83265b4a61f</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:35 PM</date>
    <subject>Logout Action: Cookie</subject>
    <msg>- removed the loggedOn cookie as it is no longer being used</msg>
  </logentry>
  <logentry revision="9be19f4">
    <commit>9be19f4ee58ca0dfdfb0e2af8b3595c85d59eea4</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:35 PM</date>
    <subject>Student Scheduling Dashboards: Code Cleanup</subject>
    <msg>- removed the deprecated StatusPageSuggestionsAction (replaced by the filter long time ago)</msg>
    <msg>- course/student matchers moved to separate files</msg>
  </logentry>
  <logentry revision="e065b78">
    <commit>e065b7827020da787f193e53cc6c1b8e072d5a0c</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:35 PM</date>
    <subject>Struts2 Layout: Code Clenup</subject>
    <msg>- fixed escaping of the page loading message</msg>
  </logentry>
  <logentry revision="d939a39">
    <commit>d939a396a6e42c6e615d849b15a1c4d88f59f37a</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:35 PM</date>
    <subject>Room Detail Backend: Code Cleanup</subject>
    <msg>- removed test method containing an old API key</msg>
  </logentry>
  <logentry revision="d30306c">
    <commit>d30306ce15e4c0bd0473bdf04951938b6890f071</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:35 PM</date>
    <subject>Online Student Scheduling Dashboard: Change Log</subject>
    <msg>- filter: sanitize boolean query parameters</msg>
    <msg>- query values were already escaped using HibernateUtil.escapeSql(...)</msg>
    <msg>- removed escapeSql to avoid double escaping</msg>
  </logentry>
  <logentry revision="292f53a">
    <commit>292f53a375d1e8ed8f2cdaa748c247db3dfb2b98</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:35 PM</date>
    <subject>Roll Forward Session: Roll Course Offerings, Add New Course Offerings</subject>
    <msg>- code cleanup: sanitized parameters for a few queries (subject area abbreviation, course numbers)</msg>
  </logentry>
  <logentry revision="d1fb352">
    <commit>d1fb35280dae82f1d61f33f85cfbaf0b59ec269b</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:35 PM</date>
    <subject>Classes, Class Assignments: Filter</subject>
    <msg>- code cleanup: sanitize subject areas parameter</msg>
  </logentry>
  <logentry revision="6a7164d">
    <commit>6a7164d6d65baa8fd275370f21c3fbf3f0347e9c</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:35 PM</date>
    <subject>PDF Exam Report: Command Line</subject>
    <msg>- sanitize subject parameter when called from a command line</msg>
  </logentry>
  <logentry revision="6265d78">
    <commit>6265d7889e6d7afb098462f49646dc8951e76716</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:34 PM</date>
    <subject>Online Student Scheduling Dashboard: Change Log</subject>
    <msg>- filter: sanitize boolean query parameters</msg>
  </logentry>
  <logentry revision="7aa1db9">
    <commit>7aa1db99e7beda0a831bc66eed5d4c1ac2a2827f</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:34 PM</date>
    <subject>Student Scheduling: List Course Offerings</subject>
    <msg>- code cleanup: course type codes passed as query parameter</msg>
  </logentry>
  <logentry revision="22d3a76">
    <commit>22d3a7655b307eb06238b6e242eefe1108b168a2</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:34 PM</date>
    <subject>Reservations: Computation of student counts for curriculum reservations</subject>
    <msg>- code cleanup: unique ids and codes for academic areas, classifications, majors, concentrations, and minors passed as query parameters</msg>
  </logentry>
  <logentry revision="3b09717">
    <commit>3b0971715fa1b4bb772a2e80572604b5e87e90aa</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:34 PM</date>
    <subject>API: Variable Title Course</subject>
    <msg>- sanitized course number parameter</msg>
    <msg>(other parameters also provided as parameters rather than directly in the generated HQL)</msg>
  </logentry>
  <logentry revision="4c98275">
    <commit>4c98275c578c157dc23c14d3ea84e16bc6b8d2c8</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:34 PM</date>
    <subject>Test HQL, HQL Reports</subject>
    <msg>- added the ability to link another UniTime page from a report on click</msg>
    <msg>- either using the first column named __Link, which opens a new page</msg>
    <msg>- or __Dialog, which opens a frame dialog with the page</msg>
  </logentry>
  <logentry revision="1ea9e50">
    <commit>1ea9e50839a9719cbd5e7f3367a1e3f1eaf98d61</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:33 PM</date>
    <subject>Scripts: Log</subject>
    <msg>- corrected download link for scripts that were run remotely</msg>
    <msg>(related to commit a26fa8e)</msg>
  </logentry>
  <logentry revision="6619ccc">
    <commit>6619cccb95f1c5ea7a8aba4910b29ffa986133c4</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:32 PM</date>
    <subject>Scripts: Log</subject>
    <msg>- Scripts in progress: improved the responsiveness of the Scripts page when there is a script with a very long log</msg>
    <msg>- avoid stacking of log update requests</msg>
    <msg>- only load the log for the selected script</msg>
  </logentry>
  <logentry revision="5078780">
    <commit>5078780b496910a4604fb7537a310f2d25666a84</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:30 PM</date>
    <subject>Student Scheduling Status: Priority Selection</subject>
    <msg>- added a new flag named "Priority Selection"</msg>
    <msg>- it only applies to student statuses with a fallback status defined</msg>
    <msg>- when both the status and the fallback status are available (not expired), the user cannot use the fallback status when the original status has the Priority Selection flag</msg>
    <msg>- does not apply to administrators (they can still use any status that has not expired yet)</msg>
  </logentry>
  <logentry revision="65a773e">
    <commit>65a773ee4520feb30b915a03e30981b23ef1b845</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:29 PM</date>
    <subject>Advisor Course Recommendations: Student Status</subject>
    <msg>- added an option to only allow advisors to change student status to a status with access to the same page (Course Requests or Scheduling Assistant)</msg>
    <msg>- this means that when enabled, advisors cannot move students between pre-registration and open registration statuses</msg>
    <msg>- disabled by default; enable by setting unitime.acrf.sameTypeStatusChangeOnly to true</msg>
  </logentry>
  <logentry revision="20cfa71">
    <commit>20cfa713f44665cec498bde3e24fc04d1c55a751</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:26 PM</date>
    <subject>Roll Forward Session: GWT</subject>
    <msg>- Roll Forward Session page rewritten to GWT</msg>
    <msg>(set unitime.legacy.rollForward to true for the old Struts-based page)</msg>
  </logentry>
  <logentry revision="ab4523b">
    <commit>ab4523baac52b4588528a9e8ac30af060d9d08c1</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:25 PM</date>
    <subject>Manage Solvers: GWT</subject>
    <msg>- Manage Solvers page rewritten to GWT</msg>
    <msg>(set unitime.legacy.manageSolvers to true for the old Struts-based page)</msg>
  </logentry>
  <logentry revision="4a735cb">
    <commit>4a735cb68aaa1a2af8bea4ea7e7438a9917c3e5b</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:24 PM</date>
    <subject>Page Statistics: GWT</subject>
    <msg>- Page Statistics page rewritten to GWT</msg>
    <msg>(set unitime.legacy.stats to true for the old Struts-based page)</msg>
  </logentry>
  <logentry revision="e44e2f5">
    <commit>e44e2f54646cdb2b0b035a698a459a334e9dfc36</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:24 PM</date>
    <subject>Access Statistics: GWT</subject>
    <msg>- Access Statistics page rewritten to GWT</msg>
    <msg>(set unitime.legacy.accessStats to true for the old Struts-based page)</msg>
  </logentry>
  <logentry revision="469042c">
    <commit>469042ccd3ffd5c3ace25b8f8701b55efe8f145f</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:24 PM</date>
    <subject>Distribution Types: GWT</subject>
    <msg>- Distribution Types, Edit Distribution Type pages rewritten to GWT</msg>
    <msg>(set unitime.legacy.distributionTypes to true for the old Struts-based pages)</msg>
  </logentry>
  <logentry revision="f555784">
    <commit>f55578479ca4033c6ed348441d82569d20ef38b0</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:23 PM</date>
    <subject>Data Exchange: GWT</subject>
    <msg>- making QueueType serializable</msg>
  </logentry>
  <logentry revision="3c7c007">
    <commit>3c7c007a484c71852db2cd0a0917d4bff38a6c04</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:23 PM</date>
    <subject>Data Exchange: GWT</subject>
    <msg>- Data Exchange page rewritten to GWT</msg>
    <msg>(set unitime.legacy.dataExchange to true for the old Struts-based page)</msg>
  </logentry>
  <logentry revision="389aeb9">
    <commit>389aeb9d054f9ea098ab174c6806ce6dcde40088</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:22 PM</date>
    <subject>Examination Periods, Add/Edit Examination Period, Setup Examination Periods: GWT</subject>
    <msg>- Examination Periods, Add/Edit Examination Period, Setup Examination Periods pages rewritten to GWT</msg>
    <msg>(set unitime.legacy.examPeriods to true for the old Struts-based page)</msg>
  </logentry>
  <logentry revision="8037a76">
    <commit>8037a7670fb68afe912572411f253985740b04b9</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:21 PM</date>
    <subject>Time Patterns, Add/Edit Time Pattern: GWT</subject>
    <msg>- Time Patterns, Add/Edit Time Pattern pages rewritten to GWT</msg>
    <msg>(set unitime.legacy.timePatterns to true for the old Struts-based page)</msg>
  </logentry>
  <logentry revision="ff68aed">
    <commit>ff68aedde906045cb898c76fd04fe685624b98ea</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:20 PM</date>
    <subject>Date Patterns: GWT</subject>
    <msg>- corrected Back button when using Previous/Next</msg>
    <msg>- better error message when date pattern does not exist</msg>
  </logentry>
  <logentry revision="62ceb02">
    <commit>62ceb02667ab3fb422571b8d24eaf90be1728e5c</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:20 PM</date>
    <subject>Date Patterns, Add/Edit Date Pattern: GWT</subject>
    <msg>- Date Patterns, Add/Edit Date Pattern pages rewritten to GWT</msg>
    <msg>(set unitime.legacy.datePatterns to true for the old Struts-based page)</msg>
  </logentry>
  <logentry revision="5dd99ec">
    <commit>5dd99ec6e8d0dbca67c76779f8c37e3e61b5b515</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:19 PM</date>
    <subject>Last Changes: GWT</subject>
    <msg>- Last Changes pages rewritten to GWT</msg>
    <msg>(set unitime.legacy.lastChanges to true for the old Struts-based page)</msg>
  </logentry>
  <logentry revision="3531fa5">
    <commit>3531fa55f24a2a0518e969c84cbb2a5d3a56ec0f</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:18 PM</date>
    <subject>GWT: Exact Times</subject>
    <msg>- created a new GWT-based admin page Exact Time, replacing the Exact Time Pattern page</msg>
  </logentry>
  <logentry revision="1b22401">
    <commit>1b22401edbc40578db0863e3a4c2c8f3b7cd1965</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:17 PM</date>
    <subject>Solver Groups, Add/Edit Solver Group: GWT</subject>
    <msg>- Solver Groups, Add/Edit Solver Group pages rewritten to GWT</msg>
    <msg>(set unitime.legacy.solverGroups to true for the old Struts-based page)</msg>
  </logentry>
  <logentry revision="ecb1777">
    <commit>ecb17774cb590695de096806c76c002c57070961</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:16 PM</date>
    <subject>Timetable Managers, Add/Edit Timetable Manager: GWT</subject>
    <msg>- Timetable Managers, Add/Edit Timetable Manager pages rewritten to GWT</msg>
    <msg>(set unitime.legacy.managers to true for the old Struts-based page)</msg>
  </logentry>
  <logentry revision="c85cfd2">
    <commit>c85cfd248e78a2c28af1634fe7de5f3cf10f1985</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:15 PM</date>
    <subject>Academic Sessions, Add/Edit Academic Session: GWT</subject>
    <msg>- Academic Sessions, Add/Edit Academic Session pages rewritten to GWT</msg>
    <msg>(set unitime.legacy.sessions to true for the old Struts-based page)</msg>
  </logentry>
  <logentry revision="fb15480">
    <commit>fb154805f3610ab2e63c8d5e4daecbe1d0b641c5</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:14 PM</date>
    <subject>Eclipse Configuration</subject>
    <msg>- a few minor changes in the Eclipse configuration to allow easier setup with the latest Eclipse and GWT plugin</msg>
    <msg>- following https://help.unitime.org/eclipse</msg>
  </logentry>
  <logentry revision="a5b1ce4">
    <commit>a5b1ce4298a867744a84789c32f29c59d4a2fd43</commit>
    <author>tomas-muller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:12 PM</date>
    <subject>Test HQL: GWT</subject>
    <msg>- Test HQL page rewritten to GWT</msg>
    <msg>(set unitime.legacy.hibernateQueryTest to true for the old Struts-based page)</msg>
    <msg>- A few changes done to the HQL Reports page, so that the two pages share as much code as possible</msg>
  </logentry>
  <logentry revision="2176dfe">
    <commit>2176dfeccdc6ff3ead13c7af5c6fe08db3504d7a</commit>
    <author>tomas-muller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:11 PM</date>
    <subject>Course Timetabling: Solution Reports</subject>
    <msg>- a few CSS improvements for the recently updated tables</msg>
  </logentry>
  <logentry revision="c016e14">
    <commit>c016e14cea979d2daa0fa23c65e5e3f411d973c9</commit>
    <author>tomas-muller &lt;muller@unitime.org&gt;</author>
    <date>20-Aug-2026 3:10 PM</date>
    <subject>Course Timetabling: Assigned Classes, Not-Assigned Classes, Changes, Assignment History, Solution Reports, Saved Timetables</subject>
    <msg>- removed the older version of the TableInterface and DataTable</msg>
    <msg>- a number of course timetabling solver pages changed to use the newer TableInterface and TableWidget</msg>
  </logentry>
  <logentry revision="59c5147">
    <commit>59c51471c160196fdf9946e1bbc886352981c099</commit>
    <author>Tomáš Müller &lt;muller@unitime.org&gt;</author>
    <date>14-Aug-2026 11:28 AM</date>
    <subject>Customization: Banner 9 Catalog Course Details</subject>
    <msg>- when the API call fails, throw an error rather than returning an error message</msg>
    <msg>- this will avoid caching the error message, so the online scheduling server will try again next time the details are requested for the course</msg>
  </logentry>
</log>
