Skip to content

Migrate annotation_usage_panel.jsx to react table v8 - #8021

Merged
david-yz-liu merged 18 commits into
MarkUsProject:masterfrom
mrafie1:migrate-AnnotationUsagePanel
Jul 6, 2026
Merged

david-yz-liu merged 18 commits into
MarkUsProject:masterfrom
mrafie1:migrate-AnnotationUsagePanel

Conversation

@mrafie1

@mrafie1 mrafie1 commented Jun 29, 2026 •

Copy link
Copy Markdown
Contributor

Proposed Changes

(Describe your changes here. Also describe the motivation for your changes: what problem do they solve, or how do they improve the application or codebase? If this pull request fixes an open issue, use a keyword to link this pull request to the issue.)

annotation_usage_panel.test.jsx

  • Edited "becomes case-sensitive when the toggle is checked" test to correctly use new case_sensitive_search_filter.jsx component

table.jsx

  • Edited component to now include pivoting/aggregation functionality
    • Imported getGroupedRowModel
    • Added grouping useState
    • Edited arguments to useReactTable to include pivoting/aggregation
  • Updated Jul 3
    • Pass in isGrouped prop to TableRow in order to handle rendering. Specifically, making sure renderSubComponent doesn't activate when rendering expanded group rows
    • Add expanderColumn when enderSubRow is passed in. This allows the user to press the 'dropdown arrows' and expand columns

table_row.jsx

  • Edited component to allow for re-rendering when filtering causes the aggregation count of some rows to change by checking if subRows have changed
  • Updated Jul 3
  • Takes in isGrouped as a prop
  • Passes in isExpanded to TableCell component in order to consistently re-render the 'dropdown' arrows when expansion is toggled on and off. Before, it was really inconsistent with the rendering.
  • Used !isGrouped to prevent the rendering of a not-present ' subComponent ' when grouped cells are expanded.

annotation_usage_panel.jsx

  • Updated Jul 3
  • Migrated columns to React Table v8
  • Passed in renderSubRows prop as true to enable 'expansion'
Screenshots of your changes (if applicable)
Associated documentation repository pull request (if applicable)

Type of Change

(Write an X or a brief description next to the type or types that best describe your changes.)

Type Applies?
🚨 Breaking change (fix or feature that would cause existing functionality to change)
✨ New feature (non-breaking change that adds functionality)
🐛 Bug fix (non-breaking change that fixes an issue)
🎨 User interface change (change to user interface; provide screenshots)
♻️ Refactoring (internal change to codebase, without changing functionality) x
🚦 Test update (change that only adds or modifies tests)
📦 Dependency update (change that updates a dependency)
🔧 Internal (change that only affects developers or continuous integration)

Checklist

(Complete each of the following items for your pull request. Indicate that you have completed an item by changing the [ ] into a [x] in the raw text, or by clicking on the checkbox in the rendered description on GitHub.)

Before opening your pull request:

  • I have performed a self-review of my changes.
    • Check that all changed files included in this pull request are intentional changes.
    • Check that all changes are relevant to the purpose of this pull request, as described above.
  • I have added tests for my changes, if applicable.
    • This is required for all bug fixes and new features.
  • I have updated the project documentation, if applicable.
    • This is required for new features.
  • If this is my first contribution, I have added myself to the list of contributors.

After opening your pull request:

  • I have updated the project Changelog (this is required for all changes).
  • I have verified that the pre-commit.ci checks have passed.
  • I have verified that the CI tests have passed.
  • I have reviewed the test coverage changes reported by Coveralls.
  • I have requested a review from a project maintainer.

Questions and Comments

(Include any questions or comments you have regarding your changes.)

  1. I noticed when working on this task that filtering would always cause the table to re-render, but the re-render would sometimes not change the aggregation counts. For example, typing in the letter 'r' caused rows to 'change'. However, typing in other letters such as 'c' did not cause any changes, even though the table did re-render, the filtered rows did change, and the subrow count decreased. I'm wondering why filtering alone did not solve this issue. Of course, checking if the subrows have changed would solve this problem, but I expected that each re-render would cause an update to what rows were being passed in to be aggregated when filtering.
  2. Am I good to try working on that bug I found in https://github.com/MarkUsProject/Markus/pull/7985 ? I'm a little keen on trying to work with some back-end/things relating to routing.

@coveralls

coveralls commented Jun 29, 2026 •

Copy link
Copy Markdown
Collaborator

Coverage Report for CI Build 28804930016

Coverage increased (+0.01%) to 90.285%

Details

  • Coverage increased (+0.01%) from the base build.
  • Patch coverage: 1 uncovered change across 1 file (17 of 18 lines covered, 94.44%).
  • 1 coverage regression across 1 file.

Uncovered Changes

File Changed Covered %
app/javascript/Components/annotation_usage_panel.jsx 16 15 93.75%
Total (2 files) 18 17 94.44%

