mcghidra/CHANGELOG.md
Teal Bauer 28870e9b54 feat: Improve data manipulation API
- Add comprehensive data manipulation capabilities
- Implement separate pathways for rename-only, type-only, and combined operations
- Fix HTTP request body consumption issue in DataEndpoints
- Standardize on 'type' parameter name instead of 'dataType'
- Add thorough test coverage with dedicated test_data_update.py script
- Update API documentation to version 2 with full endpoint descriptions
- Update CHANGELOG with detailed information about data manipulation features
2025-04-14 19:24:14 +02:00

163 lines
6.3 KiB
Markdown

# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [Unreleased]
### Added
- Complete Ghidra HTTP API implementation:
- Memory operations (read/write)
- Cross-reference analysis
- Program analysis (callgraph, dataflow)
- Enhanced decompiler controls:
- Raw output vs clean pseudocode
- Syntax tree visibility
- Multiple simplification styles
- Comprehensive API documentation (GHIDRA_HTTP_API.md, MCP_BRIDGE_API.md)
- Standardized JSON response formats
- Implemented `/plugin-version` endpoint for version checking
- Added proper error handling for when no program is loaded
- Implemented HATEOAS-driven API as described in GHIDRA_HTTP_API.md:
- Added `/programs` and `/programs/{program_id}` endpoints
- Implemented program-specific resource endpoints
- Added pagination support with metadata
- Added filtering capabilities (by name, address, etc.)
- Implemented proper resource linking with HATEOAS
- Added disassembly endpoint for functions with HATEOAS links
- Enhanced parameter validation in MCP bridge tools
- Added comprehensive data manipulation capabilities:
- Data renaming (changing only the name)
- Data type setting (changing only the type)
- Combined data update operations (changing both name and type)
- Dedicated `/data/type` and `/data/update` endpoints
- Standalone test script for data operations
### Changed
- Unified all endpoints to use structured JSON
- Improved error handling and response metadata
- Simplified bridge code and added type hints
- Updated port discovery to use DEFAULT_GHIDRA_PORT
- Refactored Java plugin into modular architecture:
- Separated concerns into api, endpoints, util, and model packages
- Created standardized response builders and error handlers
- Implemented transaction management helpers
- Added model classes for structured data representation
- Removed `port` field from responses (bridge knows what instance it called)
- Updated MCP bridge to use new HATEOAS API endpoints
- Enhanced MCP bridge tools to validate input parameters
- Improved response handling in MCP bridge for better error reporting
- **Breaking**: Removed backward compatibility with legacy endpoints, all endpoints now require strict HATEOAS compliance:
- All responses must include _links object with at least self reference
- Standardized JSON structures for all resource types
- Created comprehensive requirements documentation in HATEOAS_API.md
- Updated API documentation to version 2 with comprehensive endpoint descriptions
### Fixed
- Fixed endpoint registration in refactored code (all endpoints now working)
- Improved handling of program-dependent endpoints when no program is loaded
- Enhanced root endpoint to dynamically include links to available endpoints
- Added proper HATEOAS links to all endpoints
- Fixed URL encoding/decoding issues in program IDs
- Fixed transaction management in function operations
- Fixed inconsistent response formats in function-related endpoints
- Improved error handling for missing parameters in MCP bridge tools
- Fixed non-compliant endpoint responses:
- Added _links to /classes and /instances endpoints
- Updated /programs/current/segments to return list of segment objects
- Fixed decompile endpoint to return structured decompiled code
- Fixed disassembly endpoint to return structured instruction list
- Fixed variables endpoint to return proper variable structure
- Fixed data manipulation operations:
- Resolved HTTP request body consumption issue
- Fixed parameter naming inconsistency between "dataType" and "type"
- Improved preservation of names during data type changes
- Enhanced error handling for data operations
## [1.4.0] - 2025-04-08
### Added
- Structured JSON communication between Python bridge and Java plugin
- Consistent response format with metadata (timestamp, port, instance type)
- Comprehensive test suites for HTTP API and MCP bridge
- Test runner script for easy test execution
- Detailed testing documentation in TESTING.md
- Origin checking for API requests
- Mutating tests for API functionality
### Changed
- Improved error handling in API responses
- Enhanced JSON parsing in the Java plugin
- Updated documentation with JSON communication details
- Standardized API responses across all endpoints
- Improved version handling in build system
### Fixed
- Build complete package in `package` phase
- Versioning and naming of JAR files
- GitHub Actions workflow permissions
- Extension ZIP inclusion in complete package
- ProgramManager requirement
- Git tag fetching functionality
- MCP bridge test failures
## [1.3.0] - 2025-04-02
### Added
- Added docstrings for all @mcp.tool functions
- Variable manipulation tools (rename/retype variables)
- New endpoints for function variable management
- Dynamic version output in API responses
- Enhanced function analysis capabilities
- Support for searching variables by name
- New tools for working with function variables:
- get_function_by_address
- get_current_address
- get_current_function
- decompile_function_by_address
- disassemble_function
- set_decompiler_comment
- set_disassembly_comment
- rename_local_variable
- rename_function_by_address
- set_function_prototype
- set_local_variable_type
### Changed
- Improved version handling in build system
- Reorganized imports in bridge_mcp_hydra.py
- Updated MANIFEST.MF with more detailed description
## [1.2] - 2025-03-30
### Added
- Enhanced function analysis capabilities
- Additional variable manipulation tools
- Support for multiple Ghidra instances
### Changed
- Improved error handling in API calls
- Optimized performance for large binaries
## [1.1] - 2025-03-30
### Added
- Initial release of GhydraMCP bridge
- Basic Ghidra instance management tools
- Function analysis tools
- Variable manipulation tools
## [1.0] - 2025-03-24
### Added
- Initial project setup
- Basic MCP bridge functionality
[unreleased]: https://github.com/teal-bauer/GhydraMCP/compare/v1.4.0...HEAD
[1.4.0]: https://github.com/teal-bauer/GhydraMCP/compare/v1.3.0...v1.4.0
[1.3.0]: https://github.com/teal-bauer/GhydraMCP/compare/v1.2...v1.3.0
[1.2]: https://github.com/teal-bauer/GhydraMCP/compare/v1.1...v1.2
[1.1]: https://github.com/teal-bauer/GhydraMCP/compare/1.0...v1.1
[1.0]: https://github.com/teal-bauer/GhydraMCP/releases/tag/1.0