The following additions and changes were made in the MyTimetable 2020 releases, listed from new to old. For significant new features or important changes, a link to a separate blog post will be available.

VersionTypeDescriptionMore info
2020.30 (2020-11-10)

Add accessibility statement

Publication rule: add action to remove conference URL

Mobile: repair accessibility shortcomings from quick scan
Upgrade Google Analytics code to gtag.js

iCal request updates API last login date

Admin: statistics broken

Upgrade Node.JS to 14

Externalize or deny login page customization
2020.29 (2020-10-15)

GWT: make constrasting theme colors overridable
2020.28 (2020-10-13)

Changing default locale causes wrong (filter)type descriptions in en_GB
2020.27 (2020-10-11)

Add PostgreSQL support to SQL data providerMyTimetable 2020.27: accessibility, browser compatibility and many small updates

TermTime DP: use start and end time in links

TermTimeNG: support configuring links on events

Add conference/draft booleans to Excel/CSV export

Mobile: accessible icons in timetable view

Mobile: enable tabbable element outlines

Configurable window in SimpleEventChangePrioritizer

S+: allow using activity type from child activity

Make mobile interface styling customizable at runtime

Make Bootstrap pages styling customizable at runtime

Mobile accessibility: all functionality is operable through a keyboard

Personal timetable default setting improvements

NPE in Excel export when there are no week labels

Presto DP: leaves not working

Mobile: search button in search timetable view does not submit form

PostgreSQL: InsertChildWithExistingParent fragment for subscriptions does not work

Postgres: userprefs subscription query does not work

BrightspaceClient signature creation does not work

PDF week view missing activities

Mobile: group selection headers and text

Mobile: showing white borders for highlighted activities

iCal DP: LookupIcalTimetableTypeProvider breaks when lookups returns an error

Admin: error handling broken when adding iCalendar timetable

UserPrefs PostgreSQL: fix naming for queued_tasks table

Upgrade gwt-gradle-plugin to fix deprecation warnings

TermTime: rename repeat field to repeatOf

Mobile: move to ES6 modules instead of AMD

Introduce and use timetable type, timetable filter type and option type names from model

Let PDF exports use schema attribute names instead of custom I18N resources

Create a configuration migration tool

Migrate to OpenPDF

Upgrade Gradle to v6

Upgrade OpenCSV to v5

Replace Gulp and bower with Webpack
2020.26 (2020-08-04)

Mobile: reconsider aria labels that differ from visible text

EC: sync setup does not work

EC: create separate application/project

Merge API modules
2020.25 (2020-07-30)

Publication rules: condition on location / location suitability

Add a lang attribute to all html pages

Default configurations contain incorrect userPrefs.sql.type property

Upgrade Guava to 29-jre
2020.24 (2020-07-24)

ES: fix academic period filtering

Mobile: NotEnrolled_WarningHtml is being HTML escaped

Mobile: activity list does not refresh after removing timetables
2020.23 (2020-07-17)

Open Education DP: view student timetable

Open Education DP: view lecturer timetable

Uniform configuration of branding

Danish characters do not show correctly

Removing all subscriptions from a group removes the group from both the Timetable and the Location view

API: parameter excludeResourceTimetables for resource /subscriptions

HSTS header not set for proxied requests

Option selection always shown

S+ DP: activity_department filter times out

Help: errors in Danish translations

Remove Windows Phone and Blackberry features, because these platforms are no longer supported
2020.22 (2020-07-09)

WebUntis DP: list of classes should be received per study year
2020.21 (2020-07-08)

TermTime: support meeting API fields
2020.20 (2020-06-27)

S+: department zone filtering not working correctly

2020.19 (2020-06-26)

S+: parameters should only be escaped when used in LIKE query

GWT: header background image does not work

S+ NG: prevent WRB timetables with empty ID

Disable HTTP/2 in default config

2020.18 (2020-06-23)

MTT DP: cannot insert Event

S+: department zone filter does not work for group timetables

Other event type color handled incorrectly

Mobile: subscription list not loading

Extract Eveoh-specific configuration into a separate file and profile
2020.17 (2020-06-10)

Set conference bit through publication rules

Expose conference bit in API

Mobile: Restore to default / remove timetable shows multiple
2020.16 (2020-06-07)

Mobile: allow 'resetting' all subscriptions of a uniting group

MyTimetable 2020.16: online conferences and announcements

Mobile: allow 'resetting' individual subscription

TermTime DP: support mapping of custom attributes

Help: add/rewrite section about removing and resetting subscriptions

Announcement message: display in desktop front-end

Announcement message: display in mobile front-end

Announcement message: admin interface

Allow events to include module Uid

S+: allow module tags to be retrieved

Publication rules: condition based on module tags

Mark activities as being online activities

Markdown support for announcement long text

Improve styling of announcement in mobile interface

Mobile: display the announcement in the main menu too

GWT: hide announcement for the rest of the browser session

Mobile: tapping the glass panel should dismiss the modal

API requests with forward slash do not work

Support Postgres as datasource
2020.15 (2020-05-23)

Let the ConfigurationDAO return an empty optional if an object is not stored
2020.14 (2020-05-22)

Mobile: show menu links

Bulk resync for external calendaring

ES: event links do not work

Mobile timetable cannot be retrieved by hostKey

Upcoming page is broken

