尚未检测到更新。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.