尚未偵測到更新。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.