Skip to content

Conversation

@quietbits
Copy link
Contributor

@quietbits quietbits commented Jan 9, 2026

  • Used AI for most of the updates to save time.
  • Migrated from
    • Gulp + Webpack 1 to Vite v4,
    • Node v16 to v22,
    • React v16 to v18.
  • Made as few updates as possible to get this working, keeping the same UI.
  • We're using the muicss framework for the UI, and it hasn't been updated in 5 years. Because the whole UI depends on it, we can't update most of the other dependencies.
  • Created custom D3 charts because the react-d3-components library doesn't work with newer Node versions; it's no longer maintained.
  • If we want to keep maintaining this project, we should do a proper update with a complete rewrite, because in this state, there are too many outdated parts to update them properly.
  • PR Preview running the current version for comparison.

@quietbits quietbits marked this pull request as draft January 9, 2026 14:43
@socket-security
Copy link

socket-security bot commented Jan 9, 2026

@socket-security
Copy link

socket-security bot commented Jan 9, 2026

Warning

Review the following alerts detected in dependencies.

According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.

Action Severity Alert  (click "▶" to expand/collapse)
Warn High
License policy violation: npm @esbuild/android-arm under BSD-3-Clause AND MIT

Location: Package overview

From: package-lock.jsonnpm/tsx@3.14.0npm/vite@4.5.14npm/@esbuild/android-arm@0.18.20

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@esbuild/android-arm@0.18.20. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
License policy violation: npm @esbuild/android-x64 under BSD-3-Clause AND MIT

Location: Package overview

From: package-lock.jsonnpm/tsx@3.14.0npm/vite@4.5.14npm/@esbuild/android-x64@0.18.20

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@esbuild/android-x64@0.18.20. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
License policy violation: npm @humanwhocodes/object-schema under BSD-3-Clause

Location: Package overview

From: package-lock.jsonnpm/eslint@8.57.1npm/@humanwhocodes/object-schema@2.0.3

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@humanwhocodes/object-schema@2.0.3. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
License policy violation: npm @stellar/js-xdr

Location: Package overview

From: package-lock.jsonnpm/@stellar/stellar-sdk@14.4.3npm/@stellar/js-xdr@3.1.2

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@stellar/js-xdr@3.1.2. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
License policy violation: npm @stellar/stellar-sdk

Location: Package overview

From: package-lock.jsonnpm/@stellar/stellar-sdk@14.4.3

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/@stellar/stellar-sdk@14.4.3. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
License policy violation: npm bourbon under GPL-2.0+

License: GPL-2.0+ - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/LICENSE-BUILDTOOLS)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/config.guess)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/.travis/or1k-sim.exp)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/.travis/bfin-sim.exp)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/.travis/m32r-sim.exp)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/.travis/or1k-sim.exp)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/.travis/powerpc-eabisim.exp)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/.travis/wine-sim.exp)

License: GPL-3.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c)

License: GPL-3.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/.travis/ar-lib)

License: GPL-2.0+ - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/diff-lcs-1.5.0/docs/COPYING.txt)

License: GPL-3.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c)

License: GPL-2.0+ - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/LICENSE-BUILDTOOLS)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/config.guess)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/.travis/wine-sim.exp)

License: GPL-3.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c)

License: GPL-3.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/.travis/ar-lib)

License: GPL-2.0+ - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/diff-lcs-1.5.0/docs/COPYING.txt)

License: GPL-3.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/.travis/moxie-sim.exp)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/libffi.closures/closure.exp)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/config.sub)

License: GPL-3.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/.travis/moxie-sim.exp)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/libffi.closures/closure.exp)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/config.sub)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/.travis/compile)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/lib/wrapper.exp)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp)

License: GPL-3.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/lib/libffi.exp)

License: GPL-3.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/libffi.complex/complex.exp)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/libffi.go/go.exp)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/libffi.call/call.exp)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/libffi.complex/complex.exp)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.1.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/libffi.go/go.exp)

License: CC-BY-2.5 - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/aruba-0.14.14/templates/images/LICENSE)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi-x86_64/libtool)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/.travis/compile)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/lib/wrapper.exp)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp)

License: GPL-3.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/lib/libffi.exp)

License: GPL-3.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/libffi.call/call.exp)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/.travis/powerpc-eabisim.exp)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/.travis/bfin-sim.exp)

License: GPL-3.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c)

License: GPL-2.0-only - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi/.travis/m32r-sim.exp)

License: GPL-2.0-or-later - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi-x86_64/doc/Makefile)

License: GPL-2.0-or-later - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi-x86_64/include/Makefile)

License: GPL-2.0-or-later - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi-x86_64/Makefile)

License: GPL-2.0-or-later - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi-x86_64/man/Makefile)

License: GPL-2.0-or-later - the applicable license policy does not allow this license (4) (package/bundle/ruby/3.0.0/gems/ffi-1.15.5/ext/ffi_c/libffi-x86_64/testsuite/Makefile)

From: package-lock.jsonnpm/bourbon@7.3.0

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/bourbon@7.3.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
License policy violation: npm caniuse-lite under CC-BY-4.0

License: CC-BY-4.0 - the applicable license policy does not allow this license (4) (npm metadata)

License: CC-BY-4.0 - the applicable license policy does not allow this license (4) (package/LICENSE)

License: CC-BY-4.0 - the applicable license policy does not allow this license (4) (package/package.json)

From: package-lock.jsonnpm/@vitejs/plugin-react@4.7.0npm/caniuse-lite@1.0.30001763

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/caniuse-lite@1.0.30001763. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
License policy violation: npm d3-ease under BSD-3-Clause

Location: Package overview

From: package-lock.jsonnpm/d3@7.9.0npm/d3-ease@3.0.1

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/d3-ease@3.0.1. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
License policy violation: npm esquery under BSD-3-Clause

Location: Package overview

From: package-lock.jsonnpm/eslint@8.57.1npm/esquery@1.7.0

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/esquery@1.7.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
License policy violation: npm node-forge under GPL-2.0

License: GPL-2.0 - the applicable license policy does not allow this license (4) (package/LICENSE)

From: package-lock.jsonnpm/@google-cloud/bigquery@5.10.0npm/node-forge@1.3.3

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/node-forge@1.3.3. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
License policy violation: npm qs under BSD-3-Clause

Location: Package overview

From: package-lock.jsonnpm/vite-plugin-node-polyfills@0.24.0npm/supertest@6.3.4npm/express@4.22.1npm/qs@6.14.1

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/qs@6.14.1. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
License policy violation: npm robust-predicates under Unlicense

Location: Package overview

From: package-lock.jsonnpm/d3@7.9.0npm/robust-predicates@3.0.2

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/robust-predicates@3.0.2. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
License policy violation: npm rw under BSD-3-Clause

Location: Package overview

From: package-lock.jsonnpm/d3@7.9.0npm/rw@1.3.3

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/rw@1.3.3. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
License policy violation: npm sass

Location: Package overview

From: package-lock.jsonnpm/sass@1.97.2

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/sass@1.97.2. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
License policy violation: npm sha.js under BSD-3-Clause AND MIT

Location: Package overview

From: package-lock.jsonnpm/@stellar/stellar-sdk@14.4.3npm/vite-plugin-node-polyfills@0.24.0npm/sha.js@2.4.12

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/sha.js@2.4.12. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
License policy violation: npm source-map-js under BSD-3-Clause

Location: Package overview

From: package-lock.jsonnpm/sass@1.97.2npm/vite@4.5.14npm/source-map-js@1.2.1

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/source-map-js@1.2.1. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
License policy violation: npm tslib under 0BSD

Location: Package overview

From: package-lock.jsonnpm/concurrently@7.6.0npm/tslib@2.8.1

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/tslib@2.8.1. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
License policy violation: npm typescript under CC-BY-4.0

License: CC-BY-4.0 - the applicable license policy does not allow this license (4) (package/ThirdPartyNoticeText.txt)

License: LicenseRef-W3C-Community-Final-Specification-Agreement - the applicable license policy does not allow this license (4) (package/ThirdPartyNoticeText.txt)

License: MIT-Khronos-old - the applicable license policy does not allow this license (4) (package/ThirdPartyNoticeText.txt)

From: package-lock.jsonnpm/typescript@5.9.3

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/typescript@5.9.3. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
License policy violation: npm vite

Location: Package overview

From: package-lock.jsonnpm/vite@4.5.14

ℹ Read more on: This package | This alert | What is a license policy violation?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Find a package that does not violate your license policy or adjust your policy to allow this package's license.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/vite@4.5.14. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Warn High
Obfuscated code: npm vite is 92.0% likely obfuscated

Confidence: 0.92

Location: Package overview

From: package-lock.jsonnpm/vite@4.5.14

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore npm/vite@4.5.14. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

View full report

@stellar-jenkins
Copy link

Something went wrong with PR preview build please check

@stellar-jenkins
Copy link

Something went wrong with PR preview build please check

@stellar-jenkins
Copy link

Something went wrong with PR preview build please check

@stellar-jenkins
Copy link

@stellar-jenkins
Copy link

@stellar-jenkins
Copy link

@stellar-jenkins
Copy link

Comment on lines +60 to +103
app.use(
express.static(staticDir, {
// Security options
dotfiles: "deny", // Don't serve hidden files (.env, .git, etc.)
index: "index.html",
maxAge: "1d", // Cache static assets for 1 day
// Restrict to specific file extensions for security
extensions: [
"html",
"js",
"css",
"png",
"jpg",
"jpeg",
"gif",
"ico",
"svg",
"woff",
"woff2",
"ttf",
"eot",
],
setHeaders: (res, filePath) => {
// Add security headers
res.setHeader("X-Content-Type-Options", "nosniff");
res.setHeader("X-Frame-Options", "DENY");
res.setHeader("X-XSS-Protection", "1; mode=block");
res.setHeader("Referrer-Policy", "strict-origin-when-cross-origin");

// Set appropriate cache headers based on file type
if (filePath.endsWith(".html")) {
res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
res.setHeader("Pragma", "no-cache");
res.setHeader("Expires", "0");
} else if (
filePath.match(
/\.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$/,
)
) {
res.setHeader("Cache-Control", "public, max-age=86400, immutable"); // 1 day with immutable
}
},
}),
);

Check warning

Code scanning / CodeQL

Exposure of private files Medium

Serves the current working folder, which can contain private information.

Copilot Autofix

AI 17 days ago

In general, the problem is that express.static is configured with "." (the process working directory) in some environments, which can unintentionally expose files outside the intended build output. To fix this, we should never serve "." or any directory derived from process.cwd(); instead, we should always use a known, explicit path to the built static assets, and ensure that this path cannot “expand” to include private files.

The best minimal fix without changing existing behavior is:

  • Remove the special-case branch that sets staticDir = "." in Docker.
  • Always compute staticDir from __dirname to the known dist directory (which the rest of the code already expects via index.html in dist).
  • Optionally allow overriding via an environment variable (e.g., STATIC_DIR) if needed, but still resolve it from __dirname (not process.cwd()).
  • Keep all the current security options on express.static (dotfiles deny, limited extensions, security headers).

Concretely, in backend/routes.ts:

  • Replace the conditional block at lines 92–98 with a deterministic resolution of staticDir to the intended distribution folder, e.g. path.join(__dirname, "..", "..", "dist"). If you want a Docker-specific path, it should still be explicit (e.g. "/usr/share/app/dist"), but not ".".
  • Leave the rest of the static-serving configuration (logging, checks for index.html, headers) unchanged.

No new imports are required; path is already imported, and fs is required locally in the existing code.

Suggested changeset 1
backend/routes.ts

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/backend/routes.ts b/backend/routes.ts
--- a/backend/routes.ts
+++ b/backend/routes.ts
@@ -89,13 +89,8 @@
   // Determine the correct static directory based on environment
   let staticDir: string;
 
-  if (process.cwd().endsWith("/dist")) {
-    // Docker environment: already in dist directory
-    staticDir = ".";
-  } else {
-    // Heroku/other environments: serve from dist directory
-    staticDir = path.join(__dirname, "..", "..", "dist");
-  }
+  // Always serve static files from the built dist directory, regardless of CWD
+  staticDir = path.join(__dirname, "..", "..", "dist");
 
   console.log(`Serving static files from: ${path.resolve(staticDir)}`);
 
EOF
@@ -89,13 +89,8 @@
// Determine the correct static directory based on environment
let staticDir: string;

if (process.cwd().endsWith("/dist")) {
// Docker environment: already in dist directory
staticDir = ".";
} else {
// Heroku/other environments: serve from dist directory
staticDir = path.join(__dirname, "..", "..", "dist");
}
// Always serve static files from the built dist directory, regardless of CWD
staticDir = path.join(__dirname, "..", "..", "dist");

console.log(`Serving static files from: ${path.resolve(staticDir)}`);

Copilot is powered by AI and may make mistakes. Always verify output.
@stellar-jenkins
Copy link

@stellar-jenkins
Copy link

Something went wrong with PR preview build please check

@stellar-jenkins
Copy link

@quietbits quietbits marked this pull request as ready for review January 9, 2026 20:47
@jeesunikim
Copy link
Contributor

I gave a glance at the preview link before diving into the code. I am noticing that Txs & Ops in the last 30 days: Live Network chart isn't populating in the preview link.

  • preview link
preview-link
  • live dashboard page (dashboard.stellar.org)
live-dashboard-page

@quietbits
Copy link
Contributor Author

I gave a glance at the preview link before diving into the code. I am noticing that Txs & Ops in the last 30 days: Live Network chart isn't populating in the preview link.

  • preview link
preview-link * live dashboard page (dashboard.stellar.org) live-dashboard-page

Thanks for checking, @jeesunikim ! We should be comparing to the current version PR preview [PR] and not the production. It doesn't look like 30-day data aggregation works on PR previews.

