Skip to content

chore: upgrade dependencies (vitest 4, eslint 10, typescript 6, pytest 9, node 22)#103

Open
scheilch wants to merge 4 commits intomainfrom
chore/dependency-updates
Open

chore: upgrade dependencies (vitest 4, eslint 10, typescript 6, pytest 9, node 22)#103
scheilch wants to merge 4 commits intomainfrom
chore/dependency-updates

Conversation

@scheilch
Copy link
Copy Markdown
Owner

Summary

Batch upgrade of all Dependabot PRs + blocked dependencies.

Changes

  • vitest 3→4.1.5 + @vitest/coverage-v8 hoisting fix
  • eslint 9→10 via @eslint-react/eslint-plugin (replaces eslint-plugin-react)
  • @eslint/markdown 7→8
  • typescript 5→6.0.3 + fix 22 type errors (noUncheckedIndexedAccess)
  • pytest 8→9.0.3, pytest-asyncio 0.24→1.3.0
  • start-server-and-test 2→3.0.2
  • node 20→22 in CI workflows (ci-cd.yml + commitlint.yml)

Code quality improvements

  • React 19: \use()\ instead of \useContext, <Context>\ as provider
  • Fix ref naming conventions (*Ref\ suffix)
  • Fix exhaustive-deps in MultiRoom.tsx
  • Fix leaked setTimeout in Toast.tsx
  • Fix LoadingSkeleton.test borderRadius assertion for vitest 4

Supersedes

Closes #72, closes #79, closes #91, closes #94, closes #95, closes #96

Verification

  • Backend: 1129 tests passed
  • Frontend: 393 tests passed
  • ESLint: 0 errors, 0 warnings
  • TypeScript: 0 errors

…t 9, node 22)

- vitest 3→4.1.5, @vitest/coverage-v8 hoisting fix
- eslint 9→10 via @eslint-react/eslint-plugin (replaces eslint-plugin-react)
- @eslint/markdown 7→8
- typescript 5→6.0.3, fix 22 type errors (noUncheckedIndexedAccess)
- pytest 8→9.0.3, pytest-asyncio 0.24→1.3.0
- start-server-and-test 2→3.0.2
- node 20→22 in CI workflows
- React 19: use() instead of useContext, Context as provider
- Fix ref naming conventions, exhaustive-deps, leaked timeout
- Fix LoadingSkeleton.test borderRadius assertion for vitest 4
Christian Scheil added 3 commits April 22, 2026 22:37
- Fix asyncio.CancelledError not re-raised in health_check.py
- Add keyboard listeners (onKeyDown) for a11y in ConfirmDialog, ManualIPModal, RadioSearch
- Harden SSL context in wizard_routes.py _check_port_443 with PROTOCOL_TLS_CLIENT
- Add station_id input validation in tunein.py to prevent URL injection
- Add coverage reporting (Python + JS) to SonarQube workflow
- Add weekly scheduled SonarQube scan (Monday 6:00 UTC)
- Extract getStationInitials() and getAvatarColor() from PresetButton and RadioSearch into shared utils/stationAvatar.ts
- Add unit tests for extracted functions (11 tests)
- Fix SonarQube frontend coverage path (.out/coverage/frontend/lcov.info)
- DeviceHealthCheck: 21 tests covering lifecycle, ping, SSH verification, error resilience
- ConfirmDialog: 11 tests covering visibility, content, interactions, a11y
- StatusBadge: 17 tests covering all 7 statuses, labels, CSS classes, icons
@sonarqubecloud
Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
47.6% Coverage on New Code (required ≥ 80%)

See analysis details on SonarQube Cloud

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.

1 participant