Skip to content

Commit 77ccce7

Browse files
authored
Merge pull request #7496 from donny-wong/release_2.7.0
Release 2.7.0
2 parents bd4f447 + c739a0a commit 77ccce7

File tree

381 files changed

+9496
-18639
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

381 files changed

+9496
-18639
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/usr/bin/env bash
2+
# This script updates all MarkUs non-system dependencies
3+
4+
# Install bundle gems
5+
printf "[MarkUs] Checking Ruby dependencies..."
6+
if ! bundle check &> /dev/null; then
7+
printf "\n[MarkUs] Not all Ruby dependencies are installed. Running bundle install:\n"
8+
bundle install
9+
else
10+
printf " \e[32m✔\e[0m \n"
11+
fi
12+
13+
# Install node packages
14+
printf "[MarkUs] Checking Javascript dependencies..."
15+
if ! npm list &> /dev/null; then
16+
printf "\n[MarkUs] Not all Javascript dependencies are installed. Running npm install:\n"
17+
npm install
18+
else
19+
printf " \e[32m✔\e[0m \n"
20+
fi
21+
22+
# Install Python packages
23+
[ -f ./venv/bin/python3 ] || python3 -m venv ./venv
24+
./venv/bin/python3 -m pip install -q --upgrade pip
25+
printf "[MarkUs] Running pip install -q -r requirements-jupyter.txt..."
26+
if ./venv/bin/python3 -m pip install -q -r requirements-jupyter.txt; then
27+
printf " \e[32m✔\e[0m \n"
28+
fi
29+
printf "[MarkUs] Running pip install -q -r requirements-scanner.txt..."
30+
if ./venv/bin/python3 -m pip install -q -r requirements-scanner.txt; then
31+
printf " \e[32m✔\e[0m \n"
32+
fi
33+
printf "[MarkUs] Running pip install -q -r requirements-qr.txt..."
34+
if ./venv/bin/python3 -m pip install -q -r requirements-qr.txt; then
35+
printf " \e[32m✔\e[0m \n"
36+
fi
37+
38+
# Install chromium (for nbconvert webpdf conversion)
39+
printf "[MarkUs] Running playwright install chromium..."
40+
if ./venv/bin/python3 -m playwright install chromium; then
41+
printf " \e[32m✔\e[0m \n"
42+
fi
43+
44+
# Execute the provided command
45+
exec "$@"

.dockerfiles/entrypoint-dev-rails.sh

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,6 @@ if [ -z "${LD_PRELOAD+x}" ] && [ -f /usr/lib/*/libjemalloc.so.2 ]; then
55
export LD_PRELOAD="$(echo /usr/lib/*/libjemalloc.so.2)"
66
fi
77

8-
# install bundle gems if not up to date with the Gemfile.lock file
9-
bundle check 2>/dev/null || bundle install
10-
11-
# install node packages
12-
npm list &> /dev/null || npm ci
13-
14-
# install python packages
15-
[ -f ./venv/bin/python3 ] || python3 -m venv ./venv
16-
./venv/bin/python3 -m pip install --upgrade pip > /dev/null
17-
./venv/bin/python3 -m pip install -r requirements-jupyter.txt
18-
./venv/bin/python3 -m pip install -r requirements-scanner.txt
19-
./venv/bin/python3 -m pip install -r requirements-qr.txt
20-
21-
# install chromium (for nbconvert webpdf conversion)
22-
./venv/bin/python3 -m playwright install chromium
23-
248
# setup the database (checks for db existence first)
259
until pg_isready -q; do
2610
echo "waiting for database to start up"

.dockerfiles/entrypoint-dev-wait-for-install.sh

Lines changed: 0 additions & 16 deletions
This file was deleted.

.dockerfiles/entrypoint-dev-webpack.sh

Lines changed: 0 additions & 12 deletions
This file was deleted.