S+: SyllabusWeekPatternSummaryGenerator throws NPE

auth-static profile does not work

TermTime: ModuleEntityProvider returns all moduleoffers if staff member not scheduled
2020.13 (2020-05-06)

S+: Cannot set header message with all locales defined

MyTimetable logo missing if application runs with custom contextPath

Browser caching not working as expected

O365 EC: handle MailboxNotHostedInExchangeOnline
2020.12 (2020-04-29)

Lookup-based iCal timetable provider

GWT: clicking on the dots of the subscription group menu button toggles collapsed state

OSIRIS DP: all-day events cause NPE

EchoResponseErrorHandler triggers stack overflow on 401/403

Convert Data Provider XML config to Java config

Remove CanvasIcalUrlService and write upgrade notes
2020.11 (2020-04-09)

Add PDF export for Availability viewMyTimetable 2020.11: Availability view PDF

Desktop: allow 'resetting' individual subscription

Desktop: allow 'resetting' all subscriptions of a uniting group

Implement caching wrapper for lookups

Support multiple lookups in ConfigurableTimetableSuggestionStrategy/GrantedAuthoritiesProvider

RestWebServiceLookup: make it possible to ignore certain failures

Adjust OSIRIS provider for new format

EC: mention MyTimetable in calendar appointments

API: return custom attributes for staff

PDF export list by location shows '>' as end time instead of '00:00' when event ends exactly at midnight

Condensed list view crashes because of defective comparator

Clicking on locale in collapsible menu of help page doesn't actually switch locale

Pdf week view: rendering when event(s) end at 0:00 renders incorrectly

Location view PDF exports: events timezone adjusted which start/end on the other day are not exported and rendered

Test run generates logs in wrong dir/non-excluded dir

TermTime: cannot use all staff/room data fields

i18n 'Week' string in PdfWeekView class

Use Spring's built-in asset cache busting

Upgrade mssql-jdbc to 8.2.2.jre11

Use nexus proxy for NodeJS download

Upgrade Spring Boot to v2.2.6

Upgrade Spring Boot to v2.2.5
2020.10 (2020-02-28)

Old moduleviewer URL adds empty startDate parameter

Removing trailing space of child subscription name breaks user profile

ES: AcademicPeriod retrieved on incorrect column and not cached correctly

TermTime: not using correct fields when mapping events

Admin: Unset time zone in user preferences not handled

iCal DP: use feed timezone

Move common datasource config to Javaconfig

Remove jgroups version dependency

Scope caches to DataSource by default
2020.9 (2020-02-13)

Placeholder replacement Admin.Metrics.Customer.Hostname fails
2020.8 (2020-02-13)

S+: select/calculate an isJta bit when retrieving activities

S+ NG: Improve StudentSet timetable retrieval performance

Same Time Activities broken with occurrences in week

Convert custom ActivationConditions to Spring Boot default conditions
2020.7 (2020-02-11)

CSV export: add header

CSV export: option to remove week headers

S+: implement modulepos timetables

S+: student set option association enhancements

S+: staff children do not support avoid concurrency

Allow disabling all downloads

Help: remove download explanations if not in use
2020.6 (2020-02-05)

TimetableSuggestionStrategy based on scheduled modules for TermTime staff

S+ activity id generation optimisation

MyTimetable 2020.6: Improving change notifications
2020.5 (2020-01-30)

GWT temporalsMyTimetable 2020.5: Better time zone support and SameSite cookie handling

Return to mobile welcome page after a successful logout from mobile

Timezone issue in GWT list view

Error when opening settings dialog if OAuth is enabled

GWT: day/week calendar viewport indicators only appear after scrolling

Send SameSite header on session cookie
2020.4 (2020-01-21)

Support non-personal/synced auto-added subscriptions
2020.3 (2020-01-19)

Admin show user page broken
2020.2 (2020-01-17)

S+: event student set retrieval performance

Use up-to-date moment-tz database

auth-static profile does not work

Redirect after login incorrect in dev mode

Redirect loop if SAML auth fails

Decrease max batch size
2020.1 (2020-01-03)

S+: add support for Same Time Activities

Rename 'event' to 'activity' in publication rules resource bundle

Update wiki documentation for Spring Boot packaging

Use java.time (JSR-310) in backend

Publication rules: move start/end time forward/backward naming

Configure default access log rotation in MyTimetable Web Server

ES: optimise activity retrieval

GWT: URL parameter 'addTimetables' is vulnerable to CSRF

Untis: merge note fields

DataSourceBasedSqlLookupFactoryBean depends on datasources being initialized

GCal: refreshing the page after successful sync pops up error dialog box

DataSource.sqlDataSource not set correctly

Incorrect text in notification settings

Deprecated configuration properties not always detected

TermTimeNG: identifiers don't fit in relevant user preferences columns

Mobile: Event sequence filtering broken

TermTime endTime handling incorrect

Adding all-day/multiday timetable and navigating to its events throws http status 500

DateRangePicker renders exclusive end dates, instead of inclusive

Condensed list views render incorrect week numbers for multi-week events

Same Time Activities not working for modules and student sets

Opening timetable from overview page shows wrong week

Upgrade Spring Boot to v2.2.1

EventPostProcessingServiceImpl queries subscriptions for each event

S+ data provider should only query if daterange matches database

Upgrade JUnit to v5