Releases: sillsdev/TheCombine
Releases · sillsdev/TheCombine
v2.9.0
What's Changed
Enhancements
- Implement message acknowledgment with retry logic for SignalR by @Copilot in #4122
- [UserSettings] Clarify save button by @imnasnainaec in #4123
- [CancelConfirmDialog] Add optional Enter-response; Absorb ButtonConfirmation by @Copilot in #4112
- [NoteButton] Use multiline text field for wordwrap by @imnasnainaec in #4157
- [SiteSettings > UserManagament > ConfirmDeletion] Refactor by @imnasnainaec in #4136
- [SiteSettings>UserManagement] Add menu with projects, delete options by @imnasnainaec in #4143
Defect Fixes
- [ProjectSpeakersList] Allow create speaker custom error handling by @imnasnainaec in #4158
- [import] Handle creating project from empty LIFT by @imnasnainaec in #4160
- [LiftService] Remove redundant XML encoding of entry id by @imnasnainaec in #4168
- Fix recording button getting stuck on touch screens by @Copilot in #4180
Documentation
- [README] Add missing restore flag by @imnasnainaec in #4175
- Clean up C# styles by @imnasnainaec in #4177
Deployment
- [deploy] Fix helm chart values by @imnasnainaec in #4188
- Use consistant ansible bool by @imnasnainaec in #4106
- [maintenance] Add monthly backups to AWS retention policy by @Copilot in #4128
Installer
- [gha] Expand installer upload trigger by @imnasnainaec in #4131
- [installer] Handle docker apt conflicts automatically by @imnasnainaec in #4120
Maintenance
- Remove unnecessary useEffect dependencies by @imnasnainaec in #4135
- Add IDE warning for unused private members by @imnasnainaec in #4137
- Add UserAvatar component for independent src handling by @imnasnainaec in #4134
- Make general LoggerMock by @imnasnainaec in #4138
- Remove unnecessary jest.(clear/reset)AllMocks calls by @imnasnainaec in #4140
- Prefer sx over style-and-theme by @imnasnainaec in #4132
- Word service update return type by @imnasnainaec in #4150
- Allow getting a word from the Frontier by @imnasnainaec in #4148
- [WordService] Refactor DeleteAudio and DeleteFrontierWord by @imnasnainaec in #4154
- [MergeService] Refactor methods by @imnasnainaec in #4155
- [ActiveProjectUsers] Clean up state management by @imnasnainaec in #4142
- Use NUnit Analyzers by @imnasnainaec in #4163
- [WordService] Refactor RestoreFrontierWords by @imnasnainaec in #4161
- [Backend.Tests] Clean up style by @imnasnainaec in #4165
- Update audio tests by @imnasnainaec in #4153
- [LiftService] Don't copy unused things for deleted lift entry by @imnasnainaec in #4173
- Add missing Word Controller/Service tests by @imnasnainaec in #4151
- [LiftService] Extract internal methods for testing by @imnasnainaec in #4169
- Migrate MongoDB GUIDs from subtype 3 to 4 by @Copilot in #4179
- Bump minimatch from 3.1.2 to 3.1.5 by @dependabot[bot] in #4186
- Bump mui-language-picker and axios by @imnasnainaec in #4141
- Bump immutable from 4.3.7 to 4.3.8 by @dependabot[bot] in #4193
- Fix unstable i18n mock by @imnasnainaec in #4133
Full Changelog: v2.8.2...v2.9.0
v2.8.2
What's Changed
New Features
- [MergeDups] Separate identical vs similar duplicate finding with intermediate dialog by @Copilot in #4039
Deployment
- Bump Docker and python deps by @imnasnainaec in #4097
- Fix installer grab of current user by @imnasnainaec in #4105
- Add path to trigger installer update by @imnasnainaec in #4107
- [GHA] Add install-scripts to installer upload trigger by @imnasnainaec in #4108
- [installer] Fix the upload triggers by @imnasnainaec in #4121
- [installer] Add debugging for k8s user by @imnasnainaec in #4117
- Skip version check for uninstall operations by @Copilot in #4115
- [installer] Ensure NetworkManager is running by @imnasnainaec in #4116
- [maintenance] Fix add_user_to_proj script error by @imnasnainaec in #4101
- [installer] Trim whitespace off user-entered variables by @imnasnainaec in #4118
- [installer] Bandage broken conditionals by @imnasnainaec in #4126
Maintenance
- Bump frontend production deps by @dependabot[bot] in #4071
- Bump lodash from 4.17.21 to 4.17.23 by @dependabot[bot] in #4104
- Fix singleton LiftService dependency on transient repositories by @Copilot in #4091
- Refactor MergeService from Singleton to Transient with IMemoryCache by @Copilot in #4095
- [WordRepository, WordService] Refine DeleteFrontier usage by @imnasnainaec in #4100
- [StatisticsService] Fix dependency injection lifetime mismatch by @imnasnainaec in #4093
Full Changelog: v2.8.1...v2.8.2
v2.8.1
What's Changed
New Features
- [TreeView] Add domain count by @imnasnainaec in #4046
- Show protection indicators and reasons for entries in completed merges by @Copilot in #4036
Defect Fixes
- Update column order of user statistics table by @imnasnainaec in #4078
- Return focus to gloss field after note dialog interaction by @Copilot in #4037
- [CharInv] Preserve pre-find-and-replace status changes in goal history by @imnasnainaec in #4041
Security
- Use ignore-scripts to guard against supply-chain attacks by @imnasnainaec in #4045
Analytics
- Add created timestamp field to Project model by @Copilot in #4057
- [analytics] Add browser request accept-language by @imnasnainaec in #4060
- [otel] Log UI language from the frontend by @imnasnainaec in #4062
Maintenance
- Bump validator from 13.15.20 to 13.15.22 by @dependabot[bot] in #4050
- Bump the gha-deps group with 13 updates by @dependabot[bot] in #4074
- Update frontend dev deps and eslint config by @dependabot[bot] in #4070
- Update Backend.Test dependencies by @dependabot[bot] in #4076
- [dependabot] Decrease frequency to quarterly or semiannually by @imnasnainaec in #4081
- [dependabot] Ignore all npm major version updates by @imnasnainaec in #4082
- [gha] Trigger installer_release on deploy_release by @imnasnainaec in #4083
Full Changelog: v2.8.0...v2.8.1
v2.8.0
What's Changed
New Features
- [MergeDups] Add "Revert set" button to discard changes and reset to initial state by @Copilot in #3959
- [ReviewEntries] Track deleted entries and enable undo by @imnasnainaec in #3956
- Add statistics to administrator permissions by @imnasnainaec in #4040
- [UserStatistics] Add recent semantic domain column by @Copilot in #4022
- [SIteSettings] Take project roles, edits into account when deleting a user by @Copilot in #3971
- Lazy load language picker by @imnasnainaec in #3999
Defect Fixes
- [MergeDups] Fix protection-override data-loss warning by @Copilot in #3948
- [UploadImage] Disable "Save" button when no image selected by @Copilot in #3949
- Disable vernacular field when word or sense is protected by @Copilot in #3972
- Don't request email verification if email disabled by @imnasnainaec in #3989
- [NewEntry] Avoid focus while submission is underway by @imnasnainaec in #4016
- [ReviewEntriesCompleted] Fix key error by @imnasnainaec in #4042
Documentation
- [User Guide] Add info/help links by @imnasnainaec in #4033
- Prefer FieldWorks to FLEx by @imnasnainaec in #4034
- Update translations by @imnasnainaec in #4043
Deployment
- Move from
create-react-apptoparcelby @imnasnainaec in #3041 - Make sure public/script/ files exist by @imnasnainaec in #3960
- Add comment to keep kubectl version synced by @imnasnainaec in #3981
- Remove vesitigial showCertExpiration by @imnasnainaec in #3982
- Pin all Docker dependencies with SHA256 digests; Pin pip versions by @Copilot in #3968
- [GHA] Add installer workflow to test installer generation by @Copilot in #4020
- [GHA] Upload installer README to S3 when modified by @Copilot in #4028
- [GHA] Upload net-installer to S3 when make-combine-installer.sh changes by @Copilot in #4031
- [GHA] Add workflow to upload versioned installers on release by @Copilot in #4032
Other Changes
- Lock npm dependencies to patch-level updates; Upgrade axios and validator by @Copilot in #3966
- Clean up use of js/ts in scripts by @imnasnainaec in #4001
- Bump frontend deps by @imnasnainaec in #4002
- Add OTEL activity tracing to all Controllers, Services, and Repositories by @Copilot in #3958
- Tidy redux tests by @imnasnainaec in #3962
- Consolidate images by @imnasnainaec in #3963
- Tidy for ESLint 8 -> 9 upgrade by @imnasnainaec in #3964
- Fix docker_build condition to only run on prs by @imnasnainaec in #3985
- Bump GHA deps by @imnasnainaec in #4000
- Bump Backend.Tests dependencies by @dependabot[bot] in #3997
- Update dependabot ignores by @imnasnainaec in #4005
- Bump the gha-deps group with 3 updates by @dependabot[bot] in #4010
- Bump js-yaml by @dependabot[bot] in #4030
- Bump glob from 10.4.5 to 10.5.0 by @dependabot[bot] in #4029
- [GHA] Don't run front/back-end job on purely back/front-end pr by @imnasnainaec in #4035
New Contributors
- @Copilot made their first contribution in #3958
Full Changelog: v2.7.1...v2.8.0
v2.7.1
v2.7.0 broke vernacular and gloss suggestion in Data Entry. This is just reverting the part of #3941 that caused the issue.
What's Changed
Defect Fixes
- Revert TextFieldWithFont changes incompatible with legacy Autocomplete by @imnasnainaec in #3957
Full Changelog: v2.7.0...v2.7.1
v2.7.0
What's Changed
New Features
- Add setting to ignore merge sets with only protected words by @imnasnainaec in #3919
- Allow a second import that overwrites the frontier by @imnasnainaec in #3917
- Add email verification by @imnasnainaec in #3877
- [MergeDups] Make detailed bad-set err message by @imnasnainaec in #3928
Defect Fixes
- [ReviewEntries] Store edits from Pronunciations column by @imnasnainaec in #3926
- [CharInv] Have find-replace auto-save would-be-lost changes by @imnasnainaec in #3937
- Improve email message readability by @imnasnainaec in #3950
- [EmailVerify] Logout on success to avoid cross-tab state confusion by @imnasnainaec in #3953
Documentation
- Update User Guide and translations by @imnasnainaec in #3889
- Update Spanish translations; Fix a few typos by @imnasnainaec in #3945
- [User Guide] Update navigation translations by @imnasnainaec in #3946
Deployment
- Upgrade Node from 20 to 22 LTS by @imnasnainaec in #3903
- Bump the gha-deps group with 11 updates by @dependabot[bot] in #3891
- Update GHA endpoints, formatting by @imnasnainaec in #3918
- Add GHA workflow with pr labeler by @imnasnainaec in #3923
- Do minor labeler, deploy cleanup by @imnasnainaec in #3927
- Remove each subdir once tar'd for backup by @imnasnainaec in #3947
Backend Maintenance
- Bump the backend-deps group with 13 updates by @dependabot[bot] in #3897
- Dispose MongoDb, SLDR in singletons by @imnasnainaec in #3924
- [Backend] Nix unnecessary contexts by @imnasnainaec in #3931
- Make all the test classes internal sealed/static by @imnasnainaec in #3932
- Clean up login/token/user-related things by @imnasnainaec in #3938
- Update token handling for password reset & project invite by @imnasnainaec in #3920
Frontend Maintenance
- [DataEntry] Migrate from deprecated react-test-renderer by @imnasnainaec in #3939
- [CharInv] Migrate from deprecations by @imnasnainaec in #3885
- [Login, Signup, PasswordReset] Migrate from deprecated Grid by @imnasnainaec in #3862
- [Statistics] Migrate from deprecated Grid and use a Table by @imnasnainaec in #3855
- [frontend] Migrate 5 components from deprecations by @imnasnainaec in #3854
- [ProjectSettings, SiteSettings] Migrate from deprecated Grid by @imnasnainaec in #3863
- [DataEntry] Migrate from deprecated Grid by @imnasnainaec in #3880
- [ReviewEntries] Migrate from deprecations by @imnasnainaec in #3883
- [WordCard, *Completed] Migrate from deprecated Grid by @imnasnainaec in #3925
- [MergeDups] Migrate from deprecated Grid by @imnasnainaec in #3930
- Migrate ProjectSettings components to testing-library by @imnasnainaec in #3936
- Migrate ProjectUsers components to testing-library by @imnasnainaec in #3935
- Implement getLocalizedDateTimeString; Add onlyId to DomainChip by @imnasnainaec in #3933
- Stop using loadable with Buttons, Dialogs by @imnasnainaec in #3940
- Replace InputLabelProps, InputProps, inputProps with slotProps by @imnasnainaec in #3941
Full Changelog: v2.6.0...v2.7.0
v2.6.0
What's Changed
New Features
- [Data Cleanup] Redesign goal options/history page by @imnasnainaec in #3836
Defect Fixes
- [UserMenu, SiteSettings] Fix errors when coming from Project Settings by @imnasnainaec in #3870
- [UserController] Update security, attributes, tests by @imnasnainaec in #3870
- [PasswordReset] Manage reset link in the backend by @imnasnainaec in #3882
- [PermissionService] Update authenticated user handling by @imnasnainaec in #3876
Code Maintenance
- Move site-admin check from API call to Redux state by @imnasnainaec in #3857
- [LiftController] Add ProducesResponseType attributes by @imnasnainaec in #3849
- [ProjectController] Update return types, Remove DeleteAllProjects by @imnasnainaec in #3848
- [Controllers] Remove ProjRepo from UserEdit, UserRole, Word controllers by @imnasnainaec in #3851
- [Statistics] Remove unused param from GetSemanticDomainUserCounts by @imnasnainaec in #3853
- [StatisticsController] Drop unneeded project checks by @imnasnainaec in #3852
- [SpeakerController] Update response types and tests by @imnasnainaec in #3845
- [CharInv] Clean up Completed component without deprecated Grid by @imnasnainaec in #3878
- [docker/python] Dependency updates for Spring 2025 by @imnasnainaec in #3708
- [MergeDups] Migrate drag-n-drop to using hello-pangea/dnd by @imnasnainaec in #3873
- Remove component from Redux testing by @imnasnainaec in #3881
Full Changelog: v2.5.0...v2.6.0
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
v2.4.0
What's Changed
New Features
- [SiteSettings] Redesign project management by @imnasnainaec in #3565
- [MergeDups] Toast when actions fail by @imnasnainaec in #3607
- [NewEntry] Combine Select-Entry/-Sense dialogs by @imnasnainaec in #3619
- [NewEntry>VernDialog] If only one entry, auto-expand senses by @imnasnainaec in #3625
- [MergeDups] Enable word/sense protection bypass by @imnasnainaec in #3445
- [DataEntry] Fix exit button icon margins in rtl by @imnasnainaec in #3675
- [Login] Allow login with email address by @imnasnainaec in #3673
- [ReviewEntries] Use whitespace filter for non-empty text by @imnasnainaec in #3715
- [LIFT] Support export/import of entry flags by @imnasnainaec in #3677
Defect Fixes
- [SiteSettings] Fix project roles dialog title by @imnasnainaec in #3600
- [ProjectExport] Fix download file name and errors by @imnasnainaec in #3622
- [MergeDups] Fix bug preventing sidebar re-reordering by @imnasnainaec in #3620
- [import/export] Update handling of Vernacular by @imnasnainaec in #3626
- [DataEntry] Set domain description, questions to be bidi by @imnasnainaec in #3674
- [DataEntry] In 'Select an entry', fix sem-dom contrast by @imnasnainaec in #3676
- [frontend] Fix left/right to work with rtl by @imnasnainaec in #3671
- [prod] Fix update-fonts CronJob by @imnasnainaec in #3678
- [import] Avoid empty lang-tags by @imnasnainaec in #3712
- [import] Trim whitespace off text by @imnasnainaec in #3727
- [MergeDups] Allow header height to grow as needed by @imnasnainaec in #3730
- NFC-normalize entries loaded into spell-checker by @imnasnainaec in #3740
- [MergeDups] Implement SignalRHub for duplicate finder by @imnasnainaec in #3725
Documentation
- Update copyright to 2025 by @imnasnainaec in #3597
- [User Guide] Remove obsolete image by @imnasnainaec in #3624
- Update setup/deploy READMEs by @imnasnainaec in #3706
- Update install & deploy READMEs & logging by @imnasnainaec in #3710
- Update backend license report; Fix typos by @imnasnainaec in #3732
- Update UI & User Guide translations from Crowdin by @imnasnainaec in #3736
Code Maintenance
- Use testing-library on AppBar, IconButtonWithTooltip, WordCard by @imnasnainaec in #3328
- Remove extraneous semicolons by @imnasnainaec in #3623
- GitHub repo maintenance by @imnasnainaec in #3665
- Don't override Equals, GetHashCode by @imnasnainaec in #3660
Deployment
- Update installer Ubuntu 24.04, GHA workflows to ubuntu-latest by @imnasnainaec in #3613
Other Changes
- Implement all LIFT import fields for better protection by @imnasnainaec in #3531
- GHA dependency updates for February 2025 by @imnasnainaec in #3598
- [MergeDragDrop] Refactor to use payloads, mergeTreeRefs by @imnasnainaec in #3562
- [DuplicateFinderTests] Add broad testing by @imnasnainaec in #3612
- [ProjectSettings] Don't show email address of project users by @imnasnainaec in #3614
- Backend dependency updates for February 2025 by @imnasnainaec in #3594
- [Login, Signup] Move tests to testing-library by @imnasnainaec in #3616
- Bump MongoDB.Driver to v3; Add BsonGuidRepresentation by @imnasnainaec in #3603
- Increase font size of hover text by @imnasnainaec in #3605
- Pause user analytics during login/signup by @andracc in #3621
- Cancel GHA workflows when another commit is pushed to a pr by @imnasnainaec in #3658
- Convert many easy tests to testing-library by @imnasnainaec in #3617
- Frontend dependency updates for Feb-Mar 2025 by @imnasnainaec in #3596
- Backend dependency updates for March 2025 by @imnasnainaec in #3659
- Move TreeView to testing-library by @imnasnainaec in #3668
- [GHA] Dependency update for April 2025 by @imnasnainaec in #3707
- [Backend] Dependency updates for April 2025 by @imnasnainaec in #3711
- Disable analytics prompts when offline by @andracc in #3716
- Normalize project data text (NFC) by @imnasnainaec in #3718
- [ReviewEntries] Use localeCompare for all text column sorts by @imnasnainaec in #3724
- Update spell-check dictionaries by @imnasnainaec in #3717
- [MergeDups] Decrease max similarity score to speed up dup finder by @imnasnainaec in #3731
- [MergeDups] Improve duplicate-finder efficiency by @imnasnainaec in #3746
Full Changelog: v2.3.1...v2.4.0
v2.3.1
What's Changed
New Features
- [MergeDups] For similar-vern words, compare glosses & definitions by @imnasnainaec in #3550
- [MergeDups>DropWord] Always show protected word warning by @imnasnainaec in #3560
Defect Fixes
- [MergeDups] Allow actions from sidebar of protected sense by @imnasnainaec in #3561
- [AudioRecorder] Fix bug preventing multiple recordings by @imnasnainaec in #3556
- [ReviewEntries] Allow senses w/o gloss but w/ definition by @imnasnainaec in #3536
- [ReviewEntries] Add error text when trying to save empty sense by @imnasnainaec in #3593
- [ReviewEntries] Eliminate unhandled edit error by @imnasnainaec in #3595
Code Maintenance
- [GHA] Clean up deploy_release workflow by @imnasnainaec in #3551
- [.gitignore] Use more general log filename patterns by @imnasnainaec in #3547
- [GHA] Update CodeQL workflows by @imnasnainaec in #3563
Full Changelog: v2.3.0...v2.3.1