.github/workflows/test_ci.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ jobs:
3939
RAILS_ENV: test
4040
NODE_ENV: test
4141
RSPEC_RENDER_VIEWS: true
42+
permissions:
43+
contents: read
4244
steps:
4345
- name: Checkout repo
4446
uses: actions/checkout@v4
@@ -73,6 +75,13 @@ jobs:
7375
key: ${{ runner.os }}-pip-${{ hashFiles('requirements-jupyter.txt') }}-${{ hashFiles('requirements-scanner.txt') }}-${{ hashFiles('requirements-qr.txt') }}
7476
restore-keys: |
7577
${{ runner.os }}-pip-
78+
- name: Cache playwright's installation of Chromium
79+
uses: actions/cache@v4
80+
with:
81+
path: ~/.cache/ms-playwright
82+
key: ${{ runner.os }}-playwright-${{ hashFiles('requirements-jupyter.txt') }}
83+
restore-keys: |
84+
${{ runner.os }}-playwright-
7685
- name: Install python packages and playwright dependencies
7786
run: |
7887
python3.10 -m venv venv
@@ -124,6 +133,8 @@ jobs:
124133
needs: test
125134
if: github.event.pull_request.draft == false
126135
runs-on: ubuntu-22.04
136+
permissions:
137+
pull-requests: write
127138
steps:
128139
- name: Coveralls Finished
129140
uses: coverallsapp/github-action@v2

.pre-commit-config.yaml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,20 @@ repos:
1616
)$
1717
- id: end-of-file-fixer
1818
- id: trailing-whitespace
19-
- repo: https://github.com/pre-commit/mirrors-prettier
20-
rev: v3.1.0
19+
- repo: https://github.com/rbubley/mirrors-prettier
20+
rev: v3.5.3
2121
hooks:
2222
- id: prettier
2323
types_or: [javascript, jsx, css, scss, html]
2424
- repo: https://github.com/thibaudcolas/pre-commit-stylelint
25-
rev: v16.10.0
25+
rev: v16.18.0
2626
hooks:
2727
- id: stylelint
2828
additional_dependencies: [
29-
"stylelint@16.3.1",
29+
"stylelint@16.11.0",
3030
31-
"stylelint-config-sass-guidelines@11.1.0",
32-
31+
"stylelint-config-sass-guidelines@12.1.0",
32+
3333
]
3434
args: ["--fix"]
3535
types_or: ["css", "scss"]
@@ -39,7 +39,7 @@ repos:
3939
app/assets/stylesheets/common/_reset.scss
4040
)$
4141
- repo: https://github.com/rubocop/rubocop
42-
rev: v1.68.0
42+
rev: v1.75.2
4343
hooks:
4444
- id: rubocop
4545
args: ["--autocorrect"]
@@ -52,10 +52,10 @@ repos:
5252
Vagrantfile
5353
)$
5454
additional_dependencies:
55-
- rubocop-rails:2.26.1
56-
- rubocop-performance:1.22.1
55+
- rubocop-rails:2.27.0
56+
- rubocop-performance:1.23.0
5757
- rubocop-factory_bot:2.26.1
58-
- rubocop-rspec:3.0.5
58+
- rubocop-rspec:3.2.0
5959
- rubocop-rspec_rails:2.30.0
6060
- rubocop-capybara:2.21.0
6161

Changelog.md

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,139 @@
11
# Changelog
22

