Skip to content

Releases: deeleeramone/PyWry

pywry 2.0.2

17 May 16:36
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

pywry 2.0.2

Installation

pip install pywry==2.0.2

Supported Platforms

Platform Architecture Wheel
Linux x86_64
Linux aarch64
macOS x86_64 (Intel)
macOS arm64 (Apple Silicon)
Windows AMD64
Windows ARM64

Python Versions

  • Python 3.10, 3.11, 3.12, 3.13, 3.14

SBOM

  • CycloneDX SBOM is included in this release as sbom.cdx.json.

This is a draft release. Wheels are published to PyPI separately.

What's Changed

  • build(deps): update pydantic requirement from >=2.13.3 to >=2.13.4 in /pywry/docs by @dependabot[bot] in #47
  • build(deps): update pydantic-settings requirement from >=2.14.0 to >=2.14.1 in /pywry/docs by @dependabot[bot] in #48
  • build(deps): bump pydantic from 2.13.3 to 2.13.4 in /pywry by @dependabot[bot] in #49
  • build(deps-dev): bump agent-client-protocol from 0.9.0 to 0.10.0 in /pywry by @dependabot[bot] in #50
  • build(deps): bump pydantic-settings from 2.14.0 to 2.14.1 in /pywry by @dependabot[bot] in #51
  • build(deps-dev): bump openai from 2.33.0 to 2.36.0 in /pywry by @dependabot[bot] in #52
  • build(deps-dev): bump cryptography from 47.0.0 to 48.0.0 in /pywry by @dependabot[bot] in #53
  • build(deps): bump urllib3 from 2.6.3 to 2.7.0 in /pywry in the uv group across 1 directory by @dependabot[bot] in #54
  • Bugfix/chat handler by @deeleeramone in #55

Full Changelog: pywry-2.0.1...pywry-2.0.2

pywry plugin v0.1.1

17 May 16:20
Immutable release. Only release title and notes can be modified.
78fb02a

Choose a tag to compare

Chat widget reliability. Fixed a regression where the desktop chat
panel rendered empty (no welcome message, dead buttons) after a
set_content IPC swap. Root cause: chat-handlers.js contained a
literal '</head>' string inside its iframe meta-tag injection
helper. When inlined into the host document's <head>, the desktop
subprocess's regex-based head-script extractor terminated early on
the stray tag, dropping the chat-handlers <script> and leaving
window.initChatHandlers undefined at re-init time. The literals are
now split ('<' + 'head>' / '</' + 'head>') so any naive HTML
extractor sees a balanced document.

Demo refresh. pywry_demo_deepagent_nvidia.py model catalog
trimmed to a small curated set of currently-served NVIDIA NIM
tool-capable models; stale ids that 404 at inference removed. The
dropdown now only shows entries the live ChatNVIDIA. get_available_models() lookup confirms.

pywry 2.0.1

10 May 07:45
Immutable release. Only release title and notes can be modified.
58393bf

Choose a tag to compare

pywry 2.0.1

Installation

pip install pywry==2.0.1

Supported Platforms

Platform Architecture Wheel
Linux x86_64
Linux aarch64
macOS x86_64 (Intel)
macOS arm64 (Apple Silicon)
Windows AMD64
Windows ARM64

Python Versions

  • Python 3.10, 3.11, 3.12, 3.13, 3.14

SBOM

  • CycloneDX SBOM is included in this release as sbom.cdx.json.

This is a draft release. Wheels are published to PyPI separately.

What's Changed

  • build(deps): update mkdocs-literate-nav requirement from >=0.6.0 to >=0.6.3 in /pywry/docs by @dependabot[bot] in #22
  • build(deps): update griffe requirement from >=1.0.0 to >=2.0.2 in /pywry/docs by @dependabot[bot] in #21
  • build(deps): update mkdocs-section-index requirement from >=0.3.0 to >=0.3.12 in /pywry/docs by @dependabot[bot] in #20
  • build(deps): update mkdocstrings requirement from >=0.26.0 to >=1.0.4 in /pywry/docs by @dependabot[bot] in #18
  • build(deps): update mkdocs-gen-files requirement from >=0.5.0 to >=0.6.1 in /pywry/docs by @dependabot[bot] in #19
  • chore(sync): merge main into develop by @github-actions[bot] in #24
  • build(deps): update mkdocs-material requirement from >=9.5.0 to >=9.7.6 in /pywry/docs by @dependabot[bot] in #29
  • build(deps): update pydantic-settings requirement from >=2.0 to >=2.14.0 in /pywry/docs by @dependabot[bot] in #28
  • build(deps): update mkdocs-autorefs requirement from >=1.0.0 to >=1.4.4 in /pywry/docs by @dependabot[bot] in #27
  • build(deps): update mkdocs requirement from >=1.5.0 to >=1.6.1 in /pywry/docs by @dependabot[bot] in #26
  • build(deps): update pydantic requirement from >=2.0 to >=2.13.3 in /pywry/docs by @dependabot[bot] in #25
  • fix(docs): scope custom nav CSS to desktop so mobile drawer renders by @deeleeramone in #32
  • chore(sync): merge main into develop by @github-actions[bot] in #33
  • chore(sync): merge main into develop by @github-actions[bot] in #34
  • chore: migrate from pylint+mypy to ruff+ty by @deeleeramone in #35
  • [BugFix] Fix Notebook Detection Chain by @deeleeramone in #40
  • build(deps-dev): bump anywidget from 0.10.0 to 0.11.0 in /pywry by @dependabot[bot] in #37
  • build(deps-dev): bump openai from 2.32.0 to 2.33.0 in /pywry by @dependabot[bot] in #38
  • build(deps-dev): bump authlib from 1.7.0 to 1.7.1 in /pywry by @dependabot[bot] in #39
  • chore(sync): merge main into develop by @github-actions[bot] in #42