Coverage Regressions

1 previously-covered line in 1 file lost coverage.

File Lines Losing Coverage Coverage
app/javascript/Components/annotation_usage_panel.jsx 1 77.36%

Coverage Stats

Coverage Status
Relevant Lines: 51022
Covered Lines: 47078
Line Coverage: 92.27%
Relevant Branches: 2444
Covered Branches: 1194
Branch Coverage: 48.85%
Branches in Coverage %: Yes
Coverage Strength: 127.14 hits per line

💛 - Coveralls

@mrafie1
mrafie1 requested a review from david-yz-liu June 29, 2026 14:45

@david-yz-liu david-yz-liu left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @mrafie1, I did a quick review but I don't think this is PR is complete, as it doesn't seem like you added any changes for table_row.jsx (which is where I would assume the rendering logic has been added).

In response to your questions:

  1. Please upload a video demonstrating the exact problem you are encountering.
  2. Please make an issue to describe the bug (again, an accompanying video would be helpful) and then I'll review it and get back to you. I certainly appreciate you being proactive in bringing this up! 👍

Comment thread app/javascript/Components/__tests__/annotation_usage_panel.test.jsx Outdated
@mrafie1

mrafie1 commented Jun 30, 2026

Copy link
Copy Markdown
Contributor Author

Hi David,

For table_row.jsx, are you referring to these changes?

Screenshot 2026-06-30 at 04 48 30
  1. Here's a screen recording of the column aggregation while filtering. This is without checking if the previous subRows were different from the new subRows.
Screen.Recording.2026-06-30.at.04.50.17.mov

For some filter inputs, a re-render will change the aggregation values from the total of 11 to 2. For other inputs, a re-render will keep the aggregation values as 11, even though there are only 8 users who have the letter 'c', and even only 2 users who have the characters 'c5' in the data given.

  1. I'll get to writing the issue 👍

@mrafie1
mrafie1 requested a review from david-yz-liu June 30, 2026 07:39
@david-yz-liu

Copy link
Copy Markdown
Collaborator

Hi @mrafie1, thanks for the clarification in the video.

This reveals that actually you haven't completed the full refactoring that's required for this task: in addition to the aggregation information, we need to be able to expand the row to display the subrows. (This is the change I was looking for in table_row.jsx.) Switch back to the master branch and look at this panel; you should see a little "down arrow" that enables this expansion.

My recommendation is to work in implementing this first, as that will hopefully also help debug the filtering issue you've reported. As a tip, take another look at the example I shared with you on Slack, as that should help with the HTML creation.

I'll message you separately about the issue you created.

@mrafie1

mrafie1 commented Jun 30, 2026

Copy link
Copy Markdown
Contributor Author

Oh, that's my bad, I wasn't sure what you were referring to. I'll get it done ASAP.

@mrafie1
mrafie1 marked this pull request as draft July 2, 2026 15:10
@mrafie1
mrafie1 marked this pull request as ready for review July 3, 2026 16:50
@mrafie1

mrafie1 commented Jul 3, 2026 •

Copy link
Copy Markdown
Contributor Author

Video of current changes:

Screen.Recording.2026-07-03.at.12.43.54.mov

PR description is updated.

A note/question. I decided not to add Fa-icons directly to the side of the instructor names because we had an 'expanderColumn' in the Table file that does the same functionality and looks much cleaner. In the code, it should be on the left of the instructor names, but for some reason, it is directly in the middle/to the right. This also looks very good UI-wise, but let me know if it looks good to you; If you want the arrows to be on the left, I'll research some way to do that.

@david-yz-liu david-yz-liu left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work, @mrafie1. Regarding your last comment, using the expander column is good, but the column should appear as the leftmost column in the table. I suspect the library is putting the grouped column ("used by") as the leftmost column, so you'll need to find a way to work around this. Possibly by setting the column order explicitly (look at the documentation about this).

Other than that, the PR looks good to me. Are you still encountering a bug related to filtering and the aggregation counts?

@mrafie1

mrafie1 commented Jul 6, 2026 •

Copy link
Copy Markdown
Contributor Author

The filtering and aggregation count bugs are gone, even after removing 'subRow' checking in our useMemo. I'm not too sure why this is the case; I suspect it has to do with cells being 'visible' when expanded, allowing tableCells to be rerendered consistently => aggregation count is updated

@mrafie1
mrafie1 requested a review from david-yz-liu July 6, 2026 16:41

@david-yz-liu david-yz-liu left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work, @mrafie1!

@david-yz-liu
david-yz-liu merged commit e02a66d into MarkUsProject:master Jul 6, 2026
7 checks passed
@david-yz-liu david-yz-liu added this to the v2.10.2 milestone Aug 24, 2026
Naragod added a commit that referenced this pull request Sep 1, 2026
* Refactored Result#generate_print_pdf to use Dir.mktmpdir (#7964)

