Skip to content

[Task] General dependencies & Tooling upgrade, remove build warnings #916

@metalisk

Description

@metalisk

Summary

Perform a comprehensive maintenance upgrade of the PWA app + Electron to reduce technical debt, eliminate warnings, and ensure compatibility with modern tooling.

Details

Some tasks partially overlap with dependency updates, but are listed separately to ensure focused testing and verification.

Scope / Tasks

  1. Update dependencies (general)
    • Upgrade all relevant npm packages to supported versions
 @capacitor/android                     ^7.3.0  →    ^8.0.0
 @capacitor/cli                         ^7.3.0  →    ^8.0.0
 @capacitor/core                        ^7.3.0  →    ^8.0.0
 @capacitor/filesystem                  ^7.1.1  →    ^8.0.0
 @commitlint/cli                       ^19.8.0  →   ^20.2.0
 @commitlint/config-conventional       ^19.7.1  →   ^20.2.0
 @commitlint/types                     ^19.8.0  →   ^20.2.0
 @electron/notarize                     ^2.5.0  →    ^3.1.1
 @eslint/compat                         ^1.3.2  →    ^2.0.0
 @eslint/eslintrc                       ^3.3.1  →    ^3.3.3
 @eslint/js                            ^9.33.0  →   ^9.39.2
 @openapitools/openapi-generator-cli   ^2.16.3  →   ^2.26.0
 @rollup/plugin-commonjs               ^28.0.2  →   ^29.0.0
 @rushstack/eslint-patch               ^1.10.5  →   ^1.15.0
 @tanstack/vue-query                   ^5.66.0  →   ^5.92.1
 @types/eslint                        ^8.56.10  →    ^9.6.1
 @types/lodash                        ^4.17.15  →  ^4.17.21
 @typescript-eslint/eslint-plugin      ^8.24.0  →   ^8.50.1
 @typescript-eslint/parser             ^8.24.0  →   ^8.50.1
 @vitejs/plugin-vue                     ^5.2.1  →    ^6.0.3
 @vitejs/plugin-vue-jsx                 ^4.1.1  →    ^5.1.3
 @vue/eslint-config-prettier            ^9.0.0  →   ^10.2.0
 @vueuse/core                          ^12.5.0  →   ^14.1.0
 autoprefixer                         ^10.4.20  →  ^10.4.23
 axios                                  ^1.7.9  →   ^1.13.2
 bignumber.js                           ^9.1.2  →    ^9.3.1
 bitcoinjs-lib                          ^6.1.7  →    ^7.0.0
 core-js                               ^3.40.0  →   ^3.47.0
 cross-env                              ^7.0.3  →   ^10.1.0
 crypto-browserify                     ^3.12.0  →   ^3.12.1
 dayjs                                ^1.11.13  →  ^1.11.19
 dompurify                              ^3.2.4  →    ^3.3.1
 dotenv                                ^16.4.7  →   ^17.2.3
 ecpair                                 ^2.1.0  →    ^3.0.0
 electron                              ^32.0.1  →   ^39.2.7
 electron-builder                     ^24.13.3  →  ^26.0.12
 electron-devtools-installer            ^3.2.0  →    ^4.0.0
 eslint                                ^9.33.0  →   ^9.39.2
 eslint-import-resolver-typescript      ^3.6.3  →    ^4.4.4
 eslint-plugin-import                  ^2.29.1  →   ^2.32.0
 eslint-plugin-vue                     ^9.27.0  →   ^10.6.2
 execa                                  ^9.5.2  →    ^9.6.1
 globals                               ^16.3.0  →   ^16.5.0
 idb                                    ^8.0.2  →    ^8.0.3
 js-base64                              ^3.7.7  →    ^3.7.8
 jsdom                                 ^26.0.0  →   ^27.3.0
 lint-staged                           ^15.4.3  →   ^16.2.7
 marked                                ^15.0.7  →   ^17.0.1
 multiformats                          ^13.3.2  →   ^13.4.2
 pbkdf2                                 ^3.1.2  →    ^3.1.5
 pinia                                  ^3.0.0  →    ^3.0.4
 prettier                               ^3.5.0  →    ^3.7.4
 sass                                  ^1.85.1  →   ^1.97.1
 sass-loader                           ^16.0.5  →   ^16.0.6
 semver                                 ^7.7.1  →    ^7.7.3
 sinon                                 ^19.0.2  →   ^21.0.1
 socket.io-client                       ^4.8.1  →    ^4.8.3
 swagger-typescript-api                13.0.23  →   13.2.16
 tiny-secp256k1                         ^2.2.3  →    ^2.2.4
 typescript                             ^5.7.3  →    ^5.9.3
 uuid                                  ^11.0.5  →   ^13.0.0
 vite                                   ^6.3.4  →    ^7.3.0
 vite-plugin-electron                  ^0.28.7  →   ^0.29.0
 vite-plugin-pwa                        ^1.0.0  →    ^1.2.0
 vite-plugin-wasm                       ^3.4.1  →    ^3.5.0
 vitest                                 ^3.0.9  →   ^4.0.16
 vue                                   ^3.5.13  →   ^3.5.26
 vue-eslint-parser                      ^9.4.3  →   ^10.2.0
 vue-i18n                              ^11.1.1  →   ^11.2.7
 vue-router                             ^4.5.0  →    ^4.6.4
 vue-tsc                                ^2.2.0  →    ^3.2.1
 vuetify                               ^3.7.12  →   ^3.11.5
  1. Configure linter & fix issues

    • Ensure linter is properly configured
    • Fix existing linting errors
  2. Fix build-time warnings

    • Eliminate warnings during production and dev builds
