Copilot
6c041cba02
Security hardening: authentication, input validation, OWASP compliance, architecture improvements, and CSP fixes for browser mode ( #942 )
2025-12-22 16:52:42 +01:00
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
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
Copilot
4843b2ec18
Add MCP introspection support for Electron frontend with Copilot agent integration ( #916 )
2025-12-19 21:46:43 +01: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
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
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
Thomas Nordquist
42565c8bdc
chore: coerce ui-test to end
2024-05-27 10:07:23 +02:00
Thomas Nordquist
3bc23e6d74
test: fix demo video
2024-05-24 22:01:13 +02:00
Björn Dalfors
b4bdd01808
add sparkplug messages to demovideo
2024-05-24 17:50:08 +02:00
Thomas Nordquist
c88978f0dd
fix: fix ui updates
2024-05-22 15:12:45 +02:00
Thomas Nordquist
980072f680
chore: decode data in frontend
2024-05-21 09:22:11 +02:00
Thomas Nordquist
333a1bcabe
fix: fix repository
2024-05-11 14:39:34 +02:00
Björn Dalfors
f1b13a2919
upgrade cspell and fix spelling issues
2024-04-10 09:14:12 +02:00
Björn Dalfors
613d0d7178
fix test script and video capture
2024-04-08 10:14:44 +02:00
Björn Dalfors
bb964aba20
replace file-loader with assets to get demo mouse working again
...
fix mouse pointer
2024-04-06 21:19:18 +02:00
Björn Dalfors
6e5e2e0dd7
replace deprecated spectron with playwright
2024-04-05 14:35:18 +02:00
Björn Dalfors
736145d9b4
Merge pull request #421 from jcwillox/patch-1
...
Simplify config path and increase portability
2024-04-02 19:33:26 +01:00
Björn Dalfors
f25cab4682
chore: upgrade prettier and fix linting errors
2024-03-08 08:42:41 +01:00
Thomas Nordquist
6e4d08e4b5
update mqtt library
2022-02-27 20:06:11 +01:00
Thomas Nordquist
e1493db7c8
add rpc system to improve ipc
2022-02-27 18:46:56 +01:00
Thomas Nordquist
24e9c4cd22
fix build
2022-02-27 14:15:50 +01:00
Thomas Nordquist
13b8f8d5da
fix certificate selection
2022-02-27 13:33:22 +01:00
Josh Willox
3fa47f0318
Simplify config path
2020-08-10 19:35:46 +10:00
Thomas Nordquist
3c40be97b7
Fix demoVideo
2020-04-20 13:09:37 +02:00
Thomas Nordquist
30af13f793
Update linter
2020-04-16 11:00:34 +02:00
Thomas Nordquist
65e9f2e074
Update dependecies
2020-04-16 10:43:41 +02:00
Thomas Nordquist
237c718a0a
Update prettier
2020-04-15 23:54:30 +02:00
Thomas Nordquist
34cc38ab3c
Fix build
2020-01-17 09:37:47 +01:00
Thomas Nordquist
4db6e7b1d7
Update electron to 7.1.1
2019-11-13 17:26:27 +01:00
Thomas Nordquist
6781170b85
Fix crash reporter url
2019-07-20 15:51:41 +02:00
Thomas Nordquist
c5e0e652f3
Improve demo video
2019-07-17 13:33:34 +02:00
Thomas Nordquist
ccbea4acc5
Fix test
2019-07-17 13:17:41 +02:00
Thomas Nordquist
7a9b7d7bf6
Fix test
2019-07-11 16:34:39 +02:00
Thomas Nordquist
df42d75651
Refactor
2019-07-11 13:54:53 +02:00
Thomas Nordquist
66bfcab256
Fix test
2019-07-07 23:11:13 +02:00
Thomas Nordquist
aa05c16651
Report crashes
2019-07-02 13:38:34 +02:00
Thomas Nordquist
de7fa2dd9c
Fix tests
2019-06-27 10:04:56 +02:00
Thomas Nordquist
f9829c2d5c
Refactor
2019-06-26 17:41:21 +02:00
Thomas Nordquist
5a43ecd8d2
Add dramatic pause to video
2019-06-23 12:30:53 +02:00
Thomas Nordquist
b060861657
Increase test resiliance
2019-06-20 12:44:02 +02:00