Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "simul",
"version": "0.0.43",
"version": "0.0.44",
"description": "3D simulation and DCC skills — scene setup, physics, materials, camera, scripting, and headless workflows for Isaac Sim, Unreal Engine, Blender, and USD",
"author": {
"name": "khemoo",
Expand Down
97 changes: 97 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: CI

# Security note: this workflow only references trusted inputs
# (matrix-defined Python version, github.ref, github.event_name)
# and never interpolates user-controlled fields (issue title, PR
# body, commit messages, head ref, etc.) into run: blocks. See
# https://github.blog/security/vulnerability-research/how-to-catch-github-actions-workflow-injections-before-attackers-do/
# for the patterns this workflow deliberately avoids.

on:
push:
branches: ["**"]
pull_request:
branches: [main]

# Cancel any in-flight push run when the matching PR event fires
# for the same ref — eliminates the duplicate-runs trap when a
# contributor pushes to a feature branch with an open PR.
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

# Principle of least privilege: this is a read-only test workflow
# (no deployments, no releases, no comments). Drop GITHUB_TOKEN
# down to read-only contents access.
permissions:
contents: read

jobs:
unit-tests:
name: Unit tests (Python ${{ matrix.python-version }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true

- name: Install project from uv.lock (with dev extras)
# uv sync respects uv.lock for reproducibility — the same
# transitive deps that local dev resolves are what CI runs.
# Without this, uv pip install would re-resolve from PyPI
# and a transitive break could flip CI red unrelated to
# the PR.
run: uv sync --extra dev

- name: Run unit tests
# The project's pyproject.toml addopts already bakes in
# `-m "not packaging"`, so the bare `pytest tests/`
# invocation skips the long-running wheel-build tests.
# Live engine tests (`isaac`, `unreal_live`) are gated by
# markers and skip automatically when the engine is not
# reachable.
run: uv run pytest tests/ --no-cov

packaging-gate:
# Pre-publish gate: builds the wheel and inspects its contents
# to catch regressions in iter14's bridge-ext bundling and
# iter15's exclude-package-data rule. Only runs on main + PRs
# to main since it's the slowest job (uv build per test).
# Note: a packaging-breaking change on a feature branch pushed
# without opening a PR will not be caught until the PR is
# created.
name: Packaging regression tests
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request'
steps:
- uses: actions/checkout@v4

- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true

- name: Install project from uv.lock (with dev extras)
run: uv sync --extra dev

- name: Run packaging-marker tests
# Override the addopts default `-m "not packaging"` by
# passing `-m packaging` last; pytest takes the LAST -m.
run: uv run pytest tests/packaging/ -m packaging --no-cov -v
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "simul-mcp"
version = "0.0.43"
version = "0.0.44"
description = "MCP server for 3D simulation and DCC tools — USD scene control, Isaac Sim, Blender, and Unreal Engine integration"
authors = [
{name = "khemoo"}
Expand Down
2 changes: 1 addition & 1 deletion src/simul_mcp/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
USD scene understanding, mesh operations, and runtime integration capabilities.
"""

__version__ = "0.0.43"
__version__ = "0.0.44"
__author__ = "khemoo"
__email__ = ""

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[package]
version = "0.0.43"
version = "0.0.44"
category = "Utility"
title = "Simul MCP Bridge"
description = "Production-oriented Isaac Sim bridge transport for Simul MCP with typed requests and VS Code fallback compatibility."
Expand Down
Loading