Skip to content

Fix/dependabot qs - #528

Open
gnahk66 wants to merge 2037 commits into
thoth-tech:developmentfrom
ontrack-features-t2-2026:fix/dependabot-qs
Open

gnahk66 wants to merge 2037 commits into
thoth-tech:developmentfrom
ontrack-features-t2-2026:fix/dependabot-qs

Conversation

@gnahk66

@gnahk66 gnahk66 commented Sep 14, 2026

Copy link
Copy Markdown

Any italic text should be deleted from the final Pull Request text, including this line

Description

Updates the qs dependency to a patched version to address Dependabot security alerts.

This resolves reported vulnerabilities involving:

  • Array limit bypass through bracket-key comma parsing
  • Denial of Service through attacker-controlled isBuffer handling

The update is limited to the dependency lockfile and does not introduce application feature changes.
Fixes # (issue)

Type of change

Please delete options that are not relevant.

  • Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?

The dependency update was verified by running:

  • npm.cmd run typecheck
  • npm.cmd run lint
  • npm.cmd run test:ci

The installed qs version was also verified using:

  • npm.cmd ls qs

Testing Checklist:

  • Tested in latest Chrome
  • Tested in latest Safari
  • Tested in latest Firefox

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have requested a review from @macite and @jakerenzella on the Pull Request

maplefoxgit and others added 30 commits August 26, 2026 17:12
…test-timeout-pr-20260824

test(ci): allow Angular suites time under load
…cription-change

MN-C05: Re-subscribe when the browser rotates push registration
…r-median-current-date-20260824

fix(ppi): stop demo peer median at the current date
…k-secret-leak-20260824

fix(auth): scrub callback credentials before telemetry
…tion/ontrack-mvp-validation-20260826

# Conflicts:
#	src/app/units/states/edit/directives/unit-tasks-editor/unit-task-editor.component.html
… into integration/ontrack-mvp-validation-20260826

# Conflicts:
#	src/app/api/services/peer-progress.service.ts
#	src/app/visualisations/progress-burndown-chart/progress-burndown-chart.component.html
…toolchain-pr-20260824

chore(toolchain): align nvm with supported Node 22
The compare call 404s once a source or target branch is deleted, and with
set -euo pipefail that fails the whole weekly job instead of skipping the
entry. Check both refs exist first and exit 0 when either is missing.
@angular/build, @angular/cli and ngx-monaco-editor-v2-alternative were
pinned to exact versions. In a change whose purpose is remediating audit
findings that is the wrong direction: it stops the next patch release
arriving and stops a later npm audit fix from taking it, and @angular/build
is one of the packages carrying an advisory on the base branch.

Restored as ^22.0.9, ^22.0.9 and ^22.0.0. The resolved versions in the
lockfile are unchanged and still satisfy the ranges, so nothing is upgraded
here. The root declaration in package-lock.json is updated to match, which
is what npm ci compares against.

The exact dompurify pin inside overrides is deliberate and is left alone.

npm audit on origin/11.0.x: 12 total, 4 high, 5 moderate, 3 low.
npm audit with this branch: 0.
…y-integration-prs-20260826

ci: add weekly integration PR automation
…on-submission-only-20260826

fix: only reset dashboard after completed submission
project-dashboard.component.spec.ts came out as add/add. 11.0.x gained one
via #96 covering task selection, this branch has one covering route reuse.
Kept both, the describe names were already distinct.

The merge also broke the build in a way neither side could see on its own.
#96 added taskService as the third constructor parameter of
ProjectDashboardComponent, and this branch's spec constructs the component
directly rather than through TestBed, so all three call sites were passing
six arguments to a seven argument constructor:

  TS2554: Expected 7 arguments, but got 6.
  An argument for 'breakpointObserver' was not provided.

Added a TaskService stub in third position at each of them. It only needs
taskSubmissionCompleted$, since that is the one member ngOnInit subscribes
to, so a bare Subject is enough and the tests stay about routing.

