Doop
Doop: 오픈소스 멀티플레이어 디자인 캔버스 및 AI 에이전트용 MCP
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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.