发布

  • 0.4.6 b0184f8d0b

    Publish 0.4.6 from develop to main

    frostbyte_neo 发布于 2026-08-12 19:48:30 +00:00

    Source ref: develop
    Source commit: 195fd52072
    Target branch: main
    Previous target: 2a3a42a39f
    Release base: 2a3a42a39f
    Previous source: f73e3bd229

    Included commits since previous source:
    195fd520 Merge pull request #219 from earthtojake/release/0.4.6
    bd9b0429 Release 0.4.6
    9e7cb8b5 Merge pull request #216 from earthtojake/claude/viewer-repo-sync-2f2301
    36261352 Merge branch 'develop' into claude/viewer-repo-sync-2f2301
    067aa859 Merge pull request #217 from earthtojake/claude/text2cad-ascii-rewrite-e0d821
    b41e2827 Merge branch 'develop' into claude/text2cad-ascii-rewrite-e0d821
    11fc250b Release: teach the publish-commit verifier about the trimmed roots
    76eaea6f docs: TEXT2CAD wordmark, header icon, drop stale demo link
    9dfb9282 Release: add bump=none so publishing need not move the version
    91ff7305 Merge pull request #214 from earthtojake/claude/measure-tidy
    c3e9971e viewer: widen the measurement palette to twelve evenly spaced hues
    2f98af05 Strip past-development-thread artifacts; lead the README with the demos
    d92194e6 viewer: move Measure to the lower pane, after Reference
    fbae5913 viewer: give every measurement its own colour
    fb98da58 Remove design/ planning docs
    2f993c5d viewer: make viewer/ self-contained, drop it from main, mirror it to cad-viewer
    a0d279ef viewer: drop the per-row glyph and call the tab Measure
    81e22351 viewer: measurements belong in the sidebar, not floating over the model
    8328924d viewer: two points on one face are a distance, not a zero
    41cd8346 viewer: show what a measure click would bind to before it is clicked
    a7e4818a viewer: Escape cancels the measurement, and measuring keeps one cursor
    dd94d825 viewer: the measure tool measures what it says it measures
    b62c1266 Merge pull request #193 from warun7/feat/viewer-measure-tool
    4788beb9 Merge branch 'develop' into feat/viewer-measure-tool
    62371310 Merge remote-tracking branch 'fork/feat/viewer-measure-tool' into feat/viewer-measure-tool
    bf826ae8 viewer: measure gates on topology capability, works in assemblies
    baf810fa Merge branch 'develop' into feat/viewer-measure-tool
    9dfba8bf Merge origin/develop into feat/viewer-measure-tool
    2f5c4444 Merge remote-tracking branch 'origin/release/0.4.0' into feat/viewer-measure-tool
    e5e0a910 Merge pull request #200 from earthtojake/claude/models-reorg-followup-paths
    74e94609 models: fix two path references the reorg missed
    0d3b75c6 Merge pull request #199 from earthtojake/claude/models-directory-reorg-ced40b
    e110ef86 models: reorganize fixtures by artifact kind
    79780be8 Merge pull request #198 from earthtojake/claude/viewer-format-unification-u2-u5
    5be95207 viewer: robots do not select — the select tool is camera navigation
    7bde608c viewer/cadjs: robots load whole, with progress, 32x faster
    3667d22e design: robot parity — R0/R1/R3/R4/R6 done, R2/R5 dropped
    e849884f cad/viewer: R4 — robots render headlessly
    b2052a75 viewer: R3 — a robot draws its links as they arrive
    116495de viewer: R1 — a robot's links are selectable parts
    3019942b design: robot descriptions as a first-class render type
    4456420f viewer: select, pan and draw are viewport tools, so every format gets them
    012cfb85 design: viewer format unification — U0 through U5 complete
    7dcbd2e1 viewer: U5 — loading, alerts and file-list state behind the registry
    b4725fae viewer: U4 — the implicit honours the theme's fill and rim, and a harness that proves it
    72daa145 dxf: a HATCH seed point is not a boundary vertex
    bcaf9f7a viewer: U3 — the viewport menu and camera actions belong to every format
    3826d4da viewer: U2 — one parameter/animation surface, keyed off the active runtime
    59e165fd viewer: U1 — projection is a viewport trait, honoured by every format
    f4d9495c viewer: U0 — capability registry replaces format-identity checks
    c0b9952c design: viewer format unification — capabilities, not identities
    17b87a44 Merge pull request #195 from earthtojake/claude/step-generation-status-tracking-1b7ff6
    6003c386 viewer: per-section bend resets; right-side ticks in material folders
    5d5bc3ae viewer: material folders, Fold/Corners naming, Orbit for DXF
    54148dbc viewer: give implicits the standard tools and export route
    d3ba32b8 viewer: SendCutSend material catalog, grouped select, no Sheet facts
    a2467e7f viewer: material presets with sheet facts; bends list leads its tab
    88e3697f viewer: curved is the default bend style; title the Bends sections
    98444305 viewer: split DXF sheet panes, model orientation buttons
    5c0053b6 viewer: Material/Bends tabs, display units, plain layer rows
    678c80c4 implicit: composite over the shared stage, and stop re-rendering idle frames
    af2a9573 viewer: opt-in hooks so a render type can tune the shared loop
    e4d0c17b viewer: Units control, Layers as a dedicated tab, LFS-pointer guard
    a1e6d6a9 design: implicit raymarch performance — findings and plan of attack
    546057a5 viewer: DXF settings persist per file in sessionStorage
    3f14b916 viewer: cover the implicit re-fit gate with tests, record execution status
    be589652 viewer: implicit becomes a shared render type instead of a second viewer
    14421404 dxf: units, layers, text engravings, score lines, angled bends, K-factor
    d8a12483 design: plan folding the implicit raymarch into the shared CadViewer as a 4th render type
    dfaff2eb viewer: curved bend guides on the material, DXF tab reset, tab rename
    e7f20f27 viewer: boxed default bend style, compact one-row bend controls
    a8da66ec viewer: curved bends fold the right way and replace the baked mesh
    677df5bd viewer: one-row bends, curved bend style, stacked drawing settings
    cef87ecd dxf: stop corrupting the mesh cache, zero the bend default, group bends properly
    cc66641f dxf: per-bend controls, mitered bends, flicker-free folding, shared tools
    8c8e0380 dxf: make bending actually work — one transform, in cadjs, with dotted creases
    ed98c373 dxf: live bending, flat-by-default thickness, and a generic plan mode
    a59cbbd9 dxf: Material and Bends settings tabs, with a working thickness control
    9937630e viewer: 2D/3D toggle for drawings
    592c6796 dxf: parse the entity set real drawings actually use
    c6d05b75 dxf: cadgen caches only what it renders
    214b58bb dxf: lie flat, show real filenames, keep STEP out of the drawings folder
    fc7604f7 viewer: say WHY a render-artifact build failed
    64ad0095 Merge remote-tracking branch 'origin/release/0.4.0' into feat/viewer-measure-tool
    11f16c96 Shrink measure dimension label chip and tighten padding
    1202c76c dxf skill: add scripts/snapshot on a shared render core
    6f027288 dxf skill: adopt the STEP CLI shape (gen + artifact)
    61c71da5 models/dxf: reset the imported fixtures around closed area
    5550a011 viewer: bind normalizeThemeSettings, and catch the whole bug class
    9e63149f design: record the 0.4.0 rebase outcome and the imported-DXF gap
    5a48cd28 viewer: keep raymarched and robot entries off the mesh path
    92f6ee46 viewer: gate the mesh load on the render-asset format
    43403a15 viewer: drop the DxfFileSheet branch's orphaned closer
    e467e52d rebase: finish the 0.4.0 conflict resolution
    296144fe WIP2: CadWorkspace merge repair -- ~8 syntax breaks fixed, more remain
    12670ff4 WIP: squash-merge onto release/0.4.0 -- CadWorkspace still has syntax breaks
    66c08036 viewer: drop G-code visualization
    9c70ad41 moonwatch: prune one-off render jobs and local pnpm lockfiles
    25f2b690 cad docs: OCC/build123d failure modes from the chronograph build
    c2fc707b Style measure panel and toolbar with sidebar theme tokens
    04ef281b BUGS.md: entries 2, 7 and the Compound-color entry marked fixed
    41ad0c80 cadgen-daemon: abort orphaned jobs when the client disconnects
    3cdedc50 cadgen: color bare-Compound leaves instead of warning and skipping
    d4d840ca cad/snapshot: reject unknown render job and output keys
    568b0a23 moonwatch: grand tour clip — reveal dwell plus gear-tier explode
    1f58f212 moonwatch: reveal clip separates running face from running movement
    230763b1 moonwatch: animation sidecar — escapement run loop, reveal, showcase explode
    166681c0 BUGS.md: entry 9 final addendum — renderer-class ceiling confirmed after per-part materials
    4433ca9c moonwatch: white painted hands restored; near-black blued screws; final gauntlet state
    a30a1d6e moonwatch: bridge plates with wheel windows; polished metal dial furniture
    6e675fcf moonwatch: narrowed anglage + full-coverage stripes + domed jewels; narrow lug polish band; matte brushed steel
    2acb8fda moonwatch: spline bridge silhouettes; AR-coated display glass; center-link polish
    cd21a16f moonwatch: chronograph bridge + coupling cock; all chrono pivots capped
    e8b087ed moonwatch: dial register depth (0.5 recesses, rim steps, darker floors); case polished bevel ribbons
    83ad7992 moonwatch: chronograph works (50 parts, 7-column wheel, zeroed pose); material calibration; neutral env rotation
    b7b3460a render pipeline: per-occurrence PBR material overrides + opacity; moonwatch material vocabulary
    80f01171 BUGS.md: document per-part material ceiling
    d0e7ad4b moonwatch: case grain + pusher remodel; neutral strong HDRI; darker steel albedo
    b4b4e6cc moonwatch: bracelet brushed grain + continuous drape + clasp pusher clash fix
    bb12d31b moonwatch: flat slotted screws, metallic materials pass, bright anglage ribbons, lever grain, domed jewels
    9b17829a moonwatch: jewel seating + anglage ribbons + rolled bracelet shoulders; straight-grain vocabulary
    bfb5f0e1 moonwatch: movement finishing round 2 (constructive anglage, two-tone striping); raking key light; deep ruby/blued palette
    c8b75411 moonwatch: movement composition entry + movement ring; deepen movement metals
    c4e4c334 moonwatch: movement base finished (83 parts); keyless works (12 parts); crowned bracelet links
    8a990cf6 moonwatch: whole-watch assembly entry; smooth lug lofts; cased-movement frame map
    92c550a6 moonwatch: bracelet cluster (57 bodies) + movement-base draft; end-link seat clearance
    65986ca6 moonwatch: case + dial clusters; glb alphaMode fix; theme/palette tuning
    d0800e38 moonwatch: project skeleton — spec, finishing vocabulary, presentation theme, sampler
    a21e0d25 Fix measure tool bugs and finalize dimension overlay
    1f2ed03b cad/snapshot: --params-path names the sidecar for an imported STEP
    26f899ae viewer: imported STEP files take a <name>.step.js parameter sidecar
    44fd27d6 repo: license copyright holder is Thompson Labs LLC
    507a0575 viewer: stop implicit animation controls looping the app to a standstill
    4b212ddc viewer: exploded view is one slider driving a hierarchical radial explode
    ecb33db5 viewer: throttled values emit on change, not on identity
    fbb2969d viewer: single .dxf suffix for drawing-generator labels
    0474dcc7 models/dxf: flatten into one folder, document validator + viewer results
    49c76fbf models: add dxf examples folder (generated + imported fixtures)
    29ff3104 viewer: bring back the animation restart, named for what it does
    0df41b0a viewer: settings section headings match the navbar size
    2914776f viewer: STEP parameters tab uses the shared ParameterControlsSection
    fe46cb20 viewer: split the parameters tab, one reset per tab, wider row gap
    59ec75a9 viewer: one control height, dropdown-first mode controls, tighter triggers
    8c134364 viewer: mode controls become inline rows, not full-width strips
    5c335e7a viewer: even out collapsed sections, tighten the settings spacing scale
    bea4d744 viewer: restyle settings section headings and rebuild the spacing scale
    7bd57289 viewer: codify settings UI guidelines and enforce them across all sheets
    c074eda8 viewer: one file icon per format, with a badge for generated models
    4ebcd5dc viewer: pan tool, favicon tile, and a cursor the pose picker no longer steals
    9dfd8dcb viewer: navy tile favicon, and title the tab "text-to-cad | "
    66f05064 viewer/docs: stellated-dodecahedron favicon, rendered from an implicit model
    46df04f8 cad/cadjs: fix four silent-wrong-output bugs in snapshot render jobs
    99d452ab cad: add inspect validate for per-solid geometric soundness
    af9c0c64 Add full 3D measure tool to the CAD viewer
    e3eb794c viewer: zoom baseline, origin axis, copy filename, first-run reference tip
    5eb5f356 models: F1 concept car one-shot
    ede0e713 cad/cadjs/viewer: fix silent-wrong-output bugs found building an F1 assembly
    56a119c0 Merge pull request #190 from earthtojake/claude/mid-engine-hypercar-cad-a2e3bc
    d790750f models: mid-engine hypercar one-shot
    d84f4dfc cadjs/cadgen: fix silent-wrong-output bugs found building a large assembly
    722411a5 viewer: one Display tab, one theme, one right-hand panel
    94f6240e cadgen: return a single-root STEP as its root, not wrapped
    3bd876d1 Merge pull request #187 from earthtojake/claude/lego-star-destroyer-cad-d4c7ec
    c288be04 viewer: let a same-stem generator own its entry, and allow cadjs' real path
    480e4555 Rebrand to text-to-cad: new byline, domain, wordmark, and hero layout
    be2922bd Restore cadgen PyPI pinning for the repo-root plugin structure
    2b0bad8c Merge develop (0.3.13) into release/0.4.0; adopt the root plugin structure
    b95d1a7d viewer: the URL path is the directory; delete the served-root layer
    76316513 Report artifact-build progress in the CLI and the CAD Viewer
    4061f6d8 Merge develop (0.3.11) into release/0.4.0
    fffe46dd Make the generation lock real; unify STEP/DXF freshness; trim export CLI
    e5a37b46 snapshot: reject render-asset cache hits across job sources
    843a9884 Merge develop (0.3.10) into release/0.4.0
    1a93185a Merge pull request #179 from earthtojake/claude/backport-0.3.10-to-0.4.0
    1e0181f3 bundle: regenerate the snapshot runtime for the backported cadjs highlights
    6c77b932 Merge pull request #172 from rootsbymenda/fix/per-job-asset-cache-key
    07694269 Merge pull request #176 from earthtojake/claude/cicd-issue-165-6a3072
    1e0b19d9 Merge pull request #174 from earthtojake/claude/github-issue-164-f6289c
    b610457a Merge pull request #171 from earthtojake/claude/pr-108-rendering-fixes
    046c33d1 Merge pull request #169 from n8guru/fix/software-webgl-performance
    58fd7368 Merge pull request #158 from xiaolai/fix/nlpm-document-bambu-tls-mitigation
    68c18778 Merge pull request #133 from earthtojake/claude/step-cli-refactor-plan-jujap5
    1ef6b9fc cadgen: drop the API surface the gen/export split made unreachable
    2f8b2b1d cad skill: port the warm daemon and CLI entries to gen/export/artifact
    9900344e Add scripts/artifact debug CLI and scripts/gen --write-step
    c0887c40 Split STEP CLI: scripts/gen builds render packages, scripts/export writes files
    52471eb6 models: remove LEGO falcon experiment (1.5GB source exceeds repo size budget)
    0dea657a Merge pull request #143 from earthtojake/claude/snapshot-unification-hx3k
    26eab03b cadgen: write explicit exports even when the compose is current
    0e7f07e2 snapshot: document --mode + reject single-frame .gif outputs
    a5d2c49d cad skill: resolve bundled cadgen from the step/inspect entries
    485759fc cadjs: ghost non-focused parts in view/orbit snapshot renders
    29a28fd4 snapshot: regenerate bundle after rebase onto release/0.4.0 @ 2045d5c1
    1003f91e snapshot: validate exploded.auto.mode + honor the top-level axis shorthand
    2c6b51b1 snapshot: regenerate bundle after rebase onto shared-geometry release/0.4.0
    e231c49f snapshot: accept .implicit.js inputs through the unified CLI
    8eadb440 snapshot: dispatch implicit jobs to the implicit backend in the shared runtime
    df5c8544 snapshot: factor shared job normalization + a kind-dispatch resolver table
    42a62863 cadjs: gate STEP sidecar loads by source kind in loadSource
    0f670549 snapshot: echo projection per rendered output
    ae06b485 snapshot: validate job-level display values, not just the --display flag path
    b4fcf0f3 snapshot: surface --debug diagnostics in the rendered --json result
    5a63380e snapshot: honor mesh projection, reject non-solid modes, fix empty-value parity
    76c4074f snapshot: render direct GLB/STL/3MF meshes + agent-facing polish
    e00f4645 snapshot: add opt-in --debug build-strategy diagnostics
    2045d5c1 Merge pull request #150 from earthtojake/codex/validate-cad-python-backend
    d2ac3bdd viewer: require valid CAD Python backend
    8149ba93 cadjs: fix package occurrence placement + double-transformed effective bounds
    7b685ed1 models: add animated Millennium Falcon experiment
    a8bbaf63 cadjs/viewer: sync lockfiles for three-mesh-bvh (pin 0.8.0)
    e97d94b0 viewer/cadjs: universal render+raycast perf pass
    33b58add models: archive GPT-5.6 humanoid concepts
    71d90c9f viewer: anchor zoom-to-cursor pivot to the model for consistent pan/zoom (#147)
    5ebf9596 viewer/cadjs: shared-geometry package rendering (single path; remove instancing) (#144)
    ffce7520 viewer/cadjs: make package instancing opt-in (fixes exploded view, params/animations, highlighting)
    6515b9f9 Merge pull request #138 from earthtojake/claude/viewer-renderer-consolidation-ax9vix
    65c20033 docs+tooling: reshape consolidation strategy around packages-resident backends; add visual baseline harness
    663d6089 tests: fence the single-install invariant and widen the package boundary scan
    4d5b82a2 bundle: resolve cadjs's implicitjs imports hermetically in the snapshot bundle
    db4d291e viewer+cadjs: re-point implicitExport at cadjs/implicit/* (adds exportModel re-export)
    29c832fb viewer: implicit imperative-handle zoom parity + sharpen consolidation handoff
    c91984f8 docs: record renderer-consolidation dependency direction and handoff plan
    5ba1181d viewer+cadjs: route implicit APIs through cadjs so cad-viewer installs cadjs alone
    b5402c8d packages: cadjs depends on implicitjs; dedupe byte-identical camera.js
    4a02b2ff viewer: repoint CadViewer at the shared viewport camera kit
    f5d03bc9 viewer: extract shared viewport camera kit; adopt it in implicit viewer
    336dc450 Merge pull request #140 from earthtojake/claude/cadgen-edit-path-perf
    6a25f6b5 docs: fix dead pre-rebase SHAs in perf notes; record review follow-up
    2aa13773 cadgen: memoize the semantic hash, harden its fallback, bound A8 retention
    d78a308d Merge pull request #141 from earthtojake/claude/viewer-phase4-instanced-interaction
    facca2d4 docs: mark gap #7 (zoom-to-fit selection) resolved in Phase 4
    348df285 viewer: per-hover incremental instance update (Phase 4)
    3475fa52 viewer: zoom-to-fit a selected instanced occurrence (Phase 4 gap)
    83108ae6 docs: record edit-path perf A-set outcomes (A2/A3/A4/A8 done; A5/A6/A1 declined with evidence)
    37876fe5 cadgen: serialize each component's BREP once for hash + worker payload
    fb0e1834 cadgen: cache module first-party classification across builds
    f7e8de7b cadgen: comment-insensitive closure hashing + stdin closure footgun fix
    06bd70ff Merge pull request #137 from earthtojake/claude/viewer-instancing-perf
    0d0d85d7 viewer: fix instanced-package interaction defects from pre-PR audit
    2807e2a2 viewer: size-policy default-on for package instancing (Phase 3 increment 6)
    e087b220 viewer: per-instance selection/hover/hide/focus (Phase 3 increment 3)
    aa89e28c viewer: resolve InstancedMesh picks to occurrences (Phase 3 increment 2)
    416a805d cadjs: wire cid-keyed instancing into the render path behind instancePackages flag
    6c2984a4 docs: Phase 3 status — instancing engine done + verified; integration increments mapped
    d4fb9041 cadjs: cid-keyed instanced-package scene engine (Phase 3 core)
    cd89da47 Merge pull request #135 from earthtojake/claude/viewer-launch-simplify-25tiux
    2b4d524e Drop viewer launcher reuse; rename to start; default port 3245
    a9e03336 viewer: keep an auto-hiding toolbar in orbit (preview) mode
    f0836401 Merge pull request #136 from earthtojake/claude/exploded-view-release-0.4.0
    1312213b viewer: dedicated Exploded + Clip tabs with redesigned controls
    5d867fac viewer: add a Loop toggle to animation playback controls
    db048e25 raptor3: ground the exploded view and tighten spacing
    4fa04e2c models/one-shots: add Raptor 3 and Starship + Mechazilla concept models
    20e627fa chore: regenerate snapshot runtime bundle on release/0.4.0 base
    08aae0af Simplify CAD Viewer launch to a fixed port
    8ce9d4c1 viewer: telescope concentric coplanar parts along the axis
    0d7c9a85 viewer: clearer default explode spread + physical radial bloom
    46d6f251 viewer: fix exploded-view review findings
    8a438e29 viewer: exploded-view step list authoring + design doc status
    d4a38d6e viewer: step-based exploded view (model, evaluator, generator, scrub slider)
    0c6db185 design: exploded view research — pro-tool survey, sources, refined proposal
    c585c124 design: exploded view redesign research draft (current impl + critique + proposal)
    56090fd4 Add execution plan for viewer launch simplification
    a5db405e models: drop baked mars_rover_concept.step; keep the .step.py generator
    07f1bdb7 Add lunar mass driver concept to models/one-shots
    5fce2aa7 Merge spacex packages and juno/lyra robots into models/one-shots
    e7bc036e models: add GD01-inspired transformable mecha concept under one-shots
    a3fa2b91 cadjs: load params sidecars for component-GLB package render sources
    2263d465 Add Mars rover concept model under models/one-shots
    14865695 design: Phase 3 scoping reality + Phase 4 correction (matrixAutoUpdate already done)
    7c2bb541 viewer: parse package component GLBs in the worker at higher concurrency
    ce261369 viewer bench: structural render-cost harness for component-GLB packages
    1895a7fc design: record edit-path perf notes + viewer large-package rendering plan
    f75c2696 Cylindrical radial explode; terminal outline/grid; theme tweaks
    0524a1ba Projection as a theme trait; add Vibrant, restyle stage themes
    78bcb0a4 Neutral cinematic grade + floor that follows the model
    ec457734 Tint the glass chrome from the active scene backdrop
    c297a397 Add Cinematic theme preset with fill/rim theme lighting
    13746038 cadgen: fall back to in-process builds for BREPs BinTools cannot read back
    9dcd1cab cadgen: public compound_from_instances API; SpaceX engine clusters adopt it
    2f9b0e9b cadgen: vectorize the GLB payload build with numpy (profiled 55-60% of cold component builds)
    eef61419 cadgen: topology.glb selector cache + opt-in warm CLI daemon
    36c60638 cadgen: five profiled quick wins on the build path
    7bdc747e cadgen: freshness gates, scale-aware meshing, parallel component builds
    bb2bbc6b Add SpaceX model sources under models/spacex
    9cc69340 Finish render-package naming; retire --skip-step-write and legacy GLB compat
    eaca6c2d Rename cadcache to cadgen and delete the legacy artifact-path layer
    7ac59c7f Merge pull request #130 from earthtojake/claude/dxf-artifact-pipeline
    4ac5ed5e cadjs: token-based DXF layer intent in parseDxf + preview mesh
    5052de67 Fix remaining DXF review findings: packaging, validation gates, snapshot, exports
    c1bd1050 Deterministic source-closure capture: pre-run eviction + execution recording
    084b8a4d Exported DXF files are detached deliverables; rebuilds never touch them
    d620b1d3 gen_dxf rebuilds remove stale sibling DXF exports
    691585d2 dxf skill: full generator templates as a skill reference, not a CLI scaffold
    62d8d057 DXF pipeline round 2: cadgen.flatten, deterministic packages, gen-time validation, snapshots, kerf
    2c5ccc88 Address DXF pipeline review flags: exports, model fixes, scan resilience, viewer export
    e56a613b DXF pipeline parity with STEP: .dxf.py generators + drawing-package cache + viewer auto-regen
    b6b97f14 Merge remote-tracking branch 'origin/release/0.4.0' into claude/release-0.4.0-rebase-aj688y
    da5658ad Merge develop into release/0.4.0
    88826737 Merge pull request #129 from earthtojake/claude/cadpy-pypi-publishing-hiipn6
    b2175241 Drop deleted urdf/srdf/sdf runtimes from the production build check
    4f47faa9 Merge pull request #128 from earthtojake/claude/cadpy-pypi-publishing-hiipn6
    f5fad4a4 Split cadgen into a public API and cadgen._internal engines
    24c4efdf Publish cadgen (formerly cadpy) to PyPI from the Release workflow
    09fb85a0 Merge pull request #127 from earthtojake/claude/urdf-srdf-sdf-xml-gen-zkgk44
    2471907b Replace SRDF metadata link with same-folder robot-name pairing
    352800f6 Bolster URDF/SRDF/SDF validators: findings architecture, new checks, edge-case suites
    ed0c5a58 Rename skill validators to scripts/validate and remove dead generator code
    da7cc7c3 Migrate robot-description fixtures to authored XML and add SO101 SDF
    9bc95378 Rearchitect URDF/SRDF/SDF skills to direct XML authoring with validation-only runtimes
    8285c29e Add tom 1/4-20 tripod camera stand and thread test block
    2d9496d4 Merge pull request #123 from earthtojake/python-viewer-backend
    a9175210 viewer: drop dead _step_render_artifact_present helper
    41c31b77 Remove the Tauri desktop shell; keep the pure web viewer + Python backend
    b178524c viewer: show generated models in the catalog, build them on demand
    1672f3ae desktop: working packaged macOS app — self-contained runtime + launcher shim
    91ffc1b9 desktop: per-platform CI + cross-platform packaging fixes
    202cdc45 desktop: harden the shell from an adversarial scaffold review
    6b890d90 desktop: Tauri shell scaffold + relocatable Python runtime packaging
    1065c6e6 bundle: factor Python vendoring into one shared lib
    c9a2e14b viewer: persistent warm-OCCT CAD worker (+ warm-closure determinism)
    6565bc47 cadpy: extract in-process callable cores for step artifact + export
    12f407f2 viewer: delete the Node backend; Python is the only runtime backend
    a40fa411 viewer: run the Python backend in dev via a Vite proxy
    a543ec78 viewer: add parity-verified Python backend (server_py)
    4e4c425a viewer: export dropdown supports part entries; simplify labels
    7a0319e7 viewer: hide stage floor in orthographic projection
    3ecf36aa gripper: add print-bed STLs (relieved clamps, 1x and 2x P2S)
    bdd2c233 gripper: relieve clamp tube-slot interference to -0.10mm for 6mm rod
    57f2969c gripper: adopt RB9.01.062, rename rb9->tom_gripper, add variants
    a79fefbf Bump version to 0.4.0
    7a458722 docs: fix cad-viewer launcher example in AGENTS.md
    7c405817 viewer + models: .params.js sidecar migration + model-export UI
    9d5fcc60 viewer: world-z=0 floor (respect absolute Z)
    76c7fda1 cad: cwd-relative, REPO_ROOT-free STEP CLI + raw-OCCT compose
    ed4fdd4d tom: 6-DOF wrist, grounded base, 10 mm clamp spacers + URDF/SRDF
    6cc784f9 Fix inspect_refs test for entry-keyed render package GLB lookup
    e499d925 Fix freshness-gate tests for entry-keyed cache; drop stale generation_status test
    d72a52d9 Regenerate snapshot runtime after rebase onto release/0.5.0
    d27c20ea Viewer model export + entry-keyed cadcache for .step.py / .step coexistence
    db3ce993 Consolidate STEP scene cache under cadcache/models/
    a0da692f Fold generation lock into artifact pull; remove generation-status endpoint
    f696c53d Consolidate STEP artifact-generation loading label
    c2999a76 Friendlier STEP render loading label ("loading topology")
    3ea40870 Viewer: don't show a loading spinner for un-built entries in the file list
    62912761 Render-artifact pipeline: client useArtifact cutover + delete old surfaces (phases 3-4)
    fd8cd5b5 Render-artifact pipeline: shareable server API + unified route (phases 1-2)
    a9a12c5a Remove viewer Vercel deploy plumbing (CI, scripts, docs)
    b8f9c48e Viewer: remove Vercel/remote-blob deployment, keep local-fs only
    2a8ee228 Viewer: (re)generate stale/missing STEP & Python caches on open
    1b0acd4e Regenerate snapshot runtime after develop rebase
    7e57c8b6 Models: drop committed STEP/GLB artifacts, refresh tom inputs
    90672d5a Viewer: component-GLB package rendering + topology-tree parity
    550b125b Incremental assembly regen: freshness gate, parallel rebuilds, inline scene cache
    7a4ec1e2 Remove the Metadata section; hide the file sheet when a kind has no sections
    b8bf4daf Align leaf tree-row glyphs under their parent's glyph
    a810bc9d Remove the "Default" badge from theme presets
    8331deae Tighten the pane divider and unify resizer styling
    53e557a9 Reference header: type as a muted chip after the label
    8e0611be Place the Parameters tab in the top pane, after Tree
    f5970982 Reference inspector: tighter rows, include parts, shorter prompt
    49289ba9 Add a Reference inspector section to the STEP file sheet
    25f39fd2 Collapse fill colors when not cycling; keep the save button visible on dark
    8b6cbd1a Rename split Workbench presets to Light/Dark
    2abcf08a Split Workbench into flat light/dark themes; derive app tone from background
    e3dec55e Refine appearance editor: clearer save, color mode, and toggle close
    77d76166 Match theme-button open state to the file sheet; prune the appearance sidebar
    3b913b79 Add icons to the System/Light/Dark color-mode toggle
    aca41ba5 Fold the light/dark toggle into the theme dropdown
    8ac5967b Open appearance editing as a global navbar-driven sidebar mode
    93684414 Compact the file-sheet tabs and add icons to all tree rows
    100b6e5a Normalize padding into one coherent system across the viewer
    bf580c0e Tighten list/row padding across the board for the compact design system
    87ef981d Remove icons from the display Style dropdown
    da1dac8b Remove the tree 'show more'/'show less' row limit
    5fc83ed8 Split the file sheet by dragging a tab into the bottom zone
    56ffea66 Revert SMUI font to the viewer's previous typeface
    87d95d46 Add local smui design-system skill doc for the viewer
    1409e390 Keep frosted-glass surfaces in the SMUI theme
    f787713e Apply SMUI 'spacemolt' design system to the viewer UI
    29fc6818 Make file sheet tabs square and flush instead of floating pills
    6273ea4e Redesign file sheet sidebar as Chrome-inspector tabs

    下载附件