尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Control a NEJE Master 2 laser engraver straight from the browser over USB. No install, no account, works offline. Built and tested with a NEJE Master 2 Mini.
Connection
Engraving
Image, text and patterns (tabs Image and Text)
Position and head (tab Position and the work area)
Laser, machine and history
Everywhere
wchusbserial… / COM…).
[!WARNING] Laser light damages eyes and can start fires. Always wear laser safety goggles, never leave the machine unattended, and keep its power switch within reach. The software STOP is no substitute for it.
The software cannot detect this, because the steppers have no feedback. These are the usual causes:
| Area | Status |
|---|---|
| Connect, identify, telemetry, reconnect, homing, head moves | ✅ verified on a Master 2 Mini (automated hardware test) |
| Laser parameters (power, burn time) | ✅ verified in real burns, stored by the device across power cycles |
| Machine settings: pointer brightness, motion detection | Implemented to the vendor protocol, not yet changed on hardware |
| Motor speed | Values 0–3 (Slowest–Fast) as in NEJE's Windows software for the Master 2 family; the Mini reports 2 (Medium). Not yet changed on hardware |
| Job upload and burn, trace frame, cancel | ✅ verified with a real calibration burn (traffic captured, see docs/PROTOCOL.md) |
| Pause/resume | Implemented to the vendor protocol, covered by simulator tests, not yet tried on hardware |
| Odd-row bit order | Two variants selectable (Advanced) until a calibration burn decides |
| Older KZ / BL / Master 1 boards (4-byte protocol) | Not supported |
The protocol is documented in docs/PROTOCOL.md.
Requirements: Node.js 22 or newer.
npm install
npm run dev # http://localhost:3000
npm run check # typecheck, lint, unit tests, build, end-to-end tests
| Script | What it does |
|---|---|
npm run build | Static export to out/, deployable to any static host |
npm run preview | Serves out/ on http://localhost:4173 |
npm test | Vitest unit tests: protocol bytes, parser, bitmap packing, dithering, session against the simulator, history file validation, text-to-SVG escaping, translations |
npm run test:e2e | Playwright against the production build, with the simulator instead of a machine. Covers every tab, axe WCAG 2.2 AA scans in both colour schemes, keyboard-only use, history export/import, languages and offline mode |
npm run test:hardware | Optional. Drives the real UI against a connected engraver, e.g. NEJE_PORT=/dev/cu.wchusbserial3130 npm run test:hardware -- device. Its relay refuses anything that could fire the laser. A calibration burn with traffic capture needs a second opt-in (NEJE_ALLOW_BURN=1 … -- burn, see tests/hardware/burn.spec.ts) |
src/
lib/protocol/ wire format, message decoding, bitmap packing, NejeSession (no DOM, fully unit tested)
lib/transport/ Web Serial, simulator (real captured frames), Playwright hardware bridge
lib/imaging/ file decoding (raster + SVG), dithering, rasterisation at device resolution
lib/ job settings model + validation, history (IndexedDB) and its export file, presets,
machine settings, text-to-SVG, test patterns, storage
i18n/ typed messages per locale, browser language detection
hooks/ components/ app/ React UI (Next.js App Router, static export)
public/sw.js offline service worker
NejeSession exposes an immutable snapshot through subscribe/getSnapshot, so React reads it
with useSyncExternalStore.JobSettings). History stores it next to the image,
which is what makes swapping the motif possible.npm run build and upload out/.
For a sub-path, build with NEXT_PUBLIC_BASE_PATH=/sub-path.Web Serial and the service worker need HTTPS, or localhost.
Issues and pull requests are welcome, especially:
Please run npm run check before opening a pull request.
This is an independent open-source project. It is not affiliated with or endorsed by NEJE (Shenzhen ZhiXinJie Technology Co., Ltd.). The protocol was documented for interoperability with hardware the author owns, and no vendor code or assets are included. Use at your own risk.