New Contributors

Full Changelog: claude-pywry-v0.1.0...pywry-2.0.1

claude-pywry-v0.1.0

26 Apr 19:11
Immutable release. Only release title and notes can be modified.
26ada39

Choose a tag to compare

MCP server. .mcp.json launches pywry mcp --transport stdio and
surfaces the full PyWry MCP tool set — 66 tools covering widget
creation, manipulation, chat, TradingView charts, and the autonomous
builder. Source of truth is pywry.mcp.tools.
Key additions driven by this release:

  • get_widget_app(widget_id) — re-snapshot a widget as a full
    AppArtifact with a bumped revision.
  • Widget-creating tools (create_widget, show_plotly,
    show_dataframe, show_tvchart, create_chat_widget)
    auto-return an AppArtifact alongside their JSON response in
    headless mode: self-contained HTML carried as an MCP
    EmbeddedResource with mimeType: text/html and
    uri: pywry-app://<widget_id>/<revision>.

AppArtifact type. New Pydantic artifact model in
pywry.chat.artifacts — carries self-contained HTML plus
widget_id / revision, rendered as a sandboxed iframe with a live
WebSocket bridge back to Python. Older revisions of the same widget in
chat history freeze at their last known state: their reconnect is
rejected server-side with close code 4002 Older revision superseded.

Host-theme bridge. ws-bridge.js responds to host theme state via
three channels, in priority order:

  1. pywry-host postMessage from an outer page (used by the
    AppArtifact iframe bridge in PyWry's chat widget and by mcp-ui
    clients that emit their own theme signals).
  2. matchMedia('(prefers-color-scheme: dark)') change events.
  3. A 500 ms poll of matchMedia(...).matches — required because
    Chromium-in-Electron (Claude Preview, Claude Desktop) updates the
    query's .matches value but doesn't fire the change event.

An initial-sync pass runs one animation frame after load so Plotly
charts pick up the correct template even when the figure was rendered
without an explicit template. Fixes __pywry_user_template__
pollution that previously kept charts stuck on plotly_white.

Orientation skill. skills/pywry-orientation/SKILL.md teaches
Claude when to reach for PyWry (dashboards, Plotly charts, AG Grid
tables, TradingView charts, chat UIs, native desktop windows) and how
to navigate the 17 domain skills served by the get_skills MCP tool.

Slash commands.

  • /pywry:doctor — runs the install health check: Python version,
    import pywry, import pywry.mcp, fastmcp, native PyTauri
    binary, a headless MCP handshake smoke test, and a reminder to
    verify /mcp pywry in Claude Code.
  • /pywry:scaffold [name] [--kind widget|chat|tvchart|dashboard]
    scaffolds a new runnable PyWry app.
  • /pywry:examples [name] — lists or runs a bundled example
    headlessly.

Subagent. agents/pywry-builder.md is a specialised subagent with
a restricted tool surface for multi-step widget construction — builds
the widget via MCP tools, exports runnable Python, and keeps the main
thread's context clean during long interactions.

Hook. hooks/hooks.json registers a PostToolUse hook for
Write / Edit that runs ruff format on the changed .py file.
Short-circuits to a no-op when ruff is not on PATH.

Packaging.

  • The plugin lives at claude/plugins/pywry/ in the PyWry repo, listed
    from claude/.claude-plugin/marketplace.json.
  • Install via /plugin marketplace add deeleeramone/PyWry --path claude/.claude-plugin/marketplace.json then /plugin install pywry@pywry.
  • pip install 'pywry[dev]' (or pywry[all]) also ships the full
    plugin tree inside the wheel at pywry/_claude_plugin/ — the bundle
    includes both plugin.json and a single-plugin marketplace.json
    so the installed location is a valid marketplace root as-is.
  • New pywry plugin-path CLI subcommand prints the bundled plugin
    location for use with /plugin marketplace add $(pywry plugin-path);
    --marketplace prints the marketplace.json path, --check exits
    non-zero with a clear error when the bundle is missing.
  • .mcp.json launches the pywry console script (installed by pip)
    rather than python -m pywry.mcp, sidestepping the Microsoft Store
    python shim on Windows hosts where bare python isn't aliased to
    a real interpreter.

Testing. 12 dedicated tests in pywry/tests/test_mcp_app_artifact.py
cover the artifact model, revision bump, attach helper, handler
behaviour, and the _format_tool_result serialiser that emits the
EmbeddedResource. The 203-test MCP suite passes.

Documentation. Top-level README, MkDocs MCP reference,
plugin install page,
skills reference, and chat component docs all describe the plugin,
AppArtifact, and revision-freeze semantics.

pywry 2.0.0

24 Apr 05:37

Choose a tag to compare

pywry 2.0.0

Installation

pip install pywry==2.0.0

Supported Platforms

Platform Architecture Wheel
Linux x86_64
Linux aarch64
macOS x86_64 (Intel)
macOS arm64 (Apple Silicon)
Windows AMD64
Windows ARM64

Python Versions

  • Python 3.10, 3.11, 3.12, 3.13, 3.14