Changelog¶
All notable changes to SharedTools will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]¶
Added¶
DnsTool— DNS resolution (A, AAAA, MX, NS, TXT, CNAME, reverse, all), WHOIS queries for domains and IPs, external IP detection via public services, and IP geolocation via ip-api.com. No API key required.CurrentDateTimeTool— Returns the real current date, time, and day of week from the system clock, preventing LLMs from hallucinating temporal information.DataScienceKit— Statistical summary, correlation analysis, time series, clustering, and prediction. Accepts both file paths (data_source) and inline data (data) in pipe-delimited, CSV, JSON, or comma-separated number formats. All computation is real, not simulated.SystemInfoTool— Hardware and OS information (CPU, memory, disk, platform).ClipboardTool— Read and write the system clipboard.CronTool— Cron expression parsing and next-run time calculation.WorkflowManagerToollistaction — enumerate all existing workflows with status, step count, and timestamps.DocTooldocx_readaction — read text content from Microsoft Word (.docx) files, with optional paragraph range. Requires thedocxgem.DocToolspreadsheet_readaction — read tabular data from CSV, XLSX, ODS, and XLSM files with sheet selection, row range, and header control. Requires theroogem.DocTooltext_readaction — read plain text files without any external gem dependency.examples/common.rb— shared helper providingtitle,ask,new_chat, and@chatfor all demo scripts.- All example scripts renamed from
*_example.rbto*_demo.rbfor consistency.
Changed¶
- Changing direction. Beginning with 0.3.0 will only support RubyLLM framework
WeatherTooldemo updated to include a local forecast section combiningDnsTool(external IP → geolocation) andCurrentDateTimeTool(real day of week) withWeatherTool.
Removed¶
DevopsToolkit— removed entirely. All operations were simulated and provided no real system interaction. The tool, its loader shim, its test file, and all demo/documentation references have been deleted.
Deprecated¶
- Support for OmniAI framework (use RubyLLM instead)
- Support for llm.rb framework (use RubyLLM instead)
- Support for Raix framework (use RubyLLM instead)
[0.2.1] - 2025-07-03¶
Fixed¶
- iMCP server app for MacOS is noisy logger, now redirects stderr to /dev/null
[0.2.0] - 2025-07-01¶
Added¶
ruby_llm/mcp/github_mcp_server.rbexample integrationSharedTools.mcp_serversas an Array to track MCP server instances- Class method
nameto all tool classes (snake_case of class name) ruby_llm/mcp/imcp.rbfor MacOS app integrationruby_llm/incomplete/directory with under-development example tools
Changed¶
- Tool naming convention now consistent across all tools
[0.1.3] - 2025-06-18¶
Fixed¶
- Tweaked the load-all-tools process for better reliability
[0.1.2] - 2025-06-10¶
Added¶
- Zeitwerk gem for automatic code loading
Changed¶
- Migrated from manual requires to Zeitwerk autoloading
[0.1.0] - 2025-06-05¶
Initial gem release
Added¶
- SharedTools core module with authorization system
- Human-in-the-loop confirmation (
SharedTools.execute?) - RubyLLM tool implementations:
EditFile: Edit files with find/replaceListFiles: Directory listingPdfPageReader: PDF content extractionReadFile: File reading with error handlingRunShellCommand: Shell command execution- Framework detection system
- Logger integration with RubyLLM
- Zeitwerk autoloading support
- Basic documentation and examples
Version History Format¶
Each version should document changes in these categories:
Added¶
New features and capabilities
Changed¶
Changes to existing functionality
Deprecated¶
Features that will be removed in future versions
Removed¶
Features that have been removed
Fixed¶
Bug fixes
Security¶
Security-related changes
Migration Guides¶
Migrating to 0.3.0 (RubyLLM Only)¶
Breaking Change: Version 0.3.0 drops support for OmniAI, llm.rb, and Raix.
Before (0.2.x with OmniAI)¶
require 'omniai'
require 'shared_tools'
# Tools were loaded based on framework detection
tools = SharedTools.tools_for(:omniai)
After (0.3.0 with RubyLLM)¶
require 'ruby_llm'
require 'shared_tools'
# All tools now extend RubyLLM::Tool
agent = RubyLLM::Agent.new(
tools: [
SharedTools::Tools::BrowserTool.new,
SharedTools::Tools::DiskTool.new
]
)
Required Changes¶
-
Update Gemfile:
-
Update Tool Initialization:
-
Update Custom Tools:
Why This Change?¶
- Focus: Better to support one framework well than many frameworks poorly
- Maintenance: Reduces maintenance burden significantly
- Features: Enables RubyLLM-specific features and optimizations
- Simplicity: Clearer codebase and documentation
Need Help?¶
- Open an issue on GitHub for migration assistance
- Check the RubyLLM documentation
- Review our examples directory for updated examples
Release Process¶
For maintainers releasing a new version:
1. Update Version¶
Edit lib/shared_tools/tools/version.rb:
2. Update This Changelog¶
Add new version section with changes:
## [X.Y.Z] - YYYY-MM-DD
### Added
- New feature description
### Changed
- Change description
### Fixed
- Bug fix description
3. Commit Changes¶
4. Create Git Tag¶
5. Build and Push Gem¶
6. Create GitHub Release¶
- Go to GitHub Releases
- Create new release from tag
- Copy changelog section for this version
- Publish release
Semantic Versioning¶
SharedTools follows Semantic Versioning:
- MAJOR (X.0.0): Breaking changes
- MINOR (0.X.0): New features, backwards compatible
- PATCH (0.0.X): Bug fixes, backwards compatible
Breaking Changes¶
Breaking changes (major version bumps) include:
- Removing or renaming public APIs
- Changing method signatures
- Removing tools
- Changing default behavior in incompatible ways
- Dropping framework support
New Features¶
New features (minor version bumps) include:
- Adding new tools
- Adding new actions to existing tools
- Adding optional parameters
- Adding new drivers
- Performance improvements
Bug Fixes¶
Bug fixes (patch version bumps) include:
- Fixing crashes
- Fixing incorrect behavior
- Documentation fixes
- Test improvements
- Performance optimizations (minor)
Version Support¶
| Version | Status | Ruby Version | RubyLLM Version | End of Support |
|---|---|---|---|---|
| 0.3.x | Active | 3.0+ | 0.4+ | TBD |
| 0.2.x | Maintenance | 3.0+ | 0.3+ | 2025-12-31 |
| 0.1.x | Unsupported | 3.0+ | 0.2+ | 2025-06-30 |
Support Levels¶
- Active: Full support, new features, bug fixes
- Maintenance: Critical bug fixes and security updates only
- Unsupported: No updates, use at your own risk
Upgrade Policy¶
Minor Version Updates¶
Can be done safely:
Major Version Updates¶
Require code changes:
- Review changelog for breaking changes
- Check migration guide
- Update code as needed
- Test thoroughly
- Deploy
Deprecation Policy¶
Features marked as deprecated:
- Announcement: Deprecated in changelog
- Warning Period: At least one minor version
- Removal: In next major version
Example:
0.2.0: Feature X deprecated (warning)
0.2.x: Feature X still works with warning
0.3.0: Feature X removed (breaking change)
Contributing to Changelog¶
When contributing:
- Add your changes to [Unreleased] section
- Use appropriate category (Added, Changed, Fixed, etc.)
- Write clear, user-focused descriptions
- Link to issues/PRs when relevant
- Maintainers will move to versioned section on release
Example:
## [Unreleased]
### Added
- New ComputerTool for system automation ([#123](https://github.com/user/repo/pull/123))
### Fixed
- BrowserTool now handles missing elements gracefully ([#124](https://github.com/user/repo/issues/124))
Historical Releases¶
See GitHub Releases for:
- Full release notes
- Downloadable gems
- Source code archives
- Release checksums