Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Releases: JLay2026/partsmith

v0.3.6: opt-in, capped create preview

12 Jun 02:37
@JLay2026 JLay2026
3584ca0
This commit was created on GitHub.com and signed with GitHub’s verified signature.
GPG key ID: B5690EEEBB952194
Verified
Learn about vigilant mode.

Choose a tag to compare

Merge pull request #21 from JLay2026/feat/optional-preview
v0.3.6: opt-in, capped create preview (#20)
Assets 2
Loading

v0.3.5: robust artifact delivery — verifiable file responses

12 Jun 01:35
@JLay2026 JLay2026
dd03ca1
This commit was created on GitHub.com and signed with GitHub’s verified signature.
GPG key ID: B5690EEEBB952194
Verified
Learn about vigilant mode.

Choose a tag to compare

Merge pull request #19 from JLay2026/feat/robust-artifact-delivery
v0.3.5: robust artifact delivery — verifiable file responses (#18)
Loading

v0.3.4: dimensioned engineering drawings

11 Jun 22:26
@JLay2026 JLay2026
f4d6729
This commit was created on GitHub.com and signed with GitHub’s verified signature.
GPG key ID: B5690EEEBB952194
Verified
Learn about vigilant mode.

Choose a tag to compare

Merge pull request #17 from JLay2026/feat/dimensioned-drawings
v0.3.4: dimensioned engineering drawings (#12)
Loading

v0.3.1 pytest CI + integration suite — defensive layer

11 Jun 02:55
@JLay2026 JLay2026
aca64ac
This commit was created on GitHub.com and signed with GitHub’s verified signature.
GPG key ID: B5690EEEBB952194
Verified
Learn about vigilant mode.

Choose a tag to compare

Merge pull request #11 from JLay2026/feat/pytest-ci-integration
feat(v0.3.1): pytest CI + integration suite — defensive layer (closes #5)
Loading

v0.2.6 — cross-section renderer

11 Jun 01:37
@JLay2026 JLay2026
6121b99
This commit was created on GitHub.com and signed with GitHub’s verified signature.
GPG key ID: B5690EEEBB952194
Verified
Learn about vigilant mode.

Choose a tag to compare

Merge pull request #9 from JLay2026/feat/cross-section-renderer
feat(v0.2.6): cross-section renderer — see inside designs inline (closes #8)
Loading

v0.2.5 — partsmith_helpers library

11 Jun 01:08
@JLay2026 JLay2026
9357e1c
This commit was created on GitHub.com and signed with GitHub’s verified signature.
GPG key ID: B5690EEEBB952194
Verified
Learn about vigilant mode.

Choose a tag to compare

Merge pull request #7 from JLay2026/feat/partsmith-helpers
feat(v0.2.5): partsmith_helpers library — 7 reusable build123d patterns (closes #1)
Loading

feat(v0.2.4): persistent design store (closes #2)

10 Jun 03:24
@JLay2026 JLay2026

Choose a tag to compare

First v0.3.0 Theme 1 (author ergonomics) item.
Designs are saved to disk under {workspace}/designs/ as {name}.py
(source) + {name}.json (metadata: timestamps, description, geometry
snapshot). Survive container restart; models are still in-memory only.
Two-file persistence (source + sidecar) instead of single JSON so the
source is human-readable on disk (cat workspace/designs/bracket.py)
and git-friendly if the workspace is ever versioned. Sidecar is
bookkeeping that can be regenerated from defaults if missing or corrupt.
API surface:
REST (5 new endpoints):
 POST /design/save — save (also executes for geometry snapshot)
 GET /design/list — list all (cheap, uses snapshots)
 GET /design/{name} — load source + metadata, no execution
 DELETE /design/{name} — remove .py + .json
 POST /design/{name}/load — load + execute as model
MCP (4 new tools):
 partsmith_save_design(name, code, description="")
 partsmith_load_design(name)
 partsmith_list_designs()
 partsmith_delete_design(name)
Design notes:
- save() always tries to execute the code so geometry can be snapshotted
 for list() efficiency. If execution fails the save still succeeds —
 source is the source of truth.
- save() also registers the result as an in-memory model so the design
 is immediately available for render/measure/export without a separate
 partsmith_create_model call. Matches likely workflow.
- Same NAME_PATTERN validation as models. Path-traversal defense via
 resolved-path-relative-to check (belt+braces on top of regex).
- Thread-safety: not safe for concurrent writes to the same name.
 partsmith is single-tenant single-process by design (single uvicorn
 worker), so this is acceptable.
Files:
- src/design_store.py — NEW (~180 LOC, full module with docstrings)
- src/server.py — adds 5 REST endpoints, instantiates store, passes to build_mcp
- src/mcp_transport.py — accepts store kwarg, adds 4 MCP tools
- src/__init__.py — version 0.2.4
- pyproject.toml — version 0.2.4
- CHANGELOG.md — v0.2.4 entry with design notes
Validation:
- py_compile clean on all .py files
- ruff check (E,F,I,W) clean
Resolves #2.
Loading

v0.2.3

09 Jun 20:23
@JLay2026 JLay2026

Choose a tag to compare

Highlights

First fully-working /mcp release with Cowork's managed MCP UI and other
strict-spec MCP clients. Three deploy-time bugs from v0.2.0 fixed, plus
one stateless-mode upgrade in v0.2.3 itself.

Changes since v0.2.0

  • v0.2.1 — FastAPI lifespan integration for FastMCP session_manager
    (fixes Task group is not initialized runtime error); clean /mcp/
    URL (was double-prefixed /mcp/mcp/); uvicorn --proxy-headers
    --forwarded-allow-ips "*" so X-Forwarded-Proto from upstream
    reverse proxy is honored.
  • v0.2.2 — Disable FastMCP DNS rebinding protection (default
    rejects any Host header other than localhost/127.0.0.1 with 421
    Misdirected Request; out of scope for a perimeter-secured backend).
  • v0.2.3 — Switch to stateless_http + json_response mode. Default
    stateful mode keeps a long-poll GET stream open for server-pushed
    events, which strict-spec MCP clients mishandle and hang on for
    minutes per call. Stateless collapses each MCP call to a single
    POST with the response in the body as application/json.

Compatibility

  • partsmith tools are all request/response (no streaming output), so
    stateless mode loses nothing.
  • Existing clients that worked in stateful mode (curl, mcp-cli) continue
    to work — stateless is a strict subset.
  • The cad-agent-shim Windows-side translator (deprecated in v0.2.0) is
    fully replaced; archive that repo.

Verified deploy

End-to-end through Cowork managed MCP UI on 2026年06月09日. Full pipeline:
Cowork → Caddy → uvicorn → FastAPI → FastMCP /mcp/ → engine + renderer.

Loading

AltStyle によって変換されたページ (->オリジナル) /