Image
  1. Fix runtime browser console warnings
    • Clean up Vue / JS warnings visible in DevTools console
Image
  1. Electron stack upgrade
    • Update to latest versions:
      • electron
      • electron-builder
      • electron-devtools-installer
      • vite-plugin-electron
    • Replace Redux DevTools usage (irrelevant for Vue 3) with VUEJS3_DEVTOOLS
    • Fix log warnings where possible when running npm run electron:dev
Image Image
  1. Ensure test build works
    • Verify npm run serve:test executes successfully
    • Consider removing or replacing deprecated vue-cli-plugin-* packages if required
Image
  1. Fix sourcemap warnings

    • Address warnings:
    • Note dependency chain:
      • sourcemap-codec → magic-string → rollup / vitest / vue
    • Find a viable upgrade path to remove warnings
  2. Fix glob deprecation warnings

    • Current issue:
    • Affected dependencies include:
      • rimraf, shelljs, vue-i18n-extract, workbox-build, zip-stream, @electron
    • Investigate upgrades or replacements to remove legacy glob usage
  3. Replace deprecated rollup polyfills

    • rollup-plugin-node-polyfills is deprecated (last release ~6 years ago)
    • Find a modern alternative
    • Update code accordingly and eliminate related warnings
  4. Update TypeScript

    • Upgrade TypeScript package and resolve resulting issues if any
  5. Upgrade secp256k1 to v5

    • Current version: v4
    • Latest version: v5
    • secp256k1 is not a direct dependency — identify which package depends on it and upgrade if possible
  6. Update crypto-browserify

    • Issue observed after upgrade 3.12.0 → 3.12.1:
      • App breaks after:
        • npm i crypto-browserify@latest
        • npm run dev
    • Investigate root cause and fix compatibility issues
Image

Checklist

  • 1. Update dependencies (general)
  • 2. Configure linter & fix issues
  • 3. Fix build-time warnings
  • 4. Fix runtime browser console warnings
  • 5. Electron stack upgrade
  • 6. Ensure test build works
  • 7. Fix sourcemap warnings
  • 8. Fix glob deprecation warnings
  • 9. Replace deprecated rollup polyfills
  • 10. Update TypeScript
  • 11. Upgrade secp256k1 to v5
  • 12. Update crypto-browserify

Notes

Goal

Reduce warnings to near-zero, ensure modern dependency support, and improve long-term maintainability of the PWA + Electron stack.

Verification

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    CI/CDActions, tests, and pipelinesComposite taskLarge or complex task that consists of multiple subtaskElectronDesktop application packaging and functionalityJavaScriptFrontend or backend code in JavaScriptTypeScriptCode and typing improvements in TypeScriptVueFrontend features or fixes primarily in Vue.jsWebIssues specific to web client appbugSomething isn't working

    Type

    Projects

    Status

    Planned

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions