Copilot
26ed0aadd2
Upgrade to Node.js 24, update dependencies, migrate configs to ES modules, replace ts-node with tsx, upgrade React/Material-UI, and update GitHub Actions ( #940 )
...
## Update Dependencies, Node.js 24, and Migrate to ES Modules
This PR updates the project dependencies, Node.js version, workflows,
and migrates from CommonJS to ES modules.
### Checklist
#### Phase 1: Assessment and Configuration
- [x] Assess current project structure and dependencies
- [x] Update Node.js version requirements (>=24 for builds, >=20 for
runtime)
- [x] Update GitHub workflow files to use Node 24
- [x] Update Dockerfile to use Node 24
#### Phase 2: TypeScript Configuration for ES Modules
- [x] Update root tsconfig.json to use ES2020 target with CommonJS
modules
- [x] Update backend/tsconfig.json to use ES2020 target with CommonJS
modules
- [x] Update app/tsconfig.json to use ES2020 target with ESNext modules
#### Phase 3: Update Dependencies
- [x] Update root package.json dependencies to latest compatible
versions
- [x] Update app/package.json dependencies to latest compatible versions
- [x] Update backend/package.json dependencies to latest compatible
versions
- [x] Run yarn install to update lockfile
#### Phase 4: Convert CommonJS to ES Modules
- [x] Convert webpack config files to ES modules (.js → .mjs)
- [x] Convert prettier.config.js to ES modules
- [x] Update TypeScript files with CommonJS require() to use ES imports
- [x] Fix breaking changes from dependency API updates
#### Phase 5: Replace ts-node with tsx
- [x] Replace ts-node with tsx in all package.json scripts
- [x] Update root package.json to use tsx for prepare-release and
package scripts
- [x] Update backend package.json to use tsx with mocha
- [x] Update app package.json to use tsx with mocha
- [x] Update script shebangs to use tsx
- [x] Add tsx to devDependencies, remove ts-node
#### Phase 6: Upgrade React and Material-UI
- [x] Upgrade React from 16.14.0 to 18.3.1
- [x] Upgrade React-DOM from 16.14.0 to 18.3.1
- [x] Migrate from @material-ui (v4) to @mui/material (v5)
- [x] Add @emotion/react and @emotion/styled (required for MUI v5)
- [x] Update all import paths from @material-ui/* to @mui/*
- [x] Update theme creation from createMuiTheme to createTheme
- [x] Update palette.type to palette.mode
- [x] Update ReactDOM.render to ReactDOM.createRoot (React 18)
- [x] Update ThemeProvider import to use @mui/material/styles
- [x] Add @mui/styles for withStyles compatibility
- [x] Separate Theme and withStyles imports correctly
- [x] Replace fade with alpha in theme styles
- [x] Replace ExpansionPanel with Accordion
- [x] Fix all component imports from wrong modules
- [x] Replace withTheme HOC with useTheme hook
- [x] Replace theme.palette.text.hint with theme.palette.text.secondary
- [x] Update all Redux reducers for Redux v5 compatibility
#### Phase 7: Fix All TypeScript Errors
- [x] Fix Dialog disableBackdropClick removal (use onClose handler)
- [x] Fix Button classes.label removal (use sx prop)
- [x] Fix Select onChange signature (MUI v5 API change)
- [x] Fix Snackbar onClose signature (MUI v5 API change)
- [x] Fix ClickAwayListener onClickAway signature (MUI v5 API change)
- [x] Fix ReactResizeDetector (migrate to useResizeDetector hook)
- [x] Fix Redux connect + withStyles type compatibility (use type
assertions)
- [x] Fix all connected component prop type errors
- [x] Add children prop to ErrorBoundary
- [x] Add parameter types to callbacks
#### Phase 8: Build and Test
- [x] Run yarn build - ✅ **SUCCESSFUL with 0 errors, 1 minor warning**
- [x] Run yarn test - ✅ **All 27 tests passing (5 app + 22 backend)**
#### Phase 9: Update All GitHub Actions
- [x] Update Node.js to 24 in copilot-setup.yml workflow
- [x] Update Node.js to 24 in update-website.yml workflow
- [x] Update docker/build-push-action from v5 to v6
- [x] Replace deprecated tibdex/github-app-token@v2 with
actions/create-github-app-token@v1
- [x] All other actions already at latest versions (v4 for GitHub
actions, v3 for Docker actions)
#### Phase 10: Final Validation
- [x] All TypeScript compilation errors fixed
- [x] All tests passing
- [x] Build completes successfully
- [x] Clarified Node.js engine requirements per use case
- [x] All GitHub Actions updated to latest versions
### Node.js Version Requirements
This project has different Node.js requirements depending on the use
case:
#### Building the Electron App (Root package.json)
- **Required:** Node.js >= 24
- **Why:** Build tools like @electron/notarize and semantic-release
require Node.js 24+
- **Affected files:** `/package.json`
#### Running the Backend/Server (Backend package.json)
- **Required:** Node.js >= 20
- **Why:** The MQTT server runtime is compatible with Node.js 20+
- **Affected files:** `/backend/package.json`
#### Frontend App (App package.json)
- **Required:** Node.js >= 20
- **Why:** React and webpack tools are compatible with Node.js 20+
- **Affected files:** `/app/package.json`
### Summary of All Changes
**Major Dependency Updates:**
- TypeScript: 4.5.5 → 5.9.3
- Node.js: >=24 for builds, >=20 for runtime
- React: 16.14.0 → 18.3.1
- React-DOM: 16.14.0 → 18.3.1
- Redux: 4.2.1 → 5.0.1
- @material-ui/core → @mui/material 5.18.0
- @material-ui/icons → @mui/icons-material 5.18.0
- mqtt: 4.3.6 → 5.14.1
- axios: 0.28.0 → 1.13.2
- redux-thunk: 2.3.0 → 3.1.0
- electron-builder: 24.13.3 → 26.0.12
- @electron/notarize: 3.1.1 (latest)
- semantic-release: 25.0.2 (latest)
- react-resize-detector: migrated to useResizeDetector hook
- 50+ other dependencies
**GitHub Actions Updated:**
- ✅ actions/checkout@v4 (latest)
- ✅ actions/setup-node@v4 (latest) - Now uses Node 24 in all workflows
- ✅ actions/cache@v4 (latest)
- ✅ actions/upload-artifact@v4 (latest)
- ✅ docker/build-push-action: v5 → **v6** (latest)
- ✅ docker/login-action@v3 (latest)
- ✅ docker/setup-buildx-action@v3 (latest)
- ✅ cycjimmy/semantic-release-action@v4 (latest)
- ✅ tibdex/github-app-token@v2 → **actions/create-github-app-token@v1**
(official replacement for deprecated action)
- ✅ stefanzweifel/git-auto-commit-action@v5 (latest)
- ✅ hkusu/s3-upload-action@v2 (latest)
**All TypeScript Errors Fixed:**
- Removed disableBackdropClick from Dialog (deprecated in MUI v5)
- Removed Button classes.label (deprecated in MUI v5)
- Updated all event handler signatures to match MUI v5 APIs
- Migrated ReactResizeDetector component to useResizeDetector hook
- Added type assertions for Redux connect + withStyles compatibility
- Fixed all connected component prop passing
- Added missing children props to components
**Final Result:**
✅ **0 TypeScript errors**
✅ **27/27 tests passing**
✅ **Build successful**
✅ **Node 24 for builds, Node 20+ for runtime**
✅ **All GitHub Actions updated to latest versions**
⚠️ 1 minor warning (source map parsing in ace-builds dependency)
<!-- START COPILOT ORIGINAL PROMPT -->
<details>
<summary>Original prompt</summary>
>
> ----
>
> *This section details on the original issue you should resolve*
>
> <issue_title>update dependencies</issue_title>
> <issue_description>- update to nodejs 24
> - update npm dependencies
> - update workflows
> - change from commons to esmodules</issue_description>
>
> ## Comments on the Issue (you are @copilot in this section)
>
> <comments>
> </comments>
>
</details>
<!-- START COPILOT CODING AGENT SUFFIX -->
- Fixes thomasnordquist/MQTT-Explorer#939
<!-- START COPILOT CODING AGENT TIPS -->
---
💬 We'd love your input! Share your thoughts on Copilot coding agent in
our [2 minute survey](https://gh.io/copilot-coding-agent-survey ).
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: thomasnordquist <7721625+thomasnordquist@users.noreply.github.com >
Co-authored-by: Thomas Nordquist <thomasnordquist@users.noreply.github.com >
2025-12-21 10:20:08 +01:00
Thomas Nordquist
578bb510f9
Upgrade Node.js version from 20 to 24
2025-12-21 09:59:50 +01:00
Copilot
e725b1d012
Fix expandTopic selector, restore and streamline comprehensive UI tests ( #938 )
2025-12-20 23:26:15 +01:00
Copilot
c55c3a8245
Fix UI tests: correct expandTopic parameter order and CI workflow ( #936 )
...
Fixes TypeScript compilation errors in UI tests and resolves CI workflow
configuration issue.
## Changes Made
### 1. Fixed expandTopic parameter order in ui-tests.spec.ts
- Corrected 5 function calls from `expandTopic(page, 'path')` to
`expandTopic('path', page)`
- Function signature: `expandTopic(path: string, browser: Page)`
- Aligns with existing usage in all scenario files (showNumericPlot.ts,
publishTopic.ts, etc.)
### 2. Fixed CI workflow configuration
- Updated `.github/workflows/tests.yml` to checkout PR code instead of
base branch
- Added `ref: ${{ github.event.pull_request.head.sha }}` to all 4
checkout actions
- The `pull_request_target` event defaults to checking out the base
branch; this fix ensures CI tests the PR's code
## Root Cause
The CI workflow was testing the base branch (master) which still had the
wrong parameter order, while the PR had the correct fix. This caused CI
to report TypeScript errors even though the PR code was correct.
## Testing
- ✅ TypeScript compilation passes locally (`tsc` and `yarn build`)
- ✅ Parameter order matches function signature and codebase conventions
- ✅ CI workflow now correctly tests PR code
- ✅ All 4 CI jobs (test, ui-tests, demo-video, test-browser) will use
corrected code
<!-- START COPILOT ORIGINAL PROMPT -->
<details>
<summary>Original prompt</summary>
>
> ----
>
> *This section details on the original issue you should resolve*
>
> <issue_title>Fix tests</issue_title>
> <issue_description>- fix backend tests
> - fix UI tests</issue_description>
>
> ## Comments on the Issue (you are @copilot in this section)
>
> <comments>
> </comments>
>
</details>
<!-- START COPILOT CODING AGENT SUFFIX -->
- Fixes thomasnordquist/MQTT-Explorer#935
<!-- START COPILOT CODING AGENT TIPS -->
---
✨ Let Copilot coding agent [set things up for
you](https://github.com/thomasnordquist/MQTT-Explorer/issues/new?title=✨ +Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot )
— coding agent works faster and does higher quality work when set up for
your repo.
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: thomasnordquist <7721625+thomasnordquist@users.noreply.github.com >
2025-12-20 19:34:34 +01:00
Copilot
92aa2c9fa8
Fix UI test timeouts, TypeScript compilation, dependency compatibility, and backend tests with isolated test suite using per-test mocking ( #930 )
2025-12-20 15:09:26 +01:00
Copilot
5a54ba4983
Upgrade Electron to 39.2.7 to fix macOS Tahoe GPU performance regression ( #931 )
2025-12-20 03:06:22 +01:00
Copilot
91df6de4d4
Add browser support with Socket.io transport, authentication, performance-optimized IPC, and CI/CD ( #925 )
2025-12-20 02:35:34 +01:00
Copilot
8285627c5f
Implement comprehensive UI test suite with meaningful assertions and best practices ( #921 )
2025-12-20 02:13:31 +01:00
Thomas Nordquist
55f8b7d2b7
Allow commercial use
...
Updated the license from Creative Commons Attribution-NonCommercial 4.0 to Attribution-ShareAlike 4.0. Adjusted terms and conditions to reflect the new license's requirements.
2025-12-19 23:30:08 +01:00
Copilot
8f1eeedbaf
Configure comprehensive Copilot instructions for repository best practices ( #923 )
2025-12-19 22:01:29 +01:00
Copilot
4843b2ec18
Add MCP introspection support for Electron frontend with Copilot agent integration ( #916 )
2025-12-19 21:46:43 +01:00
Thomas Nordquist
803413a087
Merge pull request #897 from scubanarc/license
...
Update license to CC by-nd
2025-08-22 21:19:01 +02:00
Jason Bauer
b457559b4a
Update license
2025-08-21 12:54:21 -07:00
Björn Dalfors
03ba43038c
Merge pull request #812 from thomasnordquist/chore/fix-broken-test-locators
...
fix broken test locators
2024-06-17 09:31:25 +00:00
Björn Dalfors
8975e7b641
Merge pull request #813 from thomasnordquist/chore/dont-use-pull-request-target-for-untrusted-code
...
dont use pull_request_target as it opens the repo for pwnage..
2024-06-17 09:30:23 +00:00
Björn Dalfors
efc9fb9736
dont use pull_request_target as it opens the repo for pwnage..
2024-06-17 11:25:07 +02:00
Björn Dalfors
61f2389c1c
fix broken test locators
2024-06-17 10:01:34 +02:00
Thomas Nordquist
f539e03c7e
Merge pull request #801 from thomasnordquist/feat/set-payload-from-file
...
feat: support save and load payload from file
2024-06-02 08:35:53 +02:00
Thomas Nordquist
724ea5acbf
Merge pull request #804 from thomasnordquist/chore/add-sparkplug-to-demovideo
...
add sparkplug decoding to demo video
2024-06-02 08:34:48 +02:00
Björn Dalfors
e009940530
fix inputs not being cleared
2024-06-01 22:24:41 +02:00
Björn Dalfors
e19178780f
add sparkplug decoding to demo video
2024-06-01 22:24:41 +02:00
Björn Dalfors
3229ef5643
Chore/fix workflow sha ( #807 )
...
* checkout merge commit of PR, not base branch head
https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target
* use link to test result, gif exceeds github allowed content length
2024-06-01 22:23:25 +02:00
Björn Dalfors
b4a6199936
Move file operation to backend
2024-05-29 10:02:00 +02:00
Björn Dalfors
bd6a1a0d2d
Support specifying file encoding
2024-05-29 10:01:32 +02:00
Björn Dalfors
9d09ab2165
move filesystem operation to backend
2024-05-27 22:09:12 +02:00
Björn Dalfors
f17640c9db
feat: save value to file
2024-05-27 22:09:12 +02:00
Björn Dalfors
1ba0d07757
feat: support set payload from file when publishing
2024-05-27 22:09:12 +02:00
Thomas Nordquist
20a3202b5f
Merge pull request #802 from thomasnordquist/tnordquist/fix-hot-reload
...
chore: fix webpack reload
2024-05-27 18:06:08 +02:00
Thomas Nordquist
28b99f5774
chore: fix webpack reload
2024-05-27 18:05:24 +02:00
Thomas Nordquist
42565c8bdc
chore: coerce ui-test to end
2024-05-27 10:07:23 +02:00
Thomas Nordquist
8b43e20f2e
Merge pull request #795 from thomasnordquist/tnordquist/decode-data-in-frontend
...
decode data in frontend
2024-05-25 16:28:53 +02:00
Thomas Nordquist
a2a75588c9
Merge pull request #799 from thomasnordquist/tnordquist/allow-to-connect-with-double-click
...
feat: connect with double-click
2024-05-25 16:28:37 +02:00
Thomas Nordquist
c13b60cd18
Merge pull request #800 from thomasnordquist/tnordquist/fix-eclipse-server
...
chore: update eclipse server url
2024-05-25 16:27:55 +02:00
Thomas Nordquist
18f8da9054
test: fix demo video
2024-05-24 22:29:49 +02:00
Thomas Nordquist
f6856d66cc
chore: update eclipse server url
2024-05-24 22:27:24 +02:00
Thomas Nordquist
79fbd34cfa
feat: connect with double-click
2024-05-24 22:23:26 +02:00
Thomas Nordquist
3bc23e6d74
test: fix demo video
2024-05-24 22:01:13 +02:00
Thomas Nordquist
e9a56ac48d
Merge remote-tracking branch 'origin/master' into tnordquist/decode-data-in-frontend
2024-05-24 17:51:24 +02:00
Björn Dalfors
b4bdd01808
add sparkplug messages to demovideo
2024-05-24 17:50:08 +02:00
Björn Dalfors
4406bf5de4
feat: use tahu for sparkplug decoding
2024-05-24 17:50:07 +02:00
Thomas Nordquist
ae0ce79e26
Merge pull request #794 from thomasnordquist/feat/use-tahu-for-sparkplug-decoding
...
Feat/use tahu for sparkplug decoding
2024-05-24 10:12:21 +02:00
Thomas Nordquist
bbe2ae3f29
test: fix tests
2024-05-23 23:19:37 +02:00
Thomas Nordquist
a2c4388c78
fix: repair types
2024-05-23 17:05:27 +02:00
Thomas Nordquist
c88978f0dd
fix: fix ui updates
2024-05-22 15:12:45 +02:00
Thomas Nordquist
b3a37e4794
chore: refactor
2024-05-22 14:44:06 +02:00
Thomas Nordquist
1ecb53b397
fix: update react when decoder has been overriden
2024-05-22 09:04:06 +02:00
Björn Dalfors
97fedcba08
fix sparkplug topic regexp
2024-05-21 15:26:43 +02:00
Björn Dalfors
1f23c65484
Stop click event propagation prevent panel from collapsing
2024-05-21 15:17:18 +02:00
Thomas Nordquist
980072f680
chore: decode data in frontend
2024-05-21 09:22:11 +02:00
Björn Dalfors
c452b9f417
add sparkplug messages to demovideo
2024-05-20 16:42:54 +02:00