v2.5.0
What's Changed
New Features
- [TreeView] Redesign UX for narrow windows by @imnasnainaec in #3816
- Enable cancellation for Lift exports by @andracc in #3664
- [ChooseProject] Add horizontal lines between project names by @imnasnainaec in #3807
Defect Fixes
- Allow apostrophe in file names by @imnasnainaec in #3804
- [ReviewEntries] Prevent empty dialog after Enter-selecting domain by @imnasnainaec in #3805
- [Statistics] Fix line-graph color loading error by @imnasnainaec in #3810
- [MergeDups] Fix audio-loss bugs by @imnasnainaec in #3814
- [UserRepositoryMock] Fix Update error when no user found by @imnasnainaec in #3840
- [MergeDups] Fix bug saving merge after use of extra column by @imnasnainaec in #3869
- Tighten security on user info by @imnasnainaec in #3868
Code Maintenance
- GHA dependency upgrades for May 2025 by @imnasnainaec in #3786
- Update dependabot.yml by @imnasnainaec in #3748
- Migrate more frontend tests to testing-library by @imnasnainaec in #3749
- For non-empty project check, just query database for 1 word by @imnasnainaec in #3756
- Fix find-circular-deps; Fix 3 circular deps by @imnasnainaec in #3796
- [Backend.Tests] Change sealed internal to internal sealed by @imnasnainaec in #3833
- [Backend] Move PasswordReset*Data classes to Models by @imnasnainaec in #3835
- [Backend.Tests] Clean up LevenshteinDistance, LiftService by @imnasnainaec in #3834
- [SemanticDomainController] Fix GetAllSemanticDomainTreeNodes return type by @imnasnainaec in #3837
- [BannerController] Add missing ProducesResponseType for Status403Forbidden by @imnasnainaec in #3842
- [AvatarController] Restrict UploadAvatar to current user by @imnasnainaec in #3839
- [PermissionService] Remove IsCurrentUserAuthorized redundancies by @imnasnainaec in #3838
- [InviteController] Add ProducesResponseType attributes, one test by @imnasnainaec in #3843
- [AudioController] Clean up methods and add tests by @imnasnainaec in #3841
- [MergeController] Add ProducesResponseType attributes, six tests by @imnasnainaec in #3844
- [maintenance/scripts] In rm_project.py, update collections by @imnasnainaec in #3861
- [Data Cleanup] Speed up check for deferred duplicates by @imnasnainaec in #3793
- Migrate AppBar, Buttons, GoalTimeline, MergeDups, Pronunciations to testing-library by @imnasnainaec in #3802
- [frontend] Upgrade react-router from v6 to v7 by @imnasnainaec in #3797
- Backend dependency bump for May 2025 by @imnasnainaec in #3789
- Remove act from around testing-library async clicks by @imnasnainaec in #3856
Deployment
- Fix and pin OTEL collector chart and image by @andracc in #3788
- Change dictionary pieces from ts to text by @imnasnainaec in #3806
- [README] Update deployments/pods lists with otel by @andracc in #3790
Other Changes
- [Statistics] Have "Daily Totals" first and always black by @imnasnainaec in #3811
- [MergeDups] Make gloss and definition merging more uniform by @imnasnainaec in #3743
Full Changelog: v2.4.0...v2.5.0