尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Browser NURBS/CAD authoring workspace: loft sections, a dimension-constrained sketch, extruded solids with limited Boolean ops, feature history and EDN projects. Geometry comes from kami-engine-cad, rendering from kotoba-lang/webgpu; requires WebGPU.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Browser NURBS/CAD workspace for kotoba-lang. It owns the CAD authoring UI:
loft sections and control points, a dimensionally-constrained sketch, extruded
solids with Boolean operations, a feature history, precision snapping and
measurement, and EDN project exchange. It does not own the geometry kernel —
curves, sketch solving, lofting, solids and Boolean ops all come from
kotoba-lang/kami-engine-cad (kami.cad), per the canonical 3D stack rule
(kami-app-* orchestrates; the engine owns geometry).
Rendering goes through the shared kotoba-lang/webgpu pipeline
(kami.webgpu.mesh), not a renderer local to this app. UI markup and styling are
generated exclusively from kotoba-lang/html and kotoba-lang/css — there is no
hand-written HTML or CSS in src/.
Public app: https://kotoba-lang.github.io/kami-app-cad/
| Path | Owns |
|---|---|
src/kami/cad/project.cljk | Project document format (:kami/version 5), validation, and migration from versions 1–4 and from a bare section vector |
src/kami/cad/dimensional_sketch.cljk | The constrained construction sketch (3 lines, 6 constraints) that drives every loft section's width and height |
src/kami/cad/ui.cljk | The page, as html/css EDN. build.cljk spits it to public/index.html |
src/kami/cad/app.cljk | Browser wiring: state atom, undo/redo, command line, WebGPU upload/draw loop, localStorage persistence, EDN and CSV export |
test/ | clojure.test suites for the project format and the dimensional sketch |
The command line accepts four interaction profiles — Rhino, AutoCAD, Fusion and
Plasticity — each mapping its own aliases (tr/z/ze for AutoCAD, t/f/d
for Plasticity, …) onto the same six commands: trim, fit, reset, solve-width,
undo, redo.
Boolean operations are scoped to axis-aligned coaxial convex-polygon prisms,
and union/difference additionally require both solids to share an identical
cross-section profile. This is the kami.cad kernel's documented limit, not a UI
restriction. The viewport shows only the first result solid.
npm install
amu compile --target wasm32-browser app
Then open public/index.html. The viewport requires WebGPU; without it the app
shows a status message rather than falling back.
kbb -M:test # project format + dimensional sketch
amu compile --target wasm32-browser app # build public/js/app.js
public/index.html is no longer reproducible from sourcebuild.cljk generates public/index.html from kami.cad.ui/page, but the two
have drifted. Measured on 148d663:
public/index.html carries 55 element ids; ui.cljc (since renamed src/kami/cad/ui.cljk) emits 28, a strict
subset.app.cljs (since renamed src/kami/cad/app.cljk) with
getElementById; 18 of those are passed straight to .addEventListener
(extrude-solid, apply-boolean, save-project, load-project,
duplicate-section, delete-section, sketch-height, toggle-feature, …).
The remaining 6 are written to — e.g. feature-tree (.-innerHTML) and
measurement-result (.-textContent).So running build.cljk today would regenerate a page whose missing nodes make
init! throw on the first absent element, disabling the app. The deployed page
works because the committed artifact — not the source — is what is published:
.github/workflows/pages.yml uploads public/ directly, with no build step.
Fetching https://kotoba-lang.github.io/kami-app-cad/ on 2026-09-05 returned the
same 55 ids as the committed public/index.html, byte-for-byte in that set.
Reconcile by porting the extrude/Boolean/feature-tree/persistence/measurement
sections into ui.cljk and regenerating, rather than by hand-editing
public/index.html again.