v3.0.0
What's Changed
Added features
- Admin researcher dashboard (#1144, #1148
- Added: SocialMediaConfig models, admin form, serializer & frontend integration by @drikusroor in #1166
- Added: Add translated_content model and update Experiment model by @drikusroor in #1208
- Data model visualization (#1202, #1242)
- Add multi-language
BlockTranslatedContent
in relation toBlock
by @drikusroor in #1227 - Added: Make submit row fixed on the bottom of the screen until the user scrolls down completely by @drikusroor in #1251
- mkdocs documentation by @Evert-R in #1260
- Documentation of
section.models
by @BeritJanssen in #1300 - Creating custom questions from admin by @albertas-jn in #1228
- Added: Set head data of Experiment page based on name, description and its theme's image by @drikusroor in #1285
- Add timestamp for start of turn in MatchingPairs by @Evert-R in #1350
- Duplicate experiment by @Evert-R in #1330
- Added: Make the
Histogram
component display the actual audio instead of showing random bar heights by @drikusroor in #1297 - Added: Add
ProgressBar
component by @drikusroor in #1364
Refactors
- Refactor: Rename Experiment component, hook, type & API names to use 'block' instead of 'experiment' by @drikusroor in #1146
- Refactor: ExperimentCollection, ExperimentCollectionDashboard, Header, Score & Rank components by @drikusroor in #1140
- Refactor: Rename ExperimentCollectionGroup to Phase (#1141, #1150, #1164)
- Refactor: Refactor URL matching and references to Experiment to use Block by @drikusroor in #1181
- Refactor: Refactor block and block feedback URLs by @drikusroor in #1184
- Refactor: Refactor experiment collection to experiment model and update related fields by @drikusroor in #1186
- Added: Add SponsorImage model and update FooterConfig model by @drikusroor in #1188
- Refactored: Remove GroupedBlock model and relate Block directly to Phase by @drikusroor in #1194
- Refactor: Start phasing out
first_round
and create session inget_block
by @drikusroor in #1191 - Clean up and document session functions (#1200, #1236, #1315)
- Changed experiment to block by @Evert-R in #1206
- Chore: Remove no longer used
first|random|last_experiments
fields from Experiment model by @drikusroor in #1216 - chore: remove Visual Matching Pairs rules & playback action by @BeritJanssen in #1219
- Clean up round getters by @BeritJanssen in #1209
- Remove
first_round
methods from rules files by @BeritJanssen in #1224 - Refactor block retrieval by @BeritJanssen in #1241
- Refactor: Incorporate
image_labels
intoImagePlayer
component by @drikusroor in #1249 - Refactor: Refactor makeResult function and form handling in Trial component by @drikusroor in #1254
- Remove unnecessary fields from admin by @BeritJanssen in #1263
- Refactored: Clean up
onResult
,makeResult
, andonNext
by @drikusroor in #1262 - Added: Refactor social media message handling and improve social media info method by @drikusroor in #1288
Backend improvements
- Add ruleset template by @albertas-jn in #302
- Added: Add 'active' field to ExperimentCollection model and allow admin user to deactive an experiment collection by @drikusroor in #1125
- Added: Add error message for missing experiment collection by @drikusroor in #1142
- Added: Add
bonus_points
to block view and use it in Matching Pairs by @drikusroor in #1168 - Added: Add Experiment->Phase->Block nested inline forms by @drikusroor in #1193
- Add participant score_sum() by @albertas-jn in #1220
- Added: Validate experiment in experiment admin and fix non-existent consent upload path slug by @drikusroor in #1214
- Add
validate_playlist
method for rhythm experiments by @BeritJanssen in #1317 - use join for file paths by @Evert-R in #1349
- Refactor: refactor toggle button indicators for collapsible forms by @drikusroor in #1388
- Added: Integrate django-select2 for enhanced form field selection by @drikusroor in #1391
- Docs: Enhance ImageAdminForm with additional fields and help texts by @drikusroor in #1375
Frontend improvements
- Conversion to TypeScript (#1126, #1127, #1137, #1173, #1172, #1171, #1170, #1174, #1169, #1175, #1195, #1196, #1197, #1225, #1205, #1207, #1255)
- feat(Block): Add key prop to force child component re-renders by @drikusroor in #1238
- Refactor: Properly type Block child components by @drikusroor in #1243
- Chore: Remove
section.ts
as it's not being used anywhere by @drikusroor in #1246 - Style: Improve styling & stories of profile view, rank & cup by @drikusroor in #1306
CI
- CI: Backup before deployment to ACC & PROD by @drikusroor in #1123
- CI: Refactor e2e tests and add smoke tests for production environment by @drikusroor in #1143
- CI: Optimize CI workflow to run tests and linting only on relevant file changes by @drikusroor in #1149
- CI: Replace autopep8 & flake8 by ruff for linting backend code by @drikusroor in #1201
- CI: Update GitHub Actions checkout action to v4 by @drikusroor in #1217
- Refactor: Remove teams notifications workflow by @drikusroor in #1235
- CI: Refactor workflow file to build and publish Documentation website and Storybook simultaneously by @drikusroor in #1258
- CI(coverage): Exclude a whole bunch of unneeded directories and files used to calculate the frontend code coverage percentages by @drikusroor in #1292
Bugfixes
- Fixed: Update fetch URL in markdown_preview_text_input.html by @drikusroor in #1120
- Fix: Delete playlist crashes the admin when section has no song by @Evert-R in #1156
- Fix: can go back to collection by @BeritJanssen in #1167
- Fixed: Add improved check for social_media_config existence and add test by @drikusroor in #1183
- Chore: Improve security & fix some linting errors by @drikusroor in #1189
- Fixed: Fix block filter in ParticipantAdmin by @drikusroor in #1203
- Fixed: Fix InternalRedirect component by @drikusroor in #1213
- fix: missing max_length of TextQuestion by @BeritJanssen in #1218
- Fixed: Fix warning about key in spread props and make key explicit by @drikusroor in #1223
- Bugfix: rerender consecutive views of same type by @BeritJanssen in #1239
- Fixed:
MarkdownPreview
widget's initialization issues by @drikusroor in #1253 - Fix
speech2song
,musical_preferences
andhuang_2022
after refactor by @BeritJanssen in #1250 - Fixed(migration): Refactor block content migration script by @drikusroor in #1256
- Fixed: Fix duplicate
next_round
call by handling theme logic in a separate effect by @drikusroor in #1264 - Chore(migration): Add missing migration by @drikusroor in #1269
- Fix(Docs): Fix paths to workflow status badges by @drikusroor in #1275
- Fix button array spacing by @BeritJanssen in #1280
- Chore: Redirect /collection/{slug} to /{slug} by @drikusroor in #1287
- Fix #1308: adjust categorization rules file by @BeritJanssen in #1312
- Fix Hooked experiment flow by @BeritJanssen in #1313
- Fix DDI/HBAT crash on end of block by @BeritJanssen in #1328
- Fix: ActionNotCallable error in Experimenter's Dashboard by @drikusroor in #1346
- Fix section retrieval during development by @BeritJanssen in #1332
- Fix: adjust trial title logic for rhythm discrimination rounds by @drikusroor in #1348
- Provide fallback for required variables for social media content by @BeritJanssen in #1331
- Fixed: Add phase model and associate with blocks in experiment fixtures by @drikusroor in #1358
- Restore option to restart experiment by @BeritJanssen in #1359
- Bugfix: revise logic on start of categorization experiment by @BeritJanssen in #1341
- Fixed: Add
random
andinterval
props toHistogram
component by @drikusroor in #1363 - Fixed: Refactor Django template to avoid method calls and set placeholders consistently by @drikusroor in #1365
- Fix: make experiment slug unique by @Evert-R in #1366
- Fix serialization error for returning participants by @BeritJanssen in #1377
- Fixed: Temporarily enable random bars in Histogram for audio playback animation by @drikusroor in #1393
- Fixed(Sentry): Update Sentry and fix Sentry configuration for React Router V6 by @drikusroor in #1395
Library updates
- chore(deps): bump urllib3 from 1.26.18 to 1.26.19 in /backend/requirements by @dependabot in #1128
- chore(deps): bump ws from 8.14.2 to 8.17.1 in /frontend by @dependabot in #1129
- Update django to 4.2.0, update python to 3.11 by @Evert-R in #1158
- chore(deps): bump certifi from 2023.7.22 to 2024.7.4 in /backend/requirements by @dependabot in #1176
- Chore(deps): Remove IPToCC and numpy from base requirements by @drikusroor in #1161
- Chore(deps): Update dependencies and refactor code by @drikusroor in #1162
- chore(deps): bump django from 4.2.11 to 4.2.14 in /backend/requirements by @dependabot in #1185
- Chore(deps): Update npm dependencies react-router, react-router-dom, @sentry/react & next-share to latest version for frontend by @drikusroor in #1199
- add CSRF_TRUSTED_ORIGINS for django 4.20 by @Evert-R in #1160
- chore(deps): bump sentry-sdk from 1.38.0 to 2.8.0 in /backend/requirements by @dependabot in #1190
- Chore(deps): Update Storybook to version 8.2.5 by @drikusroor in #1198
- chore(deps): bump tqdm from 4.65.0 to 4.66.3 in /backend/requirements by @dependabot in #1231
- chore(deps): bump axios from 1.6.2 to 1.7.4 in /frontend by @dependabot in #1232
- chore(deps): bump micromatch from 4.0.5 to 4.0.8 in /frontend by @dependabot in #1234
- chore(deps): bump django from 4.2.14 to 4.2.15 in /backend/requirements by @dependabot in #1222
- chore(deps): bump vite from 5.2.8 to 5.2.14 in /frontend by @dependabot in #1267
- chore(deps): bump express from 4.19.2 to 4.21.0 in /frontend by @dependabot in #1265
- chore(deps): bump vite from 5.2.8 to 5.4.6 in /frontend by @dependabot in #1268
- chore(deps): bump django from 4.2.15 to 4.2.16 in /backend/requirements by @dependabot in #1309
- chore(deps): bump rollup from 4.21.3 to 4.24.0 in /frontend by @dependabot in #1314
- chore(deps-dev): bump happy-dom from 12.10.3 to 15.10.2 in /frontend by @dependabot in #1354
- Chore(deps): update Storybook and related dependencies in package.json to 8.4.2 by @drikusroor in #1355
- chore(deps): bump cross-spawn from 7.0.3 to 7.0.6 in /frontend by @dependabot in #1376
- Chore(deps): Replace
next-share
withreact-share
and add Storybook stories for Social component by @drikusroor in #1390
Full Changelog: v2.2.7...v3.0.0