Skip to content

Releases: sachncs/traceprojector

traceprojector 0.1.0

Choose a tag to compare

@sachncs sachncs released this 11 Sep 21:50
dff2438

[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 with npm run web:dev; build it with
    npm run web:build. A new web job in .github/workflows/ci.yml
    builds the playground on every push.
  • New "Try it online" entry in the root README.md that 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 stay u(v), ∫_e u·t, ∫_f u·n for 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-form W_e, face RT_0) to confirm it recovers
    the normalized DoF — see traceprojector/boundaryVerify.js and
    tests/weight.test.js.
  • Weight vertex-weight assembly fix after an Alfeld/Worsey-Farin
    split:
    the mesh appends barycenter vertices, so bweight.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 surface N_0 (Whitney 1-form) space: build the
    star's edge indexing, assemble the Whitney mass matrix, solve for
    η_e^1 = M^{-1}d from 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 in N_0 (eq. 6.31).
  • Face boundary weight ζ_{0,f}^2 (Section 6.3.3) on the
    lowest-order surface RT_0 (Raviart-Thomas) space: assemble the
    RT_0 mass matrix over the extended star, solve for
    η_f^2 = M^{-1}d from 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 in RT_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 new traceprojector/surface.js module.
  • Section 6.3 boundary-weight cascade wired into Weight.compute():
    vertexBoundaryWeights, edgeBoundaryWeights, and
    faceBoundaryWeights (built from bweight.vertexWeight /
    edgeWeight / faceWeight over each boundary vertex's star,
    edge's star, and face's extended star), stored on Projector via
    computeBoundaryWeights.
  • README sections: Tech stack, Security, Code of Conduct,
    centered header with aligned badges, and license copyright.
  • engines.node: ">=26.0.0" in package.json and a
    workspaces: ["web"] field. New convenience scripts web:dev,
    web:build, and web:start proxy into the workspace.
  • .gitignore entries 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 to sachncs/traceprojector in every badge.
  • CONTRIBUTING and SECURITY are updated to use the public class
    name Projector and the package name traceprojector (no more
    TraceProjector or Bcdtpp).
  • 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 new web/ workflow.
  • docs/api.md is regenerated via npm run docs to include
    the bweight and surface exports and the Section 6.3
    boundary-weight cascade.
  • Bump dev-dependency group to current latest:
    • @rollup/plugin-node-resolve ^16.0.1^16.0.3
    • jsdoc-to-markdown ^9.1.1^9.1.3
    • mocha ^11.8.0^12.0.0
    • The rest of the dev deps (@rollup/plugin-commonjs,
      @rollup/plugin-terser, rollup, c8, chai, sinon,