* Migrated asset pipeline from Sprockets to Propshaft (#7970)

* Fix navigation warning on autotest manager and starter files manager pages (#7968)

Closes #7641

* build(deps): bump js-routes from 2.3.6 to 2.3.7 (#7977)

Bumps [js-routes](https://github.com/railsware/js-routes) from 2.3.6 to 2.3.7.
- [Release notes](https://github.com/railsware/js-routes/releases)
- [Changelog](https://github.com/railsware/js-routes/blob/main/CHANGELOG.md)
- [Commits](railsware/js-routes@v2.3.6...v2.3.7)

---
updated-dependencies:
- dependency-name: js-routes
  dependency-version: 2.3.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump the babel group with 5 updates (#7979)

Bumps the babel group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) | `7.29.2` | `7.29.7` |
| [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) | `7.29.0` | `7.29.7` |
| [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) | `7.29.0` | `7.29.7` |
| [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) | `7.29.2` | `7.29.7` |
| [@babel/preset-react](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-react) | `7.28.5` | `7.29.7` |


Updates `@babel/runtime` from 7.29.2 to 7.29.7
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.7/packages/babel-runtime)

Updates `@babel/core` from 7.29.0 to 7.29.7
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.7/packages/babel-core)

Updates `@babel/plugin-transform-runtime` from 7.29.0 to 7.29.7
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.7/packages/babel-plugin-transform-runtime)

Updates `@babel/preset-env` from 7.29.2 to 7.29.7
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.7/packages/babel-preset-env)

Updates `@babel/preset-react` from 7.28.5 to 7.29.7
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.29.7/packages/babel-preset-react)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-version: 7.29.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: babel
- dependency-name: "@babel/core"
  dependency-version: 7.29.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: babel
- dependency-name: "@babel/plugin-transform-runtime"
  dependency-version: 7.29.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: babel
- dependency-name: "@babel/preset-env"
  dependency-version: 7.29.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: babel
- dependency-name: "@babel/preset-react"
  dependency-version: 7.29.7
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: babel
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Added graders column in Assignment Grades tab (#7967)

Closes #3871.

* build(deps): bump json from 2.19.2 to 2.19.8 (#7978)

Bumps [json](https://github.com/ruby/json) from 2.19.2 to 2.19.8.
- [Release notes](https://github.com/ruby/json/releases)
- [Changelog](https://github.com/ruby/json/blob/master/CHANGES.md)
- [Commits](ruby/json@v2.19.2...v2.19.8)

---
updated-dependencies:
- dependency-name: json
  dependency-version: 2.19.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump dayjs from 1.11.13 to 1.11.21 (#7982)

Bumps [dayjs](https://github.com/iamkun/dayjs) from 1.11.13 to 1.11.21.
- [Release notes](https://github.com/iamkun/dayjs/releases)
- [Changelog](https://github.com/iamkun/dayjs/blob/dev/CHANGELOG.md)
- [Commits](iamkun/dayjs@v1.11.13...v1.11.21)

---
updated-dependencies:
- dependency-name: dayjs
  dependency-version: 1.11.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump action_policy from 0.7.5 to 0.7.6 (#7976)

Bumps [action_policy](https://github.com/palkan/action_policy) from 0.7.5 to 0.7.6.
- [Release notes](https://github.com/palkan/action_policy/releases)
- [Changelog](https://github.com/palkan/action_policy/blob/master/CHANGELOG.md)
- [Commits](palkan/action_policy@v0.7.5...v0.7.6)

---
updated-dependencies:
- dependency-name: action_policy
  dependency-version: 0.7.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump playwright from 1.59.0 to 1.60.0 (#7980)

Bumps [playwright](https://github.com/microsoft/playwright-python) from 1.59.0 to 1.60.0.
- [Release notes](https://github.com/microsoft/playwright-python/releases)
- [Commits](microsoft/playwright-python@v1.59.0...v1.60.0)

---
updated-dependencies:
- dependency-name: playwright
  dependency-version: 1.60.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump the rjsf group with 2 updates (#7981)

Bumps the rjsf group with 2 updates: [@rjsf/core](https://github.com/rjsf-team/react-jsonschema-form) and [@rjsf/validator-ajv8](https://github.com/rjsf-team/react-jsonschema-form).


Updates `@rjsf/core` from 6.5.2 to 6.6.1
- [Release notes](https://github.com/rjsf-team/react-jsonschema-form/releases)
- [Changelog](https://github.com/rjsf-team/react-jsonschema-form/blob/main/CHANGELOG.md)
- [Commits](rjsf-team/react-jsonschema-form@6.5.2...6.6.1)

Updates `@rjsf/validator-ajv8` from 6.5.2 to 6.6.1
- [Release notes](https://github.com/rjsf-team/react-jsonschema-form/releases)
- [Changelog](https://github.com/rjsf-team/react-jsonschema-form/blob/main/CHANGELOG.md)
- [Commits](rjsf-team/react-jsonschema-form@6.5.2...6.6.1)

---
updated-dependencies:
- dependency-name: "@rjsf/core"
  dependency-version: 6.6.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rjsf
- dependency-name: "@rjsf/validator-ajv8"
  dependency-version: 6.6.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rjsf
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Switched using react-resizable-panels in grading view (#8000)

* Upgraded to Rails v8.1.3 (#8015)

* Refactored SummaryPanel table to use react-table v8 (#8019)

* Added documentation to this repo (#8022)

* Documentation moved from https://github.com/MarkUsProject/Wiki.
* We now use Jekyll to build the documentation pages.
* Added markus:docs Rake task to build the documentation for production.

* build(deps): bump actions/cache from 4 to 6 (#8026)

Bumps [actions/cache](https://github.com/actions/cache) from 4 to 6.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@v4...v6)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump actions/checkout from 6 to 7 (#8024)

Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump nanasess/setup-chromedriver from 2 to 3 (#8025)

Bumps [nanasess/setup-chromedriver](https://github.com/nanasess/setup-chromedriver) from 2 to 3.
- [Release notes](https://github.com/nanasess/setup-chromedriver/releases)
- [Commits](nanasess/setup-chromedriver@v2...v3)

---
updated-dependencies:
- dependency-name: nanasess/setup-chromedriver
  dependency-version: '3'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump i18n-tasks from 1.0.15 to 1.1.2 (#8030)

* build(deps-dev): bump i18n-tasks from 1.0.15 to 1.1.2

Bumps [i18n-tasks](https://github.com/glebm/i18n-tasks) from 1.0.15 to 1.1.2.
- [Release notes](https://github.com/glebm/i18n-tasks/releases)
- [Changelog](https://github.com/glebm/i18n-tasks/blob/main/CHANGES.md)
- [Commits](glebm/i18n-tasks@v1.0.15...v1.1.2)

---
updated-dependencies:
- dependency-name: i18n-tasks
  dependency-version: 1.1.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Updated i18n-tasks config

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: David Liu <david@cs.toronto.edu>

* build(deps-dev): bump bullet from 8.1.0 to 8.1.3 (#8027)

Bumps [bullet](https://github.com/flyerhzm/bullet) from 8.1.0 to 8.1.3.
- [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md)
- [Commits](flyerhzm/bullet@8.1.0...8.1.3)

---
updated-dependencies:
- dependency-name: bullet
  dependency-version: 8.1.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump timecop from 0.9.10 to 0.9.11 (#8031)

Bumps [timecop](https://github.com/travisjeffery/timecop) from 0.9.10 to 0.9.11.
- [Changelog](https://github.com/travisjeffery/timecop/blob/master/History.md)
- [Commits](travisjeffery/timecop@v0.9.10...v0.9.11)

---
updated-dependencies:
- dependency-name: timecop
  dependency-version: 0.9.11
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump marcel from 1.1.0 to 1.2.1 (#8033)

Bumps [marcel](https://github.com/rails/marcel) from 1.1.0 to 1.2.1.
- [Release notes](https://github.com/rails/marcel/releases)
- [Commits](rails/marcel@v1.1.0...v1.2.1)

---
updated-dependencies:
- dependency-name: marcel
  dependency-version: 1.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump the rjsf group with 2 updates (#8035)

Bumps the rjsf group with 2 updates: [@rjsf/core](https://github.com/rjsf-team/react-jsonschema-form) and [@rjsf/validator-ajv8](https://github.com/rjsf-team/react-jsonschema-form).


Updates `@rjsf/core` from 6.6.1 to 6.6.2
- [Release notes](https://github.com/rjsf-team/react-jsonschema-form/releases)
- [Changelog](https://github.com/rjsf-team/react-jsonschema-form/blob/main/CHANGELOG.md)
- [Commits](rjsf-team/react-jsonschema-form@6.6.1...6.6.2)

Updates `@rjsf/validator-ajv8` from 6.6.1 to 6.6.2
- [Release notes](https://github.com/rjsf-team/react-jsonschema-form/releases)
- [Changelog](https://github.com/rjsf-team/react-jsonschema-form/blob/main/CHANGELOG.md)
- [Commits](rjsf-team/react-jsonschema-form@6.6.1...6.6.2)

---
updated-dependencies:
- dependency-name: "@rjsf/core"
  dependency-version: 6.6.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rjsf
- dependency-name: "@rjsf/validator-ajv8"
  dependency-version: 6.6.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rjsf
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump playwright from 1.60.0 to 1.61.0 (#8029)

Bumps [playwright](https://github.com/microsoft/playwright-python) from 1.60.0 to 1.61.0.
- [Release notes](https://github.com/microsoft/playwright-python/releases)
- [Commits](microsoft/playwright-python@v1.60.0...v1.61.0)

---
updated-dependencies:
- dependency-name: playwright
  dependency-version: 1.61.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Upgraded babel to v8 (#8041)

* Switched JSX compilation to the automatic runtime (#8042)

* Migrated AnnotationUsagePanel to react table v8 (#8021)

* Upgraded to React v19 (#8044)

* Updated links to refer to new documentation website (#8049)

* Updated documentation images (#8053)

- moved externally-hosted images into repository
- ensured images are vertically centred and displayed as new paragraphs
- cropped images to remove blank space

* Implemented GET test_runs API route (#8055)

* Standardized Table of Contents in docs (#8062)

* Added table to report incomplete scanned exam groups (#8051)

* Made UI improvements for assign scans page (#8059)

* Allow new instructors without existing courses to create a course via LTI launch (#8061)

* Resolved/ignored Brakeman warnings and added Brakeman to CI checks (#8066)

* Fixed scan error pages table "Status" column hidden "Fix" link (#8070)

* Restricted cross-assignment grader membership changes (#8072)

* Fixed grader random assignment to use post-filtered grader weights (#8073)

* build(deps): bump loofah from 2.25.1 to 2.25.2 (#8077)

Bumps [loofah](https://github.com/flavorjones/loofah) from 2.25.1 to 2.25.2.
- [Release notes](https://github.com/flavorjones/loofah/releases)
- [Changelog](https://github.com/flavorjones/loofah/blob/main/CHANGELOG.md)
- [Commits](flavorjones/loofah@v2.25.1...v2.25.2)

---
updated-dependencies:
- dependency-name: loofah
  dependency-version: 2.25.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump websocket-driver from 0.8.1 to 0.8.2 (#8078)

Bumps [websocket-driver](https://github.com/faye/websocket-driver-ruby) from 0.8.1 to 0.8.2.
- [Changelog](https://github.com/faye/websocket-driver-ruby/blob/main/CHANGELOG.md)
- [Commits](faye/websocket-driver-ruby@0.8.1...0.8.2)

---
updated-dependencies:
- dependency-name: websocket-driver
  dependency-version: 0.8.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump dompurify from 3.4.11 to 3.4.12 (#8081)

Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.4.11 to 3.4.12.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](cure53/DOMPurify@3.4.11...3.4.12)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-version: 3.4.12
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump fast-uri from 3.1.2 to 3.1.4 (#8082)

Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.2 to 3.1.4.
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](fastify/fast-uri@v3.1.2...v3.1.4)

---
updated-dependencies:
- dependency-name: fast-uri
  dependency-version: 3.1.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Decreased scanned exam QR code size and ignored OCR whitespace characters (#8076)

* build(deps): bump immutable from 5.1.5 to 5.1.9 (#8080)

Bumps [immutable](https://github.com/immutable-js/immutable-js) from 5.1.5 to 5.1.9.
- [Release notes](https://github.com/immutable-js/immutable-js/releases)
- [Changelog](https://github.com/immutable-js/immutable-js/blob/main/CHANGELOG.md)
- [Commits](immutable-js/immutable-js@v5.1.5...v5.1.9)

---
updated-dependencies:
- dependency-name: immutable
  dependency-version: 5.1.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump rails-html-sanitizer from 1.6.2 to 1.7.1 (#8079)

Bumps [rails-html-sanitizer](https://github.com/rails/rails-html-sanitizer) from 1.6.2 to 1.7.1.
- [Release notes](https://github.com/rails/rails-html-sanitizer/releases)
- [Changelog](https://github.com/rails/rails-html-sanitizer/blob/main/CHANGELOG.md)
- [Commits](rails/rails-html-sanitizer@v1.6.2...v1.7.1)

---
updated-dependencies:
- dependency-name: rails-html-sanitizer
  dependency-version: 1.7.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Automatically collect submissions for complete scanned assessments (#8069)

* build(deps): bump rmagick from 6.2.0 to 7.0.5 (#8028)

* build(deps): bump rmagick from 6.2.0 to 7.0.5

Bumps [rmagick](https://github.com/rmagick/rmagick) from 6.2.0 to 7.0.5.
- [Release notes](https://github.com/rmagick/rmagick/releases)
- [Changelog](https://github.com/rmagick/rmagick/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rmagick/rmagick/commits)

---
updated-dependencies:
- dependency-name: rmagick
  dependency-version: 7.0.5
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Added installation of system packages to test_jest CI action

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: David Liu <david@cs.toronto.edu>

* build(deps): bump json from 2.19.8 to 2.19.9 (#8084)

Bumps [json](https://github.com/ruby/json) from 2.19.8 to 2.19.9.
- [Release notes](https://github.com/ruby/json/releases)
- [Changelog](https://github.com/ruby/json/blob/master/CHANGES.md)
- [Commits](ruby/json@v2.19.8...v2.19.9)

---
updated-dependencies:
- dependency-name: json
  dependency-version: 2.19.9
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Refactored groups tables to use react-table v8 (#8068)

* Prevented check_timeout calls when window is inactive or session has expired (#8074)

* Modified release scripts to use only plain Ruby (#8086)

Excluded release/ scripts from rubocop linting

* build(deps-dev): bump postcss from 8.5.15 to 8.5.23 (#8087)

Bumps [postcss](https://github.com/postcss/postcss) from 8.5.15 to 8.5.23.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](postcss/postcss@8.5.15...8.5.23)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.23
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fixed typos and icons in documentation (#8088)

* build(deps-dev): bump msgpack from 1.8.0 to 1.8.2 (#8091)

Bumps [msgpack](https://github.com/msgpack/msgpack-ruby) from 1.8.0 to 1.8.2.
- [Changelog](https://github.com/msgpack/msgpack-ruby/blob/master/ChangeLog)
- [Commits](msgpack/msgpack-ruby@v1.8.0...v1.8.2)

---
updated-dependencies:
- dependency-name: msgpack
  dependency-version: 1.8.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump postcss from 8.5.23 to 8.5.24 (#8099)

Bumps [postcss](https://github.com/postcss/postcss) from 8.5.23 to 8.5.24.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](postcss/postcss@8.5.23...8.5.24)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.24
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump selenium-webdriver from 4.35.0 to 4.46.0 (#8095)

Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.35.0 to 4.46.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](SeleniumHQ/selenium@selenium-4.35.0...selenium-4.46.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-version: 4.46.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump i18n from 1.14.8 to 1.15.2 (#8093)

Bumps [i18n](https://github.com/ruby-i18n/i18n) from 1.14.8 to 1.15.2.
- [Release notes](https://github.com/ruby-i18n/i18n/releases)
- [Changelog](https://github.com/ruby-i18n/i18n/blob/master/CHANGELOG.md)
- [Commits](ruby-i18n/i18n@v1.14.8...v1.15.2)

---
updated-dependencies:
- dependency-name: i18n
  dependency-version: 1.15.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump rubyzip from 3.2.2 to 3.4.1 (#8092)

* build(deps): bump rubyzip from 3.2.2 to 3.4.1

Bumps [rubyzip](https://github.com/rubyzip/rubyzip) from 3.2.2 to 3.4.1.
- [Release notes](https://github.com/rubyzip/rubyzip/releases)
- [Changelog](https://github.com/rubyzip/rubyzip/blob/main/Changelog.md)
- [Commits](rubyzip/rubyzip@v3.2.2...v3.4.1)

---
updated-dependencies:
- dependency-name: rubyzip
  dependency-version: 3.4.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Updated Gemfile to remove "require: 'zip'", which was required before Rubyzip 3.4.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: David Liu <david@cs.toronto.edu>

* build(deps): bump the fortawesome group with 5 updates (#8094)

Bumps the fortawesome group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [@fortawesome/fontawesome-svg-core](https://github.com/FortAwesome/Font-Awesome) | `7.3.0` | `7.3.1` |
| [@fortawesome/free-brands-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `7.3.0` | `7.3.1` |
| [@fortawesome/free-regular-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `7.3.0` | `7.3.1` |
| [@fortawesome/free-solid-svg-icons](https://github.com/FortAwesome/Font-Awesome) | `7.3.0` | `7.3.1` |
| [@fortawesome/react-fontawesome](https://github.com/FortAwesome/react-fontawesome) | `3.3.1` | `3.5.0` |

Updates `@fortawesome/fontawesome-svg-core` from 7.3.0 to 7.3.1
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/7.x/CHANGELOG.md)
- [Commits](FortAwesome/Font-Awesome@7.3.0...7.3.1)

Updates `@fortawesome/free-brands-svg-icons` from 7.3.0 to 7.3.1
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/7.x/CHANGELOG.md)
- [Commits](FortAwesome/Font-Awesome@7.3.0...7.3.1)

Updates `@fortawesome/free-regular-svg-icons` from 7.3.0 to 7.3.1
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/7.x/CHANGELOG.md)
- [Commits](FortAwesome/Font-Awesome@7.3.0...7.3.1)

Updates `@fortawesome/free-solid-svg-icons` from 7.3.0 to 7.3.1
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/7.x/CHANGELOG.md)
- [Commits](FortAwesome/Font-Awesome@7.3.0...7.3.1)

Updates `@fortawesome/react-fontawesome` from 3.3.1 to 3.5.0
- [Release notes](https://github.com/FortAwesome/react-fontawesome/releases)
- [Changelog](https://github.com/FortAwesome/react-fontawesome/blob/main/CHANGELOG.md)
- [Commits](FortAwesome/react-fontawesome@v3.3.1...v3.5.0)

---
updated-dependencies:
- dependency-name: "@fortawesome/fontawesome-svg-core"
  dependency-version: 7.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: fortawesome
- dependency-name: "@fortawesome/free-brands-svg-icons"
  dependency-version: 7.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: fortawesome
- dependency-name: "@fortawesome/free-regular-svg-icons"
  dependency-version: 7.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: fortawesome
- dependency-name: "@fortawesome/free-solid-svg-icons"
  dependency-version: 7.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: fortawesome
- dependency-name: "@fortawesome/react-fontawesome"
  dependency-version: 3.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: fortawesome
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump the react group with 2 updates (#8096)

Bumps the react group with 2 updates: [react](https://github.com/react/react/tree/HEAD/packages/react) and [react-dom](https://github.com/react/react/tree/HEAD/packages/react-dom).


Updates `react` from 19.2.7 to 19.2.8
- [Release notes](https://github.com/react/react/releases)
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/react/react/commits/v19.2.8/packages/react)

Updates `react-dom` from 19.2.7 to 19.2.8
- [Release notes](https://github.com/react/react/releases)
- [Changelog](https://github.com/react/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/react/react/commits/v19.2.8/packages/react-dom)

---
updated-dependencies:
- dependency-name: react
  dependency-version: 19.2.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: react
- dependency-name: react-dom
  dependency-version: 19.2.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: react
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Added row number along side of assignment grades table (#8089)

* Migrated functions using heic2any to heic-convert (#8100)

Removed script-src CSP exceptions that were required by heic2any.

* Resolved API key hash security warning (#8104)

* Added option to fix sideways scans (#8103)

* build(deps): bump fast-uri from 3.1.4 to 3.1.5 (#8107)

Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.4 to 3.1.5.
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](fastify/fast-uri@v3.1.4...v3.1.5)

---
updated-dependencies:
- dependency-name: fast-uri
  dependency-version: 3.1.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Added row numbers to course summaries table (#8108)

* build(deps): bump the rjsf group across 1 directory with 2 updates (#8097)

Bumps the rjsf group with 2 updates in the / directory: [@rjsf/core](https://github.com/rjsf-team/react-jsonschema-form) and [@rjsf/validator-ajv8](https://github.com/rjsf-team/react-jsonschema-form).


Updates `@rjsf/core` from 6.6.2 to 6.7.1
- [Release notes](https://github.com/rjsf-team/react-jsonschema-form/releases)
- [Changelog](https://github.com/rjsf-team/react-jsonschema-form/blob/main/CHANGELOG.md)
- [Commits](rjsf-team/react-jsonschema-form@6.6.2...v6.7.1)

Updates `@rjsf/validator-ajv8` from 6.6.2 to 6.7.1
- [Release notes](https://github.com/rjsf-team/react-jsonschema-form/releases)
- [Changelog](https://github.com/rjsf-team/react-jsonschema-form/blob/main/CHANGELOG.md)
- [Commits](rjsf-team/react-jsonschema-form@6.6.2...v6.7.1)

---
updated-dependencies:
- dependency-name: "@rjsf/core"
  dependency-version: 6.7.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rjsf
- dependency-name: "@rjsf/validator-ajv8"
  dependency-version: 6.7.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: rjsf
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump dompurify from 3.4.12 to 3.4.13 (#8112)

Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.4.12 to 3.4.13.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](cure53/DOMPurify@3.4.12...3.4.13)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-version: 3.4.13
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Updated to Rails v8.1.3.1 (#8113)

* Enable group invitations to use email addresses (#8106)

Previously, inviters had to use usernames to invite students to a group.

* Replaced jcrop with cropperjs for exam cover page cropping (#8114)

* build(deps-dev): bump webmock from 3.26.1 to 3.26.2 (#8119)

Bumps [webmock](https://github.com/bblimke/webmock) from 3.26.1 to 3.26.2.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](bblimke/webmock@v3.26.1...v3.26.2)

---
updated-dependencies:
- dependency-name: webmock
  dependency-version: 3.26.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump csv from 3.3.5 to 3.3.6 (#8122)

Bumps [csv](https://github.com/ruby/csv) from 3.3.5 to 3.3.6.
- [Release notes](https://github.com/ruby/csv/releases)
- [Changelog](https://github.com/ruby/csv/blob/main/NEWS.md)
- [Commits](ruby/csv@v3.3.5...v3.3.6)

---
updated-dependencies:
- dependency-name: csv
  dependency-version: 3.3.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump bootsnap from 1.24.0 to 1.24.6 (#8115)

Bumps [bootsnap](https://github.com/rails/bootsnap) from 1.24.0 to 1.24.6.
- [Release notes](https://github.com/rails/bootsnap/releases)
- [Changelog](https://github.com/rails/bootsnap/blob/main/CHANGELOG.md)
- [Commits](rails/bootsnap@v1.24.0...v1.24.6)

---
updated-dependencies:
- dependency-name: bootsnap
  dependency-version: 1.24.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump @rails/actioncable in the rails group (#8120)

Bumps the rails group with 1 update: [@rails/actioncable](https://github.com/rails/rails).


Updates `@rails/actioncable` from 8.1.300 to 8.1.301
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/commits)

---
updated-dependencies:
- dependency-name: "@rails/actioncable"
  dependency-version: 8.1.301
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rails
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump autoprefixer from 10.5.0 to 10.5.4 (#8121)

Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.5.0 to 10.5.4.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](postcss/autoprefixer@10.5.0...10.5.4)

---
updated-dependencies:
- dependency-name: autoprefixer
  dependency-version: 10.5.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump mime from 4.0.7 to 4.1.0 (#8123)

Bumps [mime](https://github.com/broofa/mime) from 4.0.7 to 4.1.0.
- [Release notes](https://github.com/broofa/mime/releases)
- [Changelog](https://github.com/broofa/mime/blob/main/CHANGELOG.md)
- [Commits](broofa/mime@v4.0.7...v4.1.0)

---
updated-dependencies:
- dependency-name: mime
  dependency-version: 4.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump brakeman from 8.0.4 to 8.0.5 (#8125)

Bumps [brakeman](https://github.com/presidentbeef/brakeman) from 8.0.4 to 8.0.5.
- [Release notes](https://github.com/presidentbeef/brakeman/releases)
- [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md)
- [Commits](presidentbeef/brakeman@v8.0.4...v8.0.5)

---
updated-dependencies:
- dependency-name: brakeman
  dependency-version: 8.0.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Removed CSP img_src blob exception for scanned exam routes (#8109)

The affected routes are ExamTemplatesController#assign_errors and GroupsController#assign_scans

* build(deps): bump resque-scheduler from 4.11.0 to 5.0.0 (#8124)

Bumps [resque-scheduler](https://github.com/resque/resque-scheduler) from 4.11.0 to 5.0.0.
- [Release notes](https://github.com/resque/resque-scheduler/releases)
- [Changelog](https://github.com/resque/resque-scheduler/blob/master/CHANGELOG.md)
- [Commits](resque/resque-scheduler@v4.11.0...v5.0.0)

---
updated-dependencies:
- dependency-name: resque-scheduler
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Refactored grading annotation routes to respond with JSON (#8127)

* Updated autotester test request to include optional TestBatch id (#7991)

* Set course dates from term on LTI course creation (#8057)

* Updated result view to display mark last updated by field (#8131)

* build(deps): bump brace-expansion (#8132)

Bumps  and [brace-expansion](https://github.com/juliangruber/brace-expansion). These dependencies needed to be updated together.

Updates `brace-expansion` from 1.1.14 to 1.1.18
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](juliangruber/brace-expansion@v1.1.14...v1.1.18)

Updates `brace-expansion` from 2.1.0 to 2.1.4
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](juliangruber/brace-expansion@v1.1.14...v1.1.18)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.18
  dependency-type: indirect
- dependency-name: brace-expansion
  dependency-version: 2.1.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Improved table v8 styling (#8133)

* Centre checkboxes in selection column
* Hide inactive scrollbars (uses the scrollbar-gutter: stable CSS property to reserve space, ensuring that the header columns are aligned with the body even when the body has a scrollbar)
* Enforce horizontal scrolling when tables are used in the .mapping-container divs (groups and graders pages)

* Improvements to grouping deletion handling (#8134)

* build(deps): bump pdfjs-dist from 5.6.205 to 6.2.108 (#8111)

* build(deps): bump pdfjs-dist from 5.6.205 to 6.2.108

Bumps [pdfjs-dist](https://github.com/mozilla/pdf.js) from 5.6.205 to 6.2.108.
- [Release notes](https://github.com/mozilla/pdf.js/releases)
- [Commits](mozilla/pdf.js@v5.6.205...v6.2.108)

---
updated-dependencies:
- dependency-name: pdfjs-dist
  dependency-version: 6.2.108
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Updates for pdf.js v6.2.108 upgrade

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: David Liu <david@cs.toronto.edu>

* Use redirect_back_or_to in GroupsController

* v2.10.2

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Daniel Rafailov <74218740+danielrafailov1@users.noreply.github.com>
Co-authored-by: David Liu <david@cs.toronto.edu>
Co-authored-by: philipkukulak <philip.kukulak@utoronto.ca>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Muhammad <rafie.muhammad2007@gmail.com>
Co-authored-by: Yanzhen Chen <yanzhenchen123@gmail.com>
Co-authored-by: sophia-huynh <3385254+sophia-huynh@users.noreply.github.com>
Co-authored-by: Aayush Karki <147123757+akarki2005@users.noreply.github.com>
Co-authored-by: donny-wong <141858744+donny-wong@users.noreply.github.com>
Co-authored-by: Tianshu Luan <tianshu.luan@utoronto.ca>
Co-authored-by: Daniel Rafailov <74218740+danielrafailov@users.noreply.github.com>
@mrafie1
mrafie1 deleted the migrate-AnnotationUsagePanel branch September 11, 2026 18:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants