V9.0.0-beta.7
Pre-release
Pre-release
·
340 commits
to master
since this release
Release 378
Features
- [#13103]Account request form: No need to CC the email 'Acknowledgement of Instructor Account Request' by @Ashwinn11 in #13116
- [#13102] Admin rejecting account request: give actual account in the email template by @Andy-W-Developer in #13118
- [#13105] Admin managing account requests: use spinners to indicate actions in progress by @Respirayson in #13135
- [#12872] Warn instructors not to share link with students by @itstrueitstrueitsrealitsreal in #13137
- [#13104] Accounts request form: auto-unify country names by @franciscoSavala in #13117
- [#12655] Instructor Edit Session Page: If make session visible is later than submission opening time, automatically default to opening time by @Respirayson in #13143
- [#12749] Autosave and restore progress if user navigates away by @Respirayson in #13140
- [#12664] - Instructor's Student Records Page: Accessibility issue for comment buttons by @NeoHW in #13155
- [#13122] Create cancel button for instructor request form by @NeoHW in #13156
- [#12375] Update phrasing of contact page by @itstrueitstrueitsrealitsreal in #13157
- [#13104] Add mappings by @itstrueitstrueitsrealitsreal in #13166
- [#13235] Admin -> account request management page: make action icons buttons by @sanjyot242 in #13252
- [#12508] Give respondents a way to reset a rubric question submission by @NeoHW in #13145
- [#12653] Copy course modal: Mandatory fields not highlighted by @AaronToh in #13411
- [#13472] Instructor session results page: Multiple retry buttons by @iZUMi-kyouka in #13512
- [#13638] Ambiguous delete button for deadline extension by @viictor1 in #13655
- [#13470] Notification Banner: only one notification banner shown at a time by @lthoedt in #13665
- [#12142] Recovering session links: misleading error message when CAPTCHA doesn't show up by @viictor1 in #13666
- [#13455] Allow real email providers in dev server, and implement SMTP sender by @iZUMi-kyouka in #13575
- [#13605] Normalize email addresses to lowercase by @PhoebeY05 in #13630
- [#13471] Notifications page: Add Mark All as Read button by @christinalegaki in #13687
- [#13066] Merge result table with pending account requests table by @AaronToh in #13619
- [#13787] Copy instructors modal: primary action should be rightmost button by @NurSenaKaraduman in #13788
Bug Fixes
- [#13109]-IndexOutOfBoundsException encountered by LogsProcessor by @Ashwinn11 in #13120
- [#12875] Some feedback sessions duplicated in student home page by @Respirayson in #13130
- [#12578]
@sign is shown as@when viewing essay question submission page by @Respirayson in #13142 - [#12779] Fix notifications update logic by @marquestye in #13083
- [#12894] Calculate msq totals by student email instead of name by @itstrueitstrueitsrealitsreal in #13141
- [#13147] Didn't Account for the Timezone in Session Edit Form component tests by @Respirayson in #13148
- [#13331] Remove extra underline under whitespace by @mufaddal404 in #13332
- [#13334] Fix NullPointerException while creating FeedbackSessionData by @DhiraPT in #13335
- [#13338] Radio button selection syncs across Constant Sum questions by @twhjames in #13352
- [#11754] Instructor creating course: 'Institute' drop-down is empty if there are no active courses by @samuelfangjw in #13437
- [#13439] Instructor Notifications Page: Notifications sometimes show as unread despite being read by @iZUMi-kyouka in #13444
- [#13446] Instructor Student Records Page: race condition causes unnecessary data to be fetched by @iZUMi-kyouka in #13457
- [#13524] When copying from previous feedback sessions, unable to type more than 38 characters in feedback session name by @iZUMi-kyouka in #13525
- [#13526] Question details for text, mcq-single, rubric, and numerical scale not preserved when copying from previous session by @iZUMi-kyouka in #13527
- [#13545] Application crashes due to empty build chunk with wrong MIME type by @iZUMi-kyouka in #13549
- [#12679] Fix whitespace-only copied session name validation in copy modal by @YuF-9468 in #13564
- [#13119] Allow instructor account creation when email exists as student account by @AaronToh in #13629
- [#13656] Preserve hyperlink in plaintext email by @Nsohko in #13676
- [#13596] Saved text responses with trailing spaces are incorrectly displayed as unsaved by @Samarth07-ctrl in #13707
- [#12774] Fix feedback sessions not fetched by deadline extensions by @TobyCyan in #13727
- [#13590] Fix fetching and creation of session access activity logs by @samuelfangjw in #13779
- [#13594] Question incorrectly displayed as saved when there are submission errors by @samuelfangjw in #13595
- [#13777] Dynamically generated MCQ/MSQ options are persisted resulting in duplicates by @samuelfangjw in #13778
- [#13590] Fix logs not populating when not logged in by @samuelfangjw in #13785
- [#13552] Copy instructors from other course modal is empty when there are no valid courses to copy from by @Joseph1276 in #13770
- [#13586] Fix student edit form accepts whitespaces in team field by @ishani-das in #13783
- [#13710] Admin Search: Unable to expand account requests row by @BAIZIKING in #13786
- [#13738] Fix broken links without feedbackSessionId by @samuelfangjw in #13817
- [#12596] Instructor extending individual deadlines: table doesn't sort by team by @Gambit-02 in #13792
Code Quality Improvements
- [#13064] Use AccountRequestUpdateRequest as parameter by @Stain19 in #13068
- [#13228] Standardize the Naming Conventions for FeedbackSession Actions by @DhiraPT in #13229
- [#13263] Add null checks to methods in Student class by @DhiraPT in #13264
- [#13592] Enforce unit of work pattern for hibernate sessions by @samuelfangjw in #13626
- [#11760] Decouple deadline extension from feedback session update request by @TobyCyan in #13631
- [#13673] Move PR Request Checker script to a separate js file by @Nsohko in #13686
- [#13662] Add ability to set backend env explicitly by @Nsohko in #13668
- [#13682] Remove parseToEmail from EmailSenderService interface by @DuckyGuy in #13685
- [#13716] Decouple deadline extensions maps from feedback session data by @TobyCyan in #13728
- [#13717] Clean up usages of getUuidFromString by @eduardo-kurek in #13724
- [#13721] Refactor StudentData to have non-nullable userId by @samuelfangjw in #13736
- [#13721] Optimize ReadNotification actions by @samuelfangjw in #13732
- [#13441] Enforce uniqueness constraint for read notifications by @iZUMi-kyouka in #13689
- [#13718] Replace InstructorCommentsComponent inheritance with composition by @eduardo-kurek in #13754
- [#13721] Remove getCopyForUser in FeedbackSession entity by @samuelfangjw in #13797
- [#13721] Convert feedback missing response to a DTO by @samuelfangjw in #13798
- [#13721] Enforce silent deletion at logic layer by @samuelfangjw in #13799
- [#13747] Remove unknown properties from data bundles by @samuelfangjw in #13800
- [#13721] Add getQuestionType to FeedbackQuestion by @samuelfangjw in #13801
- [#13773] Refactor duplicate instructor tab creation by @malconsimbi in #13804
- [#13834] Replace Observable with generics in HTTP service methods by @maniyoussef in #13835
- [#13721] Standardize data bundle relationship ids by @samuelfangjw in #13844
- [#13850] Optimize GetNotificationsAction with DB-level unread filtering by @techvoyager-varun in #13849
Testing Related Improvements
- [#12588] Test coverage improvements for InstructorResponsesViewBase by @justinsegawa in #13087
- [#13304] Refactoring for Unit Test Access Controls by @arnav-goel05 in #13357
- [#13326] Poor data cleanup after the SQL E2E tests leads to unexpected errors when running E2E tests by @larrywangggg in #13377
- [#12588] Improve test code coverage of LogsDetails by @iZUMi-kyouka in #13413
- [#12588] Add tests for LogsHistogramComponent by @ekamsinghahuja in #13423
- [#13461] Remove dev server login page usage in E2E tests by @revi-iit in #13555
- [#13304] Refactor access control tests in GetCourseSectionNamesActionTest by @logancribbs in #13571
- [#13606] Fix flaky date-time spec test in session edit form component by @TobyCyan in #13607
- [#13304] Refactoring for Unit Test Access Controls by @Rockernun in #13404
- [#12048] Clean up E2E tests by @samuelfangjw in #13625
- [#13627] Remove redundant and low value E2E tests by @samuelfangjw in #13628
- [#12588] Improve test code coverage for LogsTableComponent by @pabniecor in #13632
- [#12588] Improve test code coverage of core components by @Joseph1276 in #13775
- [#13814] Fix timing dependent tests by @samuelfangjw in #13815
- [#13832] TypeScript cannot find describe even with jest types installed by @samuelfangjw in #13833
- [#13836] Fix failing email generator test by @samuelfangjw in #13837
- [#13829] Fix flaky InstructorFeedbackReportPageE2ETest by @samuelfangjw in #13838
- [#13845] Update session end time for open sessions in data bundles by @samuelfangjw in #13846
- [#13847] E2E test suite optimisation and cleanup by @samuelfangjw in #13848
Datastore to PostgreSQL Migration
- [#12048] Migrate FeedbackRubricQuestionsE2E by @yuanxi1 in #13078
- [#12048] Migrate SubmitFeedbackResponseAction tests by @FergusMok in #13033
- [#12048] Remove null default section by @FergusMok in #13040
- [#12048] Migrate InstructorCourseStudentDetailsEditPageE2ETest by @weiquu in #13069
- [#12048] Migrate tests for DeleteAccountActionTest by @mingyang143 in #13200
- [#12048] Migrate tests for DeleteFeedbackQuestionActionTest by @BunnyHoppp in #13218
- [#12048] Migrate tests for DeleteNotificationActionTest by @InfinityTwo in #13201
- [#12048] Migrate tests by @mingyang143 in #13206
- [#12048] Migrate Tests for DeleteStudentsActionTest by @DhiraPT in #13205
- [#12048] Migrate Tests for DeleteStudentActionTest by @DhiraPT in #13204
- [#12048] Migrate tests for GetAccountsAction.java by @mingyang143 in #13214
- [#12048] Migrate tests for MarkNotificationAsReadActionTest by @InfinityTwo in #13222
- [#12048] Migrate tests for DeleteAccountRequestActionTest by @peasantbird in #13213
- [#12048] Migrate tests for GetReadNotificationsActionTest by @InfinityTwo in #13220
- [#12048] Migrate tests for GetNotificationActionTest by @InfinityTwo in #13210
- [#12048] Migrate tests for CreateNotificationActionTest by @InfinityTwo in #13209
- [#12048] Migrate tests for GetUsageStatisticsActionTest by @InfinityTwo in #13245
- [#12048] Refactor tests for DeleteFeedbackQuestionActionTest by @BunnyHoppp in #13246
- [#12048] Migrate tests for GetTimeZonesActionTest by @InfinityTwo in #13244
- [#12048] Migrate tests for GetNotificationsActionTest by @InfinityTwo in #13219
- [#12048] Migrate Tests for DeleteInstructorActionTest by @DhiraPT in #13207
- [#12048] Migrate tests for GetAccountActionTest by @mingyang143 in #13212
- [#12048] Migrate tests for UpdateFeedbackQuestionActionTest by @BunnyHoppp in #13231
- [#12048] Migrate tests for CreateFeedbackQuestionActionTest by @BunnyHoppp in #13240
- [#12048] Migrate tests for CalculateUsageStatisticsAction by @InfinityTwo in #13247
- [#12048] Migrate tests for UpdateNotificationActionTest by @InfinityTwo in #13224
- [#12048] Migrate tests for UpdateInstructorActionTest by @BunnyHoppp in #13256
- [#12048] Migrate Tests for FeedbackSessionPublishedRemindersActionTest by @DhiraPT in #13223
- [#12048] Migrate tests for CreateInstructorActionTest by @BunnyHoppp in #13255
- [#12048] Migrate tests for CompileLogsActionTest by @InfinityTwo in #13233
- [#12048] Migrate tests for GetCoursesActionTest by @mingyang143 in #13232
- [#12048] Migrate tests for CreateFeedbackSessionLogActionTest by @InfinityTwo in #13239
- [#12048] Migrate tests for QueryLogsActionTest by @InfinityTwo in #13234
- [#12048] Migrate tests for GetStudentActionTest by @mingyang143 in #13241
- [#12048] Migrate Tests for FeedbackSessionClosedRemindersActionTest by @DhiraPT in #13208
- [#12048] Migrate Tests for SearchInstructorsActionTest by @DhiraPT in #13259
- [#12048] Migrate Tests for RegenerateStudentKeyActionTest by @DhiraPT in #13258
- [#12048] Migrate Tests for RegenerateInstructorKeyActionTest by @DhiraPT in #13226
- [#12048] Migrate tests for JoinCourseActionTest by @mingyang143 in #13265
- [#12048] Migrate tests for GetSessionResultsActionTest by @mingyang143 in #13216
- [#12048] Migrate tests for CreateAccountRequestActionTest by @peasantbird in #13253
- [#12048] Migrate tests for SendErrorReportActionTest by @jasonqiu212 in #13280
- [#12048] Migrate tests for SendLoginEmailActionTest by @jasonqiu212 in #13276
- [#12048] Migrate tests for JsonResultTest by @InfinityTwo in #13274
- [#12048] Migrate tests for GetAuthInfoActionTest by @BunnyHoppp in #13273
- [#12048] Migrate tests for SearchAccountRequestsActionTest by @peasantbird in #13272
- [#12048] Migrate tests for GetAccountRequestActionTest by @peasantbird in #13270
- [#12048] Migrate tests for ResetAccountRequestActionTest by @peasantbird in #13271
- [#12048] Migrate tests for GetDeadlineExtensionActionTest by @InfinityTwo in #13266
- [#12048] Migrate tests for GetSessionResponseStatsActionTest by @mingyang143 in #13277
- [#12048] Migrate tests for ResetAccountActionTest by @mingyang143 in #13279
- [#12048] Migrate tests for GetRegkeyValidityActionTest by @mingyang143 in #13278
- [#12048] Migrate tests for GetInstructorsActionTest by @mingyang143 in #13267
- [#12048] Migrate tests for DeleteFeedbackResponseCommentActionTest by @BunnyHoppp in #13249
- [#12048] Migrate tests for CreateFeedbackResponseCommentActionTest by @BunnyHoppp in #13248
- [#12048] Migrate Tests for SearchStudentsActionTest by @DhiraPT in #13269
- [#12048] Migrate Tests for FeedbackSessionClosingSoonRemindersActionTest by @DhiraPT in #13211
- [#12048] Migrate Tests for FeedbackSessionOpenedRemindersActionTest by @DhiraPT in #13215
- [#12048] Migrate Tests for FeedbackSessionOpeningSoonRemindersActionTest by @DhiraPT in #13221
- [#12048] Migrate tests for ActionFactoryTest by @BunnyHoppp in #13283
- [#13287] Fix GetHasResponsesAction by @BunnyHoppp in #13288
- [#12048] Migrate tests for UpdateFeedbackResponseCommentActionTest by @BunnyHoppp in #13251
- [#12048] Migrate tests for GetActionClassesActionTest by @BunnyHoppp in #13285
- [#12048] Migrate tests for BinFeedbackSessionActionTest by @BunnyHoppp in #13284
- [#12048] Migrate tests for GetHasResponsesActionTest by @BunnyHoppp in #13289
- [#12048] Migrate tests for GetStudentsActionTest by @mingyang143 in #13243
- [#12048] Migrate tests for SessionLinksRecoveryAction by @domoberzin in #13281
- [#12048] Migrate Student Search Indexing Worker Action Test by @domoberzin in #13295
- [#12048] Migrate tests for GetFeedbackSessionSubmittedGiverSetActionTest by @peasantbird in #13294
- [#12048] Migrate GetInstructorPrivilegeActionTest by @yuanxi1 in #13297
- [#12048] Migrate tests for RestoreFeedbackSessionActionTest by @jasonqiu212 in #13300
- [#12048] Migrate tests for InstructorSearchIndexingWorkerActionTest by @BunnyHoppp in #13286
- [#12048] Migrate GetCourseJoinStatusActionTest by @domoberzin in #13299
- [#12048] Migrate tests for GetFeedbackResponsesActionTest by @mingyang143 in #13268
- [#12048] Migrate GetFeedbackQuestionRecipientsActionTest by @domoberzin in #13301
- [#12048] Migrate GetFeedbackResponseCommentActionTest by @yuanxi1 in #13302
- [#12048] Migrate tests for PublishFeedbackSessionActionTest by @peasantbird in #13298
- [#13275] Fix potential incorrect sending of closing soon email by @DhiraPT in #13293
- [#12048] Migrate Tests for UpdateStudentActionTest by @DhiraPT in #13303
- [#12048] Migrate InstructorCourseStudentDetailsPageE2ETest by @InfinityTwo in #13310
- [#12048] Migrate tests for UnpublishFeedbackSessionActionTest by @peasantbird in #13296
- [#12048] Migrate InstructorFeedbackEditPageE2ETest by @mingyang143 in #13314
- [#12048] Migrate InstructorCourseEnrollPageE2ETest by @domoberzin in #13311
- [#12048] Abstract Access Controls to BaseActionTest by @InfinityTwo in #13254
- [#13324] Migrate to InstructorFeedbackEditPageSql by @DhiraPT in #13325
- [#12048] Migrate FeedbackResultsPageE2ETest by @domoberzin in #13308
- [#13324] Migrate to FeedbackSubmitPageSql by @DhiraPT in #13336
- [#13324] Migrate to AdminSearchPageSql by @DhiraPT in #13337
- [#12048] Migrate Tests for FeedbackConstSumRecipientQuestionE2ETest by @DhiraPT in #13318
- [#12048] Migrate Tests for AdminAccountsPageE2ETest by @DhiraPT in #13340
- [#12048] Migrate Tests for AdminNotificationsPageE2ETest by @DhiraPT in #13341
- [#12048] Migrate Tests for AdminSessionsPageE2ETest by @DhiraPT in #13342
- [#12048] Migrate Tests for AutomatedSessionRemindersE2ETest by @DhiraPT in #13343
- [#12048] Migrate Tests for FeedbackConstSumOptionQuestionE2ETest by @DhiraPT in #13344
- [#12048] Migrate Tests for FeedbackContributionQuestionE2ETest by @DhiraPT in #13345
- [#12048] Migrate Tests for FeedbackRankRecipientQuestionE2ETest by @DhiraPT in #13346
- [#13324] Migrate to InstructorCourseDetailsPageSql by @DhiraPT in #13347
- [#12048] Migrate Tests for InstructorCourseEditPageE2ETest by @DhiraPT in #13349
- [#12048] Migrate Tests for InstructorCourseJoinConfirmationPageE2ETest by @DhiraPT in #13350
- [#12048] Migrate tests for InstructorFeedbackSessionsPageE2ETest by @mingyang143 in #13330
- [#13415] Fix(sqllogic): Sort students by name in getStudentsForTeam by @DhiraPT in #13419
- [#13324] Migrate InstructorCoursesPage to SQL-based version by @WeeJean in #13414
- Refactor(db): Increase answer column size and add unique constraints by @DhiraPT in #13421
- [#12048] Migrate Unit Tests for SubmitFeedbackResponsesAction by @DhiraPT in #13424
- [#12048] Add SQL API DB unit tests and fix Javadoc links by @DhiraPT in #13431
- [#12048] Migrate E2E Tests for SystemErrorEmailReportE2ETest by @AaronToh in #13427
- [#12048] Migrate E2E Tests for InstructorSearchPage by @PhoebeY05 in #13422
- [#12048] Migrate E2E Tests for InstructorCoursesPage by @iZUMi-kyouka in #13432
- [#12048] Migrate E2E tests for StudentNotificationsPage by @TobyCyan in #13434
- [#13449] Stabilise CompileLogsActionTest by @AaronToh in #13448
- [#12048] Migrate E2E Tests for NotificationBanner by @PhoebeY05 in #13433
- [#13324] Migrate E2E Tests for InstructorSessionIndividualExtensionPage by @WeeJean in #13428
- [#12048] Migrate E2E Tests for FeedbackSubmitPage by @iZUMi-kyouka in #13425
- [#12048] Add new sql logic/core unit tests by @Nsohko in #13429
- [#13464] V9 clean slate sql by @PhoebeY05 in #13464
- [#12048] Add SQL Search Unit Tests by @Nsohko in #13447
- [#12048] Migrate E2E Tests for InstructorFeedbackReportPage by @TobyCyan in #13430
- [#12048] Migrate axe tests by @Nsohko in #13499
- [#12048] Migrate E2E Tests for InstructorStudentActivityLogsPage by @WeeJean in #13450
- [#12048] Migrate Axe Test by @WeeJean in #13501
- [#12048] Add account manager unit tests by @AaronToh in #13451
- [#12048] Migrate GetDeadlineExtensionActionTest by @Nsohko in #13601
- [#12048] Migrate FeedbackQuestionDetails test classes to SQL by @WeeJean in #13602
- [#12048] Migrate JsonUtilsTest.java by @TobyCyan in #13600
- [#12048][#11810] Remove datastore and archive courses feature by @mingyuancode in #13502
- [#13621] Add UserProvisionTest by @iZUMi-kyouka in #13622
- [#12048] Remove leftover dead code after migration by @samuelfangjw in #13648
- [#13663] Update id of FeedbackResponseComment to be UUID type by @Nsohko in #13671
- [#13700] Fix EmailGeneratorTestIT by @Nsohko in #13701
- [#12048] Rename some SQL-related classes and methods to remove 'Sql' prefix by @samuelfangjw in #13720
- [#13725] Remove dead code: AttributesDeletionQuery by @Copilot in #13726
- [#13721] Add entity IDs to API output by @samuelfangjw in #13731
- [#13738] Add feedbackSessionId to all session-related links by @WeeJean in #13744
- [#13714] Improve schema migration workflow by @AaronToh in #13748
- [#13714] Update Liquibase configuration and schema migration documentation by @samuelfangjw in #13771
- [#13738] Migrate GetFeedbackSessionAction to use feedbackSessionId by @samuelfangjw in #13781
- [#13721] Refactor course ID accessors to optimize fetching logic by @samuelfangjw in #13789
- [#13721] Enforce bidirectional association consistency for Data Bundles by @samuelfangjw in #13795
- [#13738] Migrate Bin Feedback Session Action to use feedbackSessionId by @samuelfangjw in #13803
- [#13738] Migrate Restore and Delete Feedback Session Action to use feedbackSessionId by @samuelfangjw in #13805
- [#13738] Migrate publish and unpublish session actions to use feedbackSessionId by @samuelfangjw in #13807
- [#13738] Migrate Get and Update Deadline Extensions actions to use feedbackSessionId by @samuelfangjw in #13808
- [#13738] Migrate Update Feedback Session action to use feedbackSessionId by @samuelfangjw in #13811
- [#13597] Migrate instructor pages and components away from Angular's Animations package by @viictor1 in #13806
- [#13738] Migrate remind session submission and result API to use feedbackSessionId by @samuelfangjw in #13819
- [#13738] Migrate Session Results Action to use feedbackSessionId by @samuelfangjw in #13820
- [#13738] Migrate feedback question Actions to use feedbackSessionId by @samuelfangjw in #13822
- [#13738] Migrate GenerateEmailAction to use feedbackSessionId by @samuelfangjw in #13823
- [#13738] Migrate CreateFeedbackSessionLogAction to use feedbackSessionId by @samuelfangjw in #13824
- [#13738] Migrate Giver Set and Response Stats Actions to use feedbackSessionId by @samuelfangjw in #13826
- [#13721] Move teams from users to students table by @samuelfangjw in #13813
- [#13721] Add getUserType to User entity by @samuelfangjw in #13816
Decoupling from Google Cloud Services
- [#13644] Remove GAE Dependency for Cron Jobs by @Nsohko in #13658
- [#13634] Remove Admin/Maintainer Logs by @PhoebeY05 in #13633
- [#13590] Refactor student activity logs to write directly to PostgreSQL instead of parsing logs by @PhoebeY05 in #13692
- [#13644] Remove GAE Dependence for Cron Jobs by @Nsohko in #13690
- [#13839] Allow configuration of TaskQueueService by @mvanhorn in https://github.com/TEAMMATES/teammates/pull/13840
Angular 20 Upgrade
- [#13459] Migrate Angular build system to Vite and esbuild by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13462
- [#13466] Migrate angular frontend to use standalone components by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13467
- [#13473] Remove deprecated sass functions by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13474
- [#13452] Update tsconfig to follow fresh Angular 20 project, enforce
strictTemplatesby @wkurniawan07 in https://github.com/TEAMMATES/teammates/pull/13491 - [#13484] Migrate frontend to use control flow syntax by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13550
- [#13495] Migrate to new angular handsontable wrapper by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13615
- [#13452] Remove intersection-observer polyfill by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13624
- [#13597] Migrate help and admin pages away from Angular's Animations package by @viictor1 in https://github.com/TEAMMATES/teammates/pull/13776
- [#13597] Migrate student pages and notification banner away from Angular's Animations package by @viictor1 in https://github.com/TEAMMATES/teammates/pull/13790
- [#13831] Fix ngbCollapse not calculating height correctly when using loading retry by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13857
- [#13597] Migrate instructor home, courses, and student components away from Angular's Animations package by @viictor1 in https://github.com/TEAMMATES/teammates/pull/13831
Documentation
- [#13160] Update documentation to use Docker Compose v2 by @NeoHW in https://github.com/TEAMMATES/teammates/pull/13161
- [#13227] Improve testing docs by @jasonqiu212 in https://github.com/TEAMMATES/teammates/pull/13242
- [#13291] PostgreSQL port conflict when running dev server by @myrilla12 in https://github.com/TEAMMATES/teammates/pull/13355
- [#13309] Improve E2E Testing docs by @Max20205760 in https://github.com/TEAMMATES/teammates/pull/13395
- [#13468] Docs: upgrade MarkBind to v6 by @Ayoub-glitsh in https://github.com/TEAMMATES/teammates/pull/13497
- [#12787] Update developer documentation by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13637
- [#13703] Invalid contributing guidelines link by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13704
- [#13066] Update documentation to reflect new changes to account request flow by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13709
Other Tasks
- [#12900] Gradle task componentTests should not stop entirely when only one task fails by @emrekenar in https://github.com/TEAMMATES/teammates/pull/12963
- [#13126] Fix failing component test cases by @dishenggg in https://github.com/TEAMMATES/teammates/pull/13127
- [#13126] Update timezone db by @wkurniawan07 in https://github.com/TEAMMATES/teammates/pull/13128
- [#12901] Check if the search service is active in account request search test by @cliu585 in https://github.com/TEAMMATES/teammates/pull/13101
- [#11383] Add detection of PRs linking to closed issues by @itstrueitstrueitsrealitsreal in https://github.com/TEAMMATES/teammates/pull/13154
- [#12169] Update
teammates-eslint.ymlto mark trailing whitespaces as errors on Ubuntu by @itstrueitstrueitsrealitsreal in https://github.com/TEAMMATES/teammates/pull/13152 - [#13158] Change docker compose command by @domoberzin in https://github.com/TEAMMATES/teammates/pull/13159
- [#13164] Fix typo by @itstrueitstrueitsrealitsreal in https://github.com/TEAMMATES/teammates/pull/13165
- [#8557] Standardize locale by @itstrueitstrueitsrealitsreal in https://github.com/TEAMMATES/teammates/pull/13162
- [#13261] Implement Email Sending Failure Behavior in MockEmailSender by @DhiraPT in https://github.com/TEAMMATES/teammates/pull/13262
- [#13363] Upgrade to Java 21 for Datastore Emulator compatibility by @DhiraPT in https://github.com/TEAMMATES/teammates/pull/13362
- [#13435] Remove unnecessary date calculation by @mingyuancode in https://github.com/TEAMMATES/teammates/pull/13436
- [#13356] Add manual workflow trigger to e2e tests by @madhav2348 in https://github.com/TEAMMATES/teammates/pull/13379
- [#13438] Update tzdb version to 2025c by @singhal-ansh in https://github.com/TEAMMATES/teammates/pull/13442
- [#13452] Upgrade to Angular 20 and Node.js 24 by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13453
- [#13458] Query selector syntax error on page navigation by @ettoreciolli1 in https://github.com/TEAMMATES/teammates/pull/13463
- [#12725] Make Java 21 the default version by @wkurniawan07 in https://github.com/TEAMMATES/teammates/pull/13475
- [#13503] Broken L&P and JDK 25 Component tests by @mingyuancode in https://github.com/TEAMMATES/teammates/pull/13508
- [#13538] Remove remaining FileStorage traces from codebase by @arpit-jaiswal-dev in https://github.com/TEAMMATES/teammates/pull/13541
- [#13481] Replace file-saver with native browser APIs by @apoorvdarshan in https://github.com/TEAMMATES/teammates/pull/13553
- [#13556] Remove DevServerLoginPageAxeTest by @YuF-9468 in https://github.com/TEAMMATES/teammates/pull/13565
- [#12749] Revert "Autosave and restore progress if user navigates away" by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13584
- [#12048] Disable l&p tests by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13610
- [#13611] Remove lnp tests by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13612
- [#13593] Remove entity JSON logging in EntitiesDb by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13617
- [#12048] Remove unnecessary SQL tests by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13618
- [#13356] Optimize GitHub Actions by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13616
- [#13591] Replace Solr-based search with PostgreSQL full-text search by @PhoebeY05 in https://github.com/TEAMMATES/teammates/pull/13614
- [#13591] Remove remaining solr references by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13623
- [#13649] Deprecate legacy endpoints by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13650
- [#13643] Simplify task queue by consolidating to two queues by @AaronToh in https://github.com/TEAMMATES/teammates/pull/13664
- [#13675] Upgrade liquibase by @DhiraPT in https://github.com/TEAMMATES/teammates/pull/13680
- [#12048] Remove legacy privileges by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13651
- [#13471] Revert "Notifications page: Add Mark All as Read button" by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13696
- [#13642] Add script to reset and seed database with mock data by @iZUMi-kyouka in https://github.com/TEAMMATES/teammates/pull/13681
- [#13721] Remove unused readNotifications field from AccountData by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13734
- [#13719] Bot to auto-reply to assign me comments on issues by @iZUMi-kyouka in https://github.com/TEAMMATES/teammates/pull/13756
- [#13729] Remove unused SearchServiceException by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13730
- [#13591] Update frontend for new search by @PhoebeY05 in https://github.com/TEAMMATES/teammates/pull/13713
- [#13640] Upgrade encryption stack by @AaronToh in https://github.com/TEAMMATES/teammates/pull/13674
- [#13645] Adopt Jackson JSON library by @iZUMi-kyouka in https://github.com/TEAMMATES/teammates/pull/13688
- [#13735] Add API definitions to source control by @hyeonjijulialee in https://github.com/TEAMMATES/teammates/pull/13764
- [#13641] Hardcode application version number by @hyeonjijulialee in https://github.com/TEAMMATES/teammates/pull/13765
- [#13721] Remove unused logic layer methods by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13802
- [#13809] Add npm dependency caching to GitHub Actions by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13810
- [#13721] Remove isOpenedEmailEnabled from FeedbackSession Entity by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13812
- [#13738] Remove unused check feedback session responses API by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13818
- [#13721] Deprecate GetDeadlineExtensionAction by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13821
- [#13827] Upgrade ESLint from v8 to v9 by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13828
- [#13827] Update Stylelint and Prettier Configuration by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13830
- [#13842] Remove deprecated Google Cloud Storage references by @Copilot in https://github.com/TEAMMATES/teammates/pull/13843
- [#13854] Remove GetAccountsAction by @samuelfangjw in https://github.com/TEAMMATES/teammates/pull/13855
New Contributors
- @Stain19 made their first contribution in #13068
- @emrekenar made their first contribution in https://github.com/TEAMMATES/teammates/pull/12963
- @Ashwinn11 made their first contribution in #13120
- @Respirayson made their first contribution in #13130
- @cliu585 made their first contribution in https://github.com/TEAMMATES/teammates/pull/13101
- @itstrueitstrueitsrealitsreal made their first contribution in #13137
- @franciscoSavala made their first contribution in #13117
- @justinsegawa made their first contribution in #13087
- @NeoHW made their first contribution in #13155
- @mingyang143 made their first contribution in #13200
- @BunnyHoppp made their first contribution in #13218
- @InfinityTwo made their first contribution in #13201
- @peasantbird made their first contribution in #13213
- @sanjyot242 made their first contribution in #13252
- @mufaddal404 made their first contribution in #13332
- @twhjames made their first contribution in #13352
- @myrilla12 made their first contribution in https://github.com/TEAMMATES/teammates/pull/13355
- @arnav-goel05 made their first contribution in #13357
- @larrywangggg made their first contribution in #13377
- @Max20205760 made their first contribution in https://github.com/TEAMMATES/teammates/pull/13395
- @madhav2348 made their first contribution in https://github.com/TEAMMATES/teammates/pull/13379
- @singhal-ansh made their first contribution in https://github.com/TEAMMATES/teammates/pull/13442
- @ekamsinghahuja made their first contribution in #13423
- @ettoreciolli1 made their first contribution in https://github.com/TEAMMATES/teammates/pull/13463
- @Ayoub-glitsh made their first contribution in https://github.com/TEAMMATES/teammates/pull/13497
- @arpit-jaiswal-dev made their first contribution in https://github.com/TEAMMATES/teammates/pull/13541
- @apoorvdarshan made their first contribution in https://github.com/TEAMMATES/teammates/pull/13553
- @revi-iit made their first contribution in #13555
- @YuF-9468 made their first contribution in #13564
- @logancribbs made their first contribution in #13571
- @Rockernun made their first contribution in #13404
- @pabniecor made their first contribution in #13632
- @viictor1 made their first contribution in #13655
- @lthoedt made their first contribution in #13665
- @christinalegaki made their first contribution in #13687
- @DuckyGuy made their first contribution in #13685
- @Samarth07-ctrl made their first contribution in #13707
- @eduardo-kurek made their first contribution in #13724
- @hyeonjijulialee made their first contribution in https://github.com/TEAMMATES/teammates/pull/13764
- @Joseph1276 made their first contribution in #13770
- @ishani-das made their first contribution in #13783
- @NurSenaKaraduman made their first contribution in #13788
- @BAIZIKING made their first contribution in #13786
- @Gambit-02 made their first contribution in #13792
- @malconsimbi made their first contribution in #13804
- @maniyoussef made their first contribution in #13835
- @mvanhorn made their first contribution in https://github.com/TEAMMATES/teammates/pull/13840
- @techvoyager-varun made their first contribution in #13849
Full Changelog: V9.0.0-beta.6...V9.00-beta.7