Skip to main content
Version: 4.37.0

improve-devx-live-reload

⚡ Improvements

DevX — UI live reload in development

Goal: Avoid rebuilding webpack and restarting Electron on every UI change during local development.

Solution: Add a npm run dev workflow where webpack-dev-server serves the renderer on http://localhost:3000 with HMR, while Electron stays open as a shell. Legacy npm start (one-shot build + file://) is unchanged.

To support the electron-renderer webpack target required by HMR, BCYIP file upload was moved out of the renderer and onto a main-process IPC bridge (upload-bcyip), following the same pattern as GCP upload. The renderer only delegates; multipart form-data and net.request run in the main process where Node APIs are reliable.

Features:

  • npm run dev, npm run dev:ui, npm run dev:electron, npm run dev:kill scripts
  • Electron loads dev server with --dev-server
  • Sass and framer-motion webpack warnings silenced in dev; overlay shows errors only
  • Clean shutdown on Ctrl+C in dev mode (no zombie Electron processes)
  • BCYIP upload via IPC bridge (upload-bcyip) instead of renderer-side form-data

Files Modified:

  • webpack.config.mjs — devServer, electron-renderer target, HtmlWebpackPlugin, sass quiet options
  • index.js — conditional loadURL for dev server, clean SIGINT shutdown in dev, register BCYIP upload handlers
  • main/bcyipUpload.mjs — IPC handler and multipart upload in main process
  • src/services/fileProtect/uploadHandlers/bcyip.pipe.ts — invoke upload-bcyip instead of renderer form-data
  • src/utils/errors/ipc.ts — optional id on IPC success responses
  • scripts/dev-kill.sh — kill stuck Electron / port 3000
  • index.template.html — HTML template for dev server
  • package.json / package-lock.json — dev scripts and dependencies
  • docs/devx-live-reload.md — developer documentation

🐛 Bug Fixes

BCYIP upload broken by renderer webpack target

Goal: Restore BCYIP storage uploads that failed after switching webpack to electron-renderer (FormData: parameter 2 is not of type 'Blob' when appending a Buffer).

Solution: Same IPC bridge migration as above — not a separate workaround. Upload works again in dev (HMR) and production builds without depending on how webpack bundles form-data in the renderer.

Files Modified:

  • main/bcyipUpload.mjs
  • index.js
  • src/services/fileProtect/uploadHandlers/bcyip.pipe.ts
  • src/utils/errors/ipc.ts