尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗VectorCraft, an open-source vector editor by the ArtCraft team, built from its official source and served from GitHub Pages for the IWMAC Designer Import/Export userscript:
Currently: VectorCraft 0.20.0.
Five things differ from the official web release of the same version, and nothing else.
WebAssembly SIMD is on. The official web release is built without it: its wasm's target_features lack
simd128, and the canvas renderer (vello_cpu) then runs its scalar fallback. This build adds
-C target-feature=+simd128 for the wasm target only. The canvas then draws about 2.3 times as fast. These are
the render times VectorCraft 0.11.0 shows in its status bar while one object is dragged, in Chrome:
| Drawing | Window | Official | This build |
|---|---|---|---|
| 10214's Maskin (about 900 elements) | 1400 × 900 | 11.6 ms | 5.0 ms |
| the same | 1920 × 1080 | 16.8 ms | 7.0 ms |
| 10214's Oversikt | 1400 × 900 | 12.8 ms | 5.5 ms |
The pixels it draws are the same. At fit zoom they are identical, and at 186 % 0.04 % of them differ, by at most 2/255.
The ArtCraft name is taken out. VectorCraft's code is MIT OR Apache-2.0, but the ArtCraft name, wordmark
and mark are trademarks, and
docs/brand/LICENSE-brand.txt
asks a published modified version to carry none of them. So
build/debrand.py takes out:
Help › About says the build is based on VectorCraft by the ArtCraft team. The link to VectorCraft's source on GitHub stays.
Fixes taken ahead of a release. A fix that VectorCraft or its libraries have not released yet, when a release
breaks something the userscript's drawings need. Each is a patch in build/patches/, with where
it comes from at its head. build.sh applies it to the library at the commit the release pins, and stops the
build when it no longer fits. Now one: since 0.12.0 the PDF reader opens a stroked polyline whose points reach
every corner of its bounding box, such as a heat exchanger's zigzag in an .ai, as that box.
IWMAC objects keep their size. The userscript marks with data-iwdie-fixed="1" the objects its Designer draws
as a picture of their own size: pumps, alarms, LEDs, valves, arrows, values' pills. A resize would only cut them
off or stretch them there. Here such an object moves and does nothing else. A selection of only such objects has
no handles. A scale or rotation of a selection that holds one, by handle, tool or the Transform panel, moves it by
its centre and leaves its size and turn. This is build/patches/vectorcraft--iwdie-fixed-size.patch,
which build.sh applies to the release's source. It serves this site alone (UPDATING.md, This site's own
changes).
The wasm ships gzipped. GitHub refuses a file of 100 MiB or more, and VectorCraft's wasm passed 80 MiB in
0.20.0, with no name or debug section left to strip. So build/compress-wasm.py writes
it as vectorcraft-web-<hash>_bg.wasm.gz, about 37 % of its size, and changes the page's loader. The loader unpacks
the file as it downloads and compiles it meanwhile. It starts it only once its SHA-384 is the one the page was built
with, the check the page's integrity attribute made before. A browser downloads the same bytes as before, since
GitHub Pages already sent the wasm gzipped. A first load takes as long as before; a load from the browser's cache
takes about a quarter of a second longer, for the unpacking and the check.
Everything else is the official source at the release tag. The fonts are as in the official web build: craft-fonts
at the commit the release pins whenever its web zip carries them (up to 0.12.0, and again from 0.14.0), and none in
0.13. The licence files and notices come from the official web zip. The JavaScript the loader imports (snippets/)
and the app's icons (icons/), new in 0.20, are this build's own.
| Path | What |
|---|---|
app/ | The editor: the page, its loader, the wasm (gzipped), the fallback fonts, and the official web zip's licence files and notices |
UPDATING.md | The runbook for moving to a new VectorCraft release: try, check, test the userscript, publish, roll back |
build/build.sh | Builds app/ from a release tag: clones the tag, applies this site's own changes, runs debrand.py, applies the fixes in build/patches/, builds with SIMD (and craft-fonts where the official web build has them), adds the official zip's licence files |
build/patches/ | One patch per file: fixes taken ahead of a release, each to one vendored crate of craft-libs, and this site's own changes to VectorCraft (vectorcraft--…) |
build/debrand.py | Takes the ArtCraft name out of a checkout. Every edit must match exactly once, so a release that moved the code stops the build instead of leaving the name in |
build/check.py | Checks a build folder or the live site: integrity, SIMD, the ArtCraft name only in the attribution, the version, every file under GitHub's 100 MiB |
build/compress-wasm.py | Ships the wasm gzipped, and makes the page unpack it and check its SHA-384 before it runs (build.sh runs it) |
build/bench-drawing.py | Writes a made-up drawing shaped like an IWMAC panel, to time drags in two builds |
index.html | A short landing page with the attribution |
.nojekyll | Serve every file as it is (Pages would otherwise skip _headers) |
.github/workflows/update-vectorcraft.yml | Run by hand: build/build.sh on GitHub's runner for a release tag, then a commit of app/ |
Follow UPDATING.md. In short:
build/check.py, look at it, and time it.The userscript drives VectorCraft from outside. It drops files, answers Save As by clicks, and catches the saved download. A release can break that without breaking anything else, so test the userscript on a new build before it goes live (UPDATING.md, step 5).
VectorCraft is © the ArtCraft Team and the VectorCraft contributors, licensed MIT OR
Apache-2.0. The bundled fonts are under the SIL Open Font License (app/OFL-*.txt).
This site is based on VectorCraft by the ArtCraft team. It differs from the official build as described above. It is not made, endorsed or supported by the ArtCraft team, and it carries none of the ArtCraft marks.