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:killscripts- 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-sideform-data
Files Modified:
webpack.config.mjs— devServer,electron-renderertarget, HtmlWebpackPlugin, sass quiet optionsindex.js— conditionalloadURLfor dev server, clean SIGINT shutdown in dev, register BCYIP upload handlersmain/bcyipUpload.mjs— IPC handler and multipart upload in main processsrc/services/fileProtect/uploadHandlers/bcyip.pipe.ts— invokeupload-bcyipinstead of rendererform-datasrc/utils/errors/ipc.ts— optionalidon IPC success responsesscripts/dev-kill.sh— kill stuck Electron / port 3000index.template.html— HTML template for dev serverpackage.json/package-lock.json— dev scripts and dependenciesdocs/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.mjsindex.jssrc/services/fileProtect/uploadHandlers/bcyip.pipe.tssrc/utils/errors/ipc.ts