this.state = {
loading: true,
chartWidth: 400,
chartHeigth: this.props.chartHeigth || 120,
Copy link
Contributor

Choose a reason for hiding this comment

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

chartHeight

@jeesunikim
Copy link
Contributor

Can we update README?

@jeesunikim
Copy link
Contributor

The latest vite is 7.2.7. 4.3.0 is a version from May 2023. Is upgrading it to 4.3.0 less complicated than 7.2.7?

@stellar-jenkins
Copy link

@quietbits
Copy link
Contributor Author

The latest vite is 7.2.7. 4.3.0 is a version from May 2023. Is upgrading it to 4.3.0 less complicated than 7.2.7?

@jeesunikim, I think it's OK to use an older Vite version for now, since we have some old dependencies we can't update. This migration is more like a band-aid to unblock Ops. We'll see what the long-term plan for this is.

@jeesunikim
Copy link
Contributor

Thanks for the migration work. The followings are the suggestions that came up as I reviewed this with Claude. However, since this was created to unblock devops team, we can create a separate issue while we figure out what the long term plan for this is:

  1. Redis cache race condition - The "Txs & Ops in the last 30 days" chart shows infinite loading because the server starts accepting requests before the cache is populated.

  2. Missing error handling - All chart components make axios calls without .catch() handlers, causing silent failures when rate limits or network errors occur.

  3. Interval cleanup missing - Several components use setInterval without cleanup in componentWillUnmount, which will cause issues with React 18 StrictMode.

  4. We should also modernize the old react pattern to the latest (componendDidMount to useEffect)

  5. [non critical] Unnecessary .jsx extensions - 31 import statements have .jsx extensions (old code didn't have these). Low priority since it works fine.

@quietbits
Copy link
Contributor Author

Thanks for the migration work. The followings are the suggestions that came up as I reviewed this with Claude. However, since this was created to unblock devops team, we can create a separate issue while we figure out what the long term plan for this is:

  1. Redis cache race condition - The "Txs & Ops in the last 30 days" chart shows infinite loading because the server starts accepting requests before the cache is populated.
  2. Missing error handling - All chart components make axios calls without .catch() handlers, causing silent failures when rate limits or network errors occur.
  3. Interval cleanup missing - Several components use setInterval without cleanup in componentWillUnmount, which will cause issues with React 18 StrictMode.
  4. We should also modernize the old react pattern to the latest (componendDidMount to useEffect)
  5. [non critical] Unnecessary .jsx extensions - 31 import statements have .jsx extensions (old code didn't have these). Low priority since it works fine.

Thanks, @jeesunikim! All of these are good suggestions, but might be out of scope for this migration. I don't think it's meant to be a full refactor, but the quickest/simplest way to upgrade the tech stack.

@sagpatil , should we spend more time fixing these things? They shouldn't be regressions; they're existing issues in the current codebase.

import BarChart from "react-d3-components/lib/BarChart";
import * as d3 from "d3";
import D3BarChartNoXLabels from "./D3BarChartNoXLabels.jsx";
import clone from "lodash/clone";
Copy link
Contributor

Choose a reason for hiding this comment

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

this is not being used

this.getLedgers();
// Update chart width
this.updateSize();
setInterval(() => this.updateSize(), 5000);
Copy link
Contributor

Choose a reason for hiding this comment

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

let's clean the interval with componentWillUnmount?

export async function inflationLumens() {
const [totalLumensValue, originalSupply] = await Promise.all([
totalLumens(horizonLiveURL),
ORIGINAL_SUPPLY_AMOUNT,
Copy link
Contributor

Choose a reason for hiding this comment

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

dear cluade, this is hardcoded, no reason to use Promise.all

lumensV2V3.v2CirculatingSupplyHandler,
);

app.get("/api/v3/lumens", lumensV2V3.v3Handler);
Copy link
Contributor

Choose a reason for hiding this comment

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

/lumens doesn't need a rate limiter?

@@ -1,5 +1,5 @@
import React from "react";
import AmountWidget from "./AmountWidget";
import AmountWidget from "./AmountWidget.jsx";
Copy link
Contributor

Choose a reason for hiding this comment

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

It should be just ./AmountWidget. There are five different files that use /AmountWidget.jsx. It should be corrected to just /AmountWidget

import TotalCoins from "./TotalCoins";
import TransactionsChart from "./TransactionsChart";
import FailedTransactionsChart from "./FailedTransactionsChart";
import AppBar from "./AppBar.jsx";
Copy link
Contributor

Choose a reason for hiding this comment

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

Those import files don't need .jsx. But we can leave them for now since they aren't critical. I am just flagging.

import { EventEmitter } from "fbemitter";
import axios from "axios";
import moment from "moment";
import { Server } from "stellar-sdk";
Copy link
Contributor

Choose a reason for hiding this comment

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

we could do Horizon for better tree shaking

@jeesunikim
Copy link
Contributor

@quietbits I approved it! I meant to create a separate issue on this github with the bullets I mentioned once this merged.

@sagpatil
Copy link

since this is a maintenance release, I am hesitant to add new features which might break things and also take a lot of time. At this point as long as the minimum requirements are met, @quietbits we should merge this in.

@jeesunikim can you create an issue with your findings to track your suggestions for later.

@jeesunikim
Copy link
Contributor

SGTM. Issue created: #347

@quietbits quietbits merged commit 18f59df into master Jan 14, 2026
6 checks passed
@quietbits quietbits deleted the migrate-config branch January 14, 2026 13:53
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.

5 participants