# Changelog All notable changes to mcilspy will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Calendar Versioning](https://calver.org/) for major releases. ## [0.2.0] - 2026-02-07 ### Security - **Fixed shell injection vulnerability** in SDK installation - replaced `create_subprocess_shell` with `create_subprocess_exec` using explicit argument lists - **Added subprocess timeout** (5 minutes) to prevent hanging on malicious/corrupted assemblies ### Added - **pytest test suite** with 35 tests covering models, metadata reader, and wrapper - **PATH auto-discovery** for ilspycmd - now checks `~/.dotnet/tools` when not in PATH - **FastMCP lifespan pattern** for proper dependency management ### Changed - **Version handling** now uses `importlib.metadata` - single source of truth in pyproject.toml - **Error messages** standardized across all tools using `_format_error()` helper - **Type parsing** improved with proper handling for nested types (`Outer+Nested`) - **Imports cleaned up** - removed duplicate `re` imports, added top-level import ### Fixed - **Global mutable state** replaced with FastMCP lifespan context pattern - **Type hints** added to all public methods - **Regex parsing** now logs unparsed lines instead of silently ignoring ## [0.1.1] - 2026-02-06 ### Added - dnfile-based metadata tools (search_methods, search_fields, search_properties, list_events, list_resources, get_metadata_summary) - Platform-aware installation tool with SDK detection - Improved README with badges and quick start guide ### Fixed - HeapItemBinary conversion in metadata reader - Property and event listing with proper row index handling ## [0.1.0] - 2026-02-05 ### Added - Initial release - FastMCP server wrapping ilspycmd - Tools: decompile_assembly, list_types, generate_diagrammer, get_assembly_info - check_ilspy_installation and install_ilspy helper tools