3+
## [v2.7.0]
4+
5+
### 🚨 Breaking changes
6+
7+
### ✨ New features and improvements
8+
9+
- Fix front-end content shift when an input element is focused (#7384)
10+
- Tooltip text for Package requirements file for Python autotester settings (#7383)
11+
- Pass back tags and overall comments from Autotester to MarkUs (#7387)
12+
- Render download test result button on assignment summary page only if the assignment has automated testing (#7417)
13+
- Group test results by Test Groups id (#7422)
14+
- Display HTML previews of RMarkdown files (#7394)
15+
- Allow instructors to assign scans to inactive students (#7482)
16+
- Added members parameter to add_group_api to support explicit member assignment during group creation (#7481)
17+
- Modified add_group_api to use username as group name for individual assignments (#7481)
18+
- Improved styling of markdown previews in `MarkdownPreview` component and annotation displays (#7487)
19+
- Allow creating image annotations from a test run's outputs (#7486)
20+
- Added an API that collects a single submission (#7494)
21+
- Enable removal of a student from a course (#7480)
22+
23+
### 🐛 Bug fixes
24+
25+
- Ensures row selection for peer reviewer unassigning has the same validation checks as individual selections (#7274)
26+
- Ensures mark levels on a rubric criterion are properly scaled when its max mark is updated (#7311)
27+
- Refactor contributors list in About section to read from markus-contributors.txt (#7374)
28+
- Optimized the querying of submissions when assigning graders (#7381)
29+
- Update remote_autotest_settings_id validation to be unique to an autotester (#7393)
30+
- Fix tag creation failing in tags table (#7426)
31+
- Ensure tag names are unique within an assignment (#7430)
32+
- Update flash style to "notice" for "setting up test env" message (#7445)
33+
- Fixed bug in `ImageViewer` where image width was set to 0 on initial load (#7485)
34+
- Fixed bug in `ImageViewer` where annotations did not disappear when moving the mouse out of the image (#7485)
35+
- Ensured annotations appear in results view when in fullscreen mode (#7487)
36+
- Fixed bug in `ImageViewer` where annotations did not always appear on initial image load (#7487)
37+
38+
### 🔧 Internal changes
39+
40+
- Reorganize Javascript files to separate Sprockets and Webpack compilation (#7345)
41+
- Replace moment.js dependency with much smaller dayjs (#7346)
42+
- Refactor `FileViewer`, `TextViewer`, `BinaryViewer` and `ImageViewer` components (#7270)
43+
- Pin `mistune` Python dependency to preserve compatibility with `nbconvert` (#7371)
44+
- Cache playwright's chromium installation on GitHub Actions (#7372)
45+
- Fix broken link to the Vagrant installation guide in `README.md` (#7349)
46+
- Fix `extra_hosts` configuration in `compose.yaml` (#7375)
47+
- Add unit tests for `marks_graders_controller` (#7382)
48+
- Convert front-end tests from enzyme to react testing library; add `@testing-library/user-event` (#7379)
49+
- Refactor the `Result` component and its children to use React context API (#7380)
50+
- Implement `contain_message` and `have_message` custom Rspec matchers to check for flash message content (#7386)
51+
- Update Python version to 3.13 in seed autotest schemas (#7388)
52+
- Rename jupyter notebook content functions and files to generalize to html content (#7391)
53+
- Update to React v18 (#7392)
54+
- Remove unused Javascript files (#7442)
55+
- Refactor scanned test generation and test splitting from polling to websockets (#7428)
56+
- Move Docker dependency updates into separate service (#7451)
57+
- Fixed flaky test due to daylight savings time issue (#7452)
58+
- Updated Python autotest seed file to illustrate pytest metadata custom markers (#7457)
59+
- Updated to react-flatpickr v4.0.0 (#7478)
60+
- Remove `mistune` Python explicit dependency (#7483)
61+
- Applied pre-commit (specifically Rubocop) changes to use it_behaves_like over include_examples (#7492)
62+
- Added explicit permissions to GitHub Actions workflow configuration (#7495)
63+
64+
## [v2.6.1]
65+
66+
### ✨ New features and improvements
67+
68+
- Give instructors the ability to delete a TA from the Users Graders Tab (#7304)
69+
- Added zoom and rotate functionality to PDF viewer (#7306)
70+
71+
### 🐛 Bug fixes
72+
73+
- Ensure we handle JSON parsing exceptions when converting Jupyter Notebooks (#7308)
74+
- Fixed bug in grading context menu for editing/deleting annotations (#7314)
75+
- Fixed bug in grading annotations table when deleting annotations (#7314)
76+
- Ensure correct LTI version of lti_user_id is used on launch (#7335)
77+
78+
## [v2.6.0]
79+
80+
### ✨ New features and improvements
81+
82+
- Fix front-end content shift when an input element is focused (#7384)
83+
- Tooltip text for Package requirements file for Python autotester settings (#7383)
84+
- Pass back tags and overall comments from Autotester to MarkUs (#7387)
85+
- Render download test result button on assignment summary page only if the assignment has automated testing (#7417)
86+
- Group test results by Test Groups id (#7422)
87+
- Display HTML previews of RMarkdown files (#7394)
88+
- Allow instructors to assign scans to inactive students (#7482)
89+
- Added members parameter to add_group_api to support explicit member assignment during group creation (#7481)
90+
- Modified add_group_api to use username as group name for individual assignments (#7481)
91+
- Improved styling of markdown previews in `MarkdownPreview` component and annotation displays (#7487)
92+
- Allow creating image annotations from a test run's outputs (#7486)
93+
- Added an API that collects a single submission (#7494)
94+
- Enable removal of a student from a course (#7480)
95+
96+
### 🐛 Bug fixes
97+
98+
- Ensures row selection for peer reviewer unassigning has the same validation checks as individual selections (#7274)
99+
- Ensures mark levels on a rubric criterion are properly scaled when its max mark is updated (#7311)
100+
- Refactor contributors list in About section to read from markus-contributors.txt (#7374)
101+
- Optimized the querying of submissions when assigning graders (#7381)
102+
- Update remote_autotest_settings_id validation to be unique to an autotester (#7393)
103+
- Fix tag creation failing in tags table (#7426)
104+
- Ensure tag names are unique within an assignment (#7430)
105+
- Update flash style to "notice" for "setting up test env" message (#7445)
106+
- Fixed bug in `ImageViewer` where image width was set to 0 on initial load (#7485)
107+
- Fixed bug in `ImageViewer` where annotations did not disappear when moving the mouse out of the image (#7485)
108+
- Ensured annotations appear in results view when in fullscreen mode (#7487)
109+
- Fixed bug in `ImageViewer` where annotations did not always appear on initial image load (#7487)
110+
111+
### 🔧 Internal changes
112+
113+
- Reorganize Javascript files to separate Sprockets and Webpack compilation (#7345)
114+
- Replace moment.js dependency with much smaller dayjs (#7346)
115+
- Refactor `FileViewer`, `TextViewer`, `BinaryViewer` and `ImageViewer` components (#7270)
116+
- Pin `mistune` Python dependency to preserve compatibility with `nbconvert` (#7371)
117+
- Cache playwright's chromium installation on GitHub Actions (#7372)
118+
- Fix broken link to the Vagrant installation guide in `README.md` (#7349)
119+
- Fix `extra_hosts` configuration in `compose.yaml` (#7375)
120+
- Add unit tests for `marks_graders_controller` (#7382)
121+
- Convert front-end tests from enzyme to react testing library; add `@testing-library/user-event` (#7379)
122+
- Refactor the `Result` component and its children to use React context API (#7380)
123+
- Implement `contain_message` and `have_message` custom Rspec matchers to check for flash message content (#7386)
124+
- Update Python version to 3.13 in seed autotest schemas (#7388)
125+
- Rename jupyter notebook content functions and files to generalize to html content (#7391)
126+
- Update to React v18 (#7392)
127+
- Remove unused Javascript files (#7442)
128+
- Refactor scanned test generation and test splitting from polling to websockets (#7428)
129+
- Move Docker dependency updates into separate service (#7451)
130+
- Fixed flaky test due to daylight savings time issue (#7452)
131+
- Updated Python autotest seed file to illustrate pytest metadata custom markers (#7457)
132+
- Updated to react-flatpickr v4.0.0 (#7478)
133+
- Remove `mistune` Python explicit dependency (#7483)
134+
- Applied pre-commit (specifically Rubocop) changes to use it_behaves_like over include_examples (#7492)
135+
- Added explicit permissions to GitHub Actions workflow configuration (#7495)
136+
3137
## [v2.6.1]
4138

5139
### ✨ New features and improvements

Gemfile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,16 @@ gem 'histogram'
3737
# Internationalization
3838
gem 'i18n'
3939
gem 'i18n-js'
40-
gem 'rails-i18n', '~> 7.0.0'
40+
gem 'rails-i18n', '~> 7.0.10'
4141

4242
# Redis
43-
gem 'redis', '~> 5.3.0'
43+
gem 'redis', '~> 5.4.0'
4444

4545
# Exam template requirements
4646
gem 'combine_pdf'
4747
gem 'prawn'
4848
gem 'prawn-qrcode'
49-
gem 'rmagick', '~> 6.0.1'
49+
gem 'rmagick', '~> 6.1.1'
5050
gem 'rtesseract'
5151

5252
# Ruby miscellany
@@ -107,7 +107,7 @@ group :development, :test do
107107
gem 'capybara'
108108
gem 'debug', '>= 1.0.0'
109109
gem 'i18n-tasks', require: false
110-
gem 'rspec-rails', '~> 7.0.1'
110+
gem 'rspec-rails', '~> 7.1.1'
111111
gem 'selenium-webdriver'
112112
end
113113

0 commit comments

Comments
 (0)