ng test --include **/project-dashboard.component.spec.ts: 6 passed.
…260824

fix(deps): resolve inherited npm audit findings
….x-all-features-20260824

release(web): OnTrack 11.0.x all-features handover
…-mvp-20260827

# Conflicts:
#	src/app/projects/states/dashboard/project-dashboard/project-dashboard.component.spec.ts
The target grade selector lost its static disabled attribute, so it was live for
anyone viewing the dashboard, staff included, and the API permits the change
because tutors hold :change on a project. The component already computes
viewingOtherStudentProject, so the guard uses that. The Task Planner carried the
same unguarded selector and now matches.

Deselecting had moved into applyFilters, which is bound to the search box, so
every keystroke closed the open task and rewrote the URL, losing an unsent
comment with it. It now only deselects when the open task has gone or a view
filter hides it.

Hiding tasks above the target grade is counted by the filter badge, and a task
with unread comments stays visible the way the hide-completed filter already
allows, so tutor feedback cannot disappear behind the new default.
Swapping first() for takeUntil made the subscription permanent, which is what
unit switching needs. It also meant every emission re-ran activateProject, which
resets projectReady and clears the selected task.

The portfolios progress tab re-emits on every change detection pass, because its
taskSelectionUrlBase getter returned a new array each call and ngOnChanges pushed
into the project subject unconditionally. The tab reset itself continuously.

activateProject now returns early when the project is already the active one, the
url base is memoised, and ngOnChanges only pushes when the project input actually
changed.
contrastingTextColor left the always-rendered Awaiting Feedback card at 4.44:1,
under the 4.5:1 AA wants for normal text. The dark foreground moves to #000000
and the dark-contrast divisor now matches it.

The hidden-series legend pill fell to 2.97:1 while still being an interactive
control, which misses the 3:1 in 1.4.11. It uses an explicit dimmed state rather
than an opacity.

Hiding a series zeroed its values instead of removing it, so the pill read as off
while the chart still drew the entry. Hidden series are filtered out of the data.

The clipping guard asserted a removed class string, so it could not fail for the
right reason. It reads computed maxHeight and overflow instead.
maplefoxgit and others added 30 commits September 14, 2026 10:53
…-http-comment-safety

fix(web): routing, http and comment safety
…dmin-screens

fix(web): staff and admin screens
…omments-session

fix(web): inbox, comments and UX fixes (audit round 5)
…dation

feat(theme): theme foundation, system detection, persistence and no-flash startup
feat(notifications): explain notification actions and link settings
…and_yarn/js-yaml-4.3.2

chore(deps-dev): bump js-yaml from 4.3.1 to 4.3.2
refactor: replace flex-layout with tailwindcss in unit dropdown
refactor: replace flex-layout with tailwindcss in task inbox
refactor: replace MediaObserver in global state service
…le-form

refactor: replace flex-layout with tailwindcss in edit profile form
refactor: replace flex-layout with tailwindcss in audio player
refactor: replace flex-layout with tailwindcss in admin users
refactor: replace flex-layout with tailwindcss in header
refactor: replace flex-layout with tailwindcss in edit profile
…endar-2026-09

feat(calendar): land CAL-F07, F08, F09 and PR-CAL-14 on 11.0.x
FEPERF-20: Optimise comment cache reconciliation
…ixed-20260914

fix(a11y): label the task badges used by students
Both unit dropdowns bound [value] on the select, but their options are
created later by @for, so the browser kept the first option selected. A
staff member managing two units could see SIT111 in Manage updates while
saves went to SIT222, and the filter showed All my units for ?unit=222.
Mark the matching option as selected and add a regression spec that holds
the reload open until the options re-render.

Also open a Teams draft for a session saved without a description. The API
returns null for it, which the plain text check rejected as too long.
…nnouncements-sessions

feat: centralize unit updates, Teams meetings and study essentials
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.