Releases: sachncs/traceprojector
Releases · sachncs/traceprojector
Release list
traceprojector 0.1.0
[0.1.0] — 2026-09-03
The first release under the traceprojector name on Node 26. Adds
the new web/ playground, drops Babel, and finishes the file-layout
rebrand.
Added
- New
web/workspace. A Next.js 16 + shadcn/ui playground that
consumes the lib via npm workspaces, with a 3D tetrahedral-mesh
viewer (three.js / @react-three/fiber), an API playground with
copy-to-clipboard code export, and a live convergence plot
(Recharts). Start it withnpm run web:dev; build it with
npm run web:build. A newwebjob in.github/workflows/ci.yml
builds the playground on every push. - New "Try it online" entry in the root
README.mdthat points
at the bundled web playground, alongside a convexfolio-style
What is this? / Who is this for? / What can it do? / Before you
start / Installation / Your first run / Configuration / Where to
go next skeleton. The original technical depth (API, math,
architecture, performance, tech stack) is kept as a second half. Projector.verifyBoundaryWeights(Section 6.3 cross-check): the
exact boundary DoFs stayu(v),∫_e u·t,∫_f u·nfor any
input, and each wired §6.3 weight functional is applied to its
boundary simplex's canonical discrete trace basis field (P¹ hat
λ_v, Whitney 1-formW_e, faceRT_0) to confirm it recovers
the normalized DoF — seetraceprojector/boundaryVerify.jsand
tests/weight.test.js.Weightvertex-weight assembly fix after an Alfeld/Worsey-Farin
split: the mesh appends barycenter vertices, sobweight.vertexWeight
now receives a compact, remapped local vertex set for each boundary
star. The previous full-vertex pass produced a singular stiffness
matrix after the split and silently skipped every vertex weight.- Edge boundary weight
ζ_{0,e}^1(Section 6.3.2) on the
lowest-order surfaceN_0(Whitney 1-form) space: build the
star's edge indexing, assemble the Whitney mass matrix, solve for
η_e^1 = M^{-1}dfrom the intrinsic edge moments
d_k = ∫_e W_k·t_e, and expose the duality functional
(ζ, u) = (η_e^1, u)reproducing the edge degree of freedom for
H(curl) traces inN_0(eq. 6.31). - Face boundary weight
ζ_{0,f}^2(Section 6.3.3) on the
lowest-order surfaceRT_0(Raviart-Thomas) space: assemble the
RT_0 mass matrix over the extended star, solve for
η_f^2 = M^{-1}dfrom the featured-face normal moments
d_k = ∫_f RT_k·n, and expose the duality functional
(ζ, u) = (η_f^2, u)reproducing the face degree of freedom for
H(div) traces inRT_0(eq. 6.36). - Section 2.3 surface differential operators (
grad_Γ,curl_Γ,
div_Γ,rot_Γ) and the Section 6.3 barycenter tentμon
Alfeld-split faces, in the newtraceprojector/surface.jsmodule. - Section 6.3 boundary-weight cascade wired into
Weight.compute():
vertexBoundaryWeights,edgeBoundaryWeights, and
faceBoundaryWeights(built frombweight.vertexWeight/
edgeWeight/faceWeightover each boundary vertex's star,
edge's star, and face's extended star), stored onProjectorvia
computeBoundaryWeights. - README sections: Tech stack, Security, Code of Conduct,
centered header with aligned badges, and license copyright. engines.node: ">=26.0.0"inpackage.jsonand a
workspaces: ["web"]field. New convenience scriptsweb:dev,
web:build, andweb:startproxy into the workspace..gitignoreentries for the web workspace:.next/,out/,
next-env.d.ts,.turbo/.
Changed
- README is rewritten in the convexfolio skeleton (with the
technical depth kept as a second half) and the GitHub URL is
updated tosachncs/traceprojectorin every badge. - CONTRIBUTING and SECURITY are updated to use the public class
nameProjectorand the package nametraceprojector(no more
TraceProjectororBcdtpp). - Docs (
docs/architecture.md,docs/development.md,
docs/exceptions.md,docs/math.md,docs/setup.md,
docs/testing.md) are updated to reflect the new source path, the
new error class names, the new requirement of Node 26, the new
test files, and the newweb/workflow. docs/api.mdis regenerated vianpm run docsto include
thebweightandsurfaceexports and the Section 6.3
boundary-weight cascade.- Bump dev-dependency group to current latest:
@rollup/plugin-node-resolve^16.0.1→^16.0.3jsdoc-to-markdown^9.1.1→^9.1.3mocha^11.8.0→^12.0.0- The rest of the dev deps (
@rollup/plugin-commonjs,
@rollup/plugin-terser,rollup,c8,chai,sinon,