Skip to content

feat: P132 providers × protocols, deepseek-flash, installer artifact; fix: P133 hidden SolidWorks instance, mass_properties - #4

Merged
raylanlin merged 3 commits into
masterfrom
claude/gracious-davinci-j7qso7
Oct 2, 2026
Merged

raylanlin merged 3 commits into
masterfrom
claude/gracious-davinci-j7qso7

Conversation

@raylanlin

@raylanlin raylanlin commented Oct 2, 2026 •

Copy link
Copy Markdown
Owner

What Changed

v0.2.132: P133, tools built the part in a SolidWorks the user could not see

  • What happened: the sidecar connects with Dispatch("SldWorks.Application"). When COM cannot reach the user's running SolidWorks, it silently starts a new, invisible SolidWorks and every tool runs there. The usual reason is a privilege-level mismatch: one of the two apps runs "as administrator".
  • On connect: a hidden instance is now made visible. The sidecar checks the SLDWORKS.exe process list to tell a second instance apart from "SolidWorks was not running". A note naming the cause and the fix is attached to tool results as _connection, and the chat shows it once per session.
  • mass_properties "CreateMassProperty/2 unavailable": under late binding the MassProperty object was called a second time. sw_get now returns COM objects as they are.

v0.2.131: P132

  • Settings: providers × protocols
    • Each provider has an OpenAI-compatible and/or an Anthropic-compatible URL. For example, DeepSeek serves https://api.deepseek.com and https://api.deepseek.com/anthropic.
    • The quick-fill row appears under both protocols and fills the URL for the selected protocol.
    • The model dropdown lists only the active provider's models plus Custom model.
    • Switching protocol keeps the provider when it serves both.
  • Model IDs
    • DeepSeek V4.1 Flash is deepseek-flash. deepseek-v4-flash was retired, so it is removed.
    • kimi-k3 and qwen3.8-max are added.
    • Anthropic-compatible URLs are added for DeepSeek, Kimi, MiniMax, GLM, Qwen and Ollama.
  • Build
    • Actions artifacts are the Setup installer and the zip, uploaded unzipped (archive: false).
    • A manual Run workflow now packages and attaches the installer too, without creating a Release.
  • Docs: README / README.zh-CN provider tables list both URLs. CHANGELOG updated.

Related Issue

N/A

Type of Change

  • 🐛 Bug fix
  • ✨ New feature
  • 📝 Documentation
  • ♻️ Refactor
  • 🧪 Tests
  • 🔧 Build / CI

Testing

  • npm test passes (197 tests).
  • pytest sidecar/tests passes (63 tests). The new test_p133_visibility.py fails 5/5 on 0.2.131.
  • npm run lint passes. typecheck, ruff, compileall and scripts/precommit-check.sh 0.2.132 also pass.
  • Manual test on Windows + SolidWorks: the connection note, and mass_properties.

Checklist

  • Code follows project conventions
  • Self-reviewed
  • Docs updated (if needed)
  • CHANGELOG.md updated (if needed)

…er on the Actions run page

Settings: presets are organised by provider (PROVIDERS), each with an OpenAI-compatible
and/or Anthropic-compatible URL. The quick-fill row shows under both protocols and fills
the provider's URL for the selected protocol; the model dropdown lists only the active
provider's models + Custom; switching protocol keeps the provider when it serves both
(e.g. https://api.deepseek.com <-> https://api.deepseek.com/anthropic) and keeps the
model when that provider lists it.

Model ids: DeepSeek V4.1 Flash is deepseek-flash (deepseek-v4-flash retired);
kimi-k3 and qwen3.8-max added and suggested. Anthropic-compatible URLs added for
DeepSeek, Kimi, MiniMax, GLM, Qwen and Ollama.

Build: the Actions artifacts are now the Setup installer and the zip, uploaded unzipped
(archive: false) instead of the win-unpacked folder that GitHub served as a zip; a
manual "Run workflow" also packages, verifies and attaches the installer (no Release).

Docs: README / README.zh-CN provider tables list both URLs per provider; CHANGELOG.
Tests: provider resolution, per-provider model list, protocol switch, quick-fill.
197 JS + 58 Python tests pass; typecheck, lint, ruff, compileall, renderer build OK.
…es under late binding

The sidecar connects with Dispatch("SldWorks.Application"). When COM cannot reach the
running SolidWorks (typically a privilege-level mismatch: one of the two "Run as
administrator"), it silently starts a new, invisible SolidWorks and every tool runs
there - a whole part was built and verified while the user's window stayed empty.

On connect the sidecar now checks Visible: a hidden instance is made visible
(Visible, UserControl), the SLDWORKS.exe list before/after tells a second instance
from "SolidWorks was not running", and a note naming the cause and the fix (plus
whether Millwright is elevated) rides on tool results as _connection; the chat shows
it once per session.

mass_properties failed with "CreateMassProperty/2 unavailable": a COM object is
always callable (__call__ -> default member), so the late-bound MassProperty object
that getattr already returned was called again. sw_get now returns COM objects as-is;
mass_properties uses it.

Tests: sidecar/tests/test_p133_visibility.py (fails 5/5 on 0.2.131).
197 JS + 63 Python tests pass; typecheck, lint, ruff, compileall OK.
@raylanlin raylanlin changed the title feat: P132 providers × protocols in Settings, deepseek-flash, installer on the Actions run page feat: P132 providers × protocols, deepseek-flash, installer artifact; fix: P133 hidden SolidWorks instance, mass_properties Oct 2, 2026
@raylanlin
raylanlin merged commit acd1286 into master Oct 2, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant