Skip to content

Conversation

@elasticdotventures
Copy link
Owner

test

mvanchura-ux and others added 6 commits October 18, 2025 02:34
Updated Windows installation instructions for UV.
The previous instructions used set Path=..., which only works in CMD and only temporarily modifies the PATH for that CMD session (and any new processes launched from it). 

This was inconsistent with the preceding PowerShell-based install command (irm ... | iex), and would fail if run in PowerShell. Updated the example to use a proper PowerShell approach that dynamically resolves the current user's home directory via $env:USERPROFILE and appends .local\bin to the user-level PATH persistently (so the user does not have to set it each time before launching Claude Code).
Fixed possible issue in instructions for adding uv to user path in Windows, so as not to inadvertently overwrite existing user path with system path.
Revised UV installation steps for Windows
Copilot AI review requested due to automatic review settings November 23, 2025 03:08
Copilot finished reviewing on behalf of elasticdotventures November 23, 2025 03:12
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request merges updates from source, primarily adding Hunyuan3D support and telemetry infrastructure to the Blender MCP project.

Key Changes

  • Telemetry system: Added anonymous telemetry tracking for tool usage via Supabase, with environment variable opt-out support
  • Hunyuan3D integration: Implemented 3D model generation using Tencent's Hunyuan3D API (both official and local API modes)
  • Infrastructure improvements: Increased socket timeout from 15s to 180s to support longer-running 3D generation tasks

Reviewed changes

Copilot reviewed 6 out of 8 changed files in this pull request and generated 26 comments.

Show a summary per file
File Description
src/blender_mcp/telemetry.py New telemetry collection module for tracking tool usage and performance metrics
src/blender_mcp/telemetry_decorator.py Decorator for instrumenting MCP tools with telemetry tracking
src/blender_mcp/server.py Added telemetry decorators to existing tools, implemented Hunyuan3D tool functions, increased socket timeouts
addon.py Implemented Hunyuan3D API integration including job creation, polling, and asset import; added UI properties for configuration
pyproject.toml Updated version to 1.4.0 and added dependencies for supabase and tomli
README.md Updated release notes and installation instructions for Windows
.gitignore Added config.py to gitignore for storing telemetry secrets

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

import shutil
import zipfile
from bpy.props import StringProperty, IntProperty, BoolProperty, EnumProperty
from bpy.props import IntProperty
Copy link

Copilot AI Nov 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The import statement for EnumProperty has been removed, but it's still needed by the blendermcp_hunyuan3d_mode property defined at line 2259. This will cause a NameError when the addon is registered.

Suggested change
from bpy.props import IntProperty
from bpy.props import IntProperty, EnumProperty

Copilot uses AI. Check for mistakes.

def poll_hunyuan_job_status_ai(self, job_id: str):
"""Call the job status API to get the job status"""
print(job_id)
Copy link

Copilot AI Nov 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Debug print statement left in production code. This should be removed or converted to proper logging.

Copilot uses AI. Check for mistakes.
import shutil
import zipfile
from bpy.props import StringProperty, IntProperty, BoolProperty, EnumProperty
from bpy.props import IntProperty
Copy link

Copilot AI Nov 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The import statement for FloatProperty is missing but it's needed by the blendermcp_hunyuan3d_guidance_scale property defined at line 2304. This will cause a NameError when the addon is registered.

Suggested change
from bpy.props import IntProperty
from bpy.props import IntProperty, FloatProperty

Copilot uses AI. Check for mistakes.
)
self._worker.start()

logger.warning(f"Telemetry initialized (enabled={self.config.enabled}, has_supabase={HAS_SUPABASE}, customer_uuid={self._customer_uuid})")
Copy link

Copilot AI Nov 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using logger.warning() for informational telemetry messages (lines 96, 113, 178, 181, 184) is incorrect. These should use logger.info() or logger.debug() instead, as they are not actual warnings that need user attention.

Suggested change
logger.warning(f"Telemetry initialized (enabled={self.config.enabled}, has_supabase={HAS_SUPABASE}, customer_uuid={self._customer_uuid})")
logger.info(f"Telemetry initialized (enabled={self.config.enabled}, has_supabase={HAS_SUPABASE}, customer_uuid={self._customer_uuid})")

Copilot uses AI. Check for mistakes.
logger.warning(f"Supabase not available, skipping event: {event_type}")
return

logger.warning(f"Recording telemetry event: {event_type}, tool={tool_name}")
Copy link

Copilot AI Nov 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using logger.warning() for informational telemetry messages is incorrect. These should use logger.info() or logger.debug() instead, as they are not actual warnings that need user attention.

Suggested change
logger.warning(f"Recording telemetry event: {event_type}, tool={tool_name}")
logger.info(f"Recording telemetry event: {event_type}, tool={tool_name}")

Copilot uses AI. Check for mistakes.
}

response = supabase.table("telemetry_events").insert(data, returning="minimal").execute()
logger.debug(f"Telemetry sent: {event.event_type}")
Copy link

Copilot AI Nov 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Variable response is not used.

Suggested change
logger.debug(f"Telemetry sent: {event.event_type}")
logger.debug(f"Telemetry sent: {event.event_type}, response: {response}")

Copilot uses AI. Check for mistakes.
temp_dir = tempfile.mkdtemp(prefix="tencent_obj_")
zip_file_path = osp.join(temp_dir, "model.zip")
obj_file_path = osp.join(temp_dir, "model.obj")
mtl_file_path = osp.join(temp_dir, "model.mtl")
Copy link

Copilot AI Nov 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Variable mtl_file_path is not used.

Copilot uses AI. Check for mistakes.
from urllib.parse import urlparse

# Import telemetry
from .telemetry import record_startup, get_telemetry
Copy link

Copilot AI Nov 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Import of 'get_telemetry' is not used.

Suggested change
from .telemetry import record_startup, get_telemetry
from .telemetry import record_startup

Copilot uses AI. Check for mistakes.
"""

import contextlib
import json
Copy link

Copilot AI Nov 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Import of 'json' is not used.

Suggested change
import json

Copilot uses AI. Check for mistakes.
data = tomli.load(f)
return data["project"]["version"]
except Exception:
pass
Copy link

Copilot AI Nov 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'except' clause does nothing but pass and there is no explanatory comment.

Suggested change
pass
# Log the exception but return "unknown" as a fallback
logger.exception("Failed to read version from pyproject.toml")

Copilot uses AI. Check for mistakes.
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.

4 participants