尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗A free, browser-only tool for tracing phone photos of evacuation maps into floor-plan SVG files. No sign-up, no server, no install, no build step.
Only two, both version-pinned from a CDN, both loaded straight by the browser:
https://cdn.jsdelivr.net/npm/[email protected]/dist/index.min.mjs) — the canvas
interaction layer behind the drawing stage: selection, move/scale/rotate
controls, groups, per-vertex polygon controls, zoom and panning.Any static file server works (ES modules need http://, not file://):
npx --yes serve -l 8080 .
Then open http://localhost:8080/. On GitHub Pages just publish the repo root.
The top bar's step strip tracks four steps: 1 Photo · 2 Trace · 3 Preview · 4 Export.
hjlc-1).<slug>.svg and <slug>-posted.jpg and shows the building-extras.json snippet plus the two commands to run.Everything autosaves to IndexedDB (and on pointer-up, tab hide and page close). Save .json writes a single project file with the photo embedded so it can be moved or committed.
If your browser supports it, you can pick a local folder (from the start
screen, or the modal offered when you start a blueprint). Once a folder is
set, every save writes one <slug>.floorplan.json per plan into it —
atomically (via a temp file and rename) on every change, with undo history
included — alongside the IndexedDB copy. Browsers without folder access
(File System Access API) fall back to browser storage only; use Save to
download a copy by hand.
| Key | Action |
|---|---|
| V / R / F / O / A / S / C | Select / Room / Outline / Door / Hallway / Stair / Compass |
| D | Duplicate selected room in a row (auto-increments the number) |
| 1–5 | Room class: room, big, ours, core, void |
| G | Toggle grid |
| H (hold) | Flash the photo |
| Alt (hold) | Disable magnet snapping |
| Ctrl+Z / Ctrl+Shift+Z / Ctrl+Y | Undo / Redo |
| Ctrl+C / Ctrl+V | Copy / Paste (keeps layout, offers auto-increment) |
| Delete, arrows, Esc, Enter | Delete, nudge, cancel, confirm |
The SVG dialect is documented in docs/DIALECT.md. The module layout and contracts are in docs/ARCHITECTURE.md and docs/VIEW-API.md.
npm test
npm run test:compat
npm test runs the Node unit tests (geometry, every validation rule,
export/import round trips on synthetic docs and the traced HJLC fixtures, route
finding, a 300-room stress test). test:compat reads the exported fixtures with
a JS and a Python port of the the map site's tools/build_rooms.py parser rules and diffs the result.
Browser steps are in tests/MANUAL.md. tests/browser/ holds a Playwright
smoke test (the whole outline -> doors -> hallway -> room -> compass -> reload
-> export flow) and a drag-performance test (2,000 rooms):
node_modules/.bin/playwright test --config tests/browser/playwright.config.js
Palette chips render as small live previews using the same look as the exported plan: Room (grey box, number), Small room (smaller grey box), Big room (larger bluish box, "Classroom"), Our room (pink box), Restroom core (grey box, "WC"), Elevator core (grey box, up/down arrow), Stair block (grey box with 4 tread lines), Door (wall line with a white gap and green "EXIT"), Void (hatched/ dashed grey box), Compass (the compass rose). Dragging a chip shows the same SVG as the floating ghost, scaled to the current plan zoom.
MIT, see LICENSE.