Releases: tinystruct/tinystruct
v1.7.23
Key Features
- Automated Package Imports
The POJO generation pipeline is now fully autonomous. The generators (MySQL, MSSQL, SQLite, and H2) dynamically analyze table column types and inject the necessary Java imports into the generated code.
Automatic Detections:
java.time.LocalDateTime (for DATETIME, TIMESTAMP, DATETIME2)
java.util.Date (for DATE)
java.sql.Timestamp
java.sql.Time
Simplified CLI: The interactive prompt for manual package imports has been removed, reducing developer friction during the generate command execution.
2. Native LocalDateTime Support
Full support for java.time.LocalDateTime has been integrated into the data hydration layer.
Field Mapping: SQL types TIMESTAMP, DATETIME2, and SMALLDATETIME are now natively mapped to LocalDateTime.
Robust Hydration: The FieldInfo utility now handles conversions from both java.sql.Timestamp objects and ISO-compliant strings, ensuring compatibility across different JDBC drivers and database vendors.
3. Generator Architecture Refactoring
Interface Simplification: The Generator interface has been streamlined by removing the importPackages method, moving the responsibility of dependency management to the generators themselves.
Standardized Hydration: All generators now use a consistent, camelCase naming convention for hydration methods (e.g., localDateTimeValue()), improving codebase predictability.
Modern Syntax: Internal mapping logic now utilizes modern Java switch expressions for cleaner, more readable type-to-import resolution.
4. CLI & Dispatcher Polish
Code Clean-up: Significant refactoring of Dispatcher.java to improve code readability, fix indentation inconsistencies, and optimize help text formatting.
Improved Tooling: Enhanced the maven-wrapper extraction process and standardized solution guidance for common issues like ClassNotFoundException.
v1.7.22
v1.7.21
v1.7.20
v1.7.19: fix: update version to 1.7.19 and upgrade dependencies
- Version: Bump project version from 1.7.18 to 1.7.19 across pom.xml, scripts, and documentation. - Documentation: Update version references in README.md and DEVELOPER_GUIDE.md. - Application: Update VERSION constant in ApplicationManager.java. - Scripts: Update version variables in bin/dispatcher, bin/dispatcher.cmd, and build.sh. - Dependencies: Upgrade lettuce.version to 7.5.0.RELEASE. - Dependencies: Upgrade sqlite.version to 3.51.3.0. - Dependencies: Upgrade mockito.version to 5.23.0.
v1.7.18
Features & Enhancements
- Application: Implemented named parameter matching in ActionRegistry.
- Security: Added clock skew support (using timezone) and enhanced secret configuration in JWTManager, alongside new test coverage.
- HTTP Client: Migrated HTTPHandler to use the native Java HttpClient, and added asynchronous/Server-Sent Events (SSE) improvements.
- HTTP Server: Improved error handling and HTTP status code mapping in HttpServer.
- System/Core: Refined the DistributedLock implementation and added a new LockTimeoutAccuracyTest.
Dependencies & Maintenance
- Upgraded project dependencies.
- Updated copyright year and owner information in the LICENSE file and removed the redundant LICENSE-2.0.txt.
- Added .gitignore rules for drawio backups.
Documentation
- Updated the DEVELOPER_GUIDE.md with new project documentation.
- Updated README.md and added a CodeQL badge.
v1.7.17
feat(core,repository,docs): add developer guide, improve ID generation and SQL handling
Add comprehensive DEVELOPER_GUIDE.md
Bump version to 1.7.17 and update related scripts and docs
Support returning user-generated IDs when "generate"=true across MySQL, SQLite, SQLServer, and Redis
Unify appendAndGetId behavior: fallback to DB-generated ID only if no custom ID is provided
Improve SQL parameter binding and add support for LONGTEXT and BOOLEAN
Fix auto-increment field skipping logic in prepared statements
Tighten Action mode validation to prevent CLI/HTTP misuse. Thanks @yyfyfyang
Improve SQL formatting, Javadoc wrapping, and general code style
Minor refactors and dependency upgrade (Jupiter 6.0.2)
v1.7.16: Release version 1.7.16 of the tinystruct framework
feat: improve session management and refactor MCP implementation BREAKING CHANGES: - Renamed MCPServerApplication to MCPServer for consistency - Made AbstractMCPResource.executeLocally() abstract, requiring implementations - Removed registerToolMethods() - now integrated into registerTool() Session Management: - Add multi-session support with session-specific state tracking - Implement ThreadLocal-based session ID management - Add Mcp-session-id header handling for session persistence - Replace single sessionState with per-session state map - Properly cleanup session context in finally blocks Client Improvements: - Refactor HTTP communication to use URLRequest/URLResponse - Improve SSE event stream handling with functional approach - Add session ID capture and reuse across requests - Better error handling and connection management Protocol & Standards: - Update protocol version constant to PROTOCOL_VERSION - Standardize server name to "tinystruct-mcp" - Add SESSION_ID constant to Http class - Use Header enum for standard HTTP headers - Remove TOKEN_PARAM in favor of Authorization header Code Quality: - Add missing executeLocally() implementations in MCPDataResource and MCPTool - Improve documentation and formatting - Remove unused mimeType variable in resource discovery - Better separation of concerns in request handling Examples & Documentation: - Update README with new API usage patterns - Add batch request and error handling examples - Document session management features - Update all code examples to use MCPServer - Add comprehensive usage examples for CLI client
v1.7.15: Release tinystruct 1.7.15
- Fix Action method argument binding for Request/Response - Correct args[] indexing with context-aware parameters - Update version numbers across build, scripts, and docs
v1.7.14: Bump tinystruct version to 1.7.14 and improve core modules
- Update README, pom.xml, dispatcher scripts, and ApplicationManager to reflect version 1.7.14 - Refactor AbstractApplication for improved readability and consistent formatting - Multi-line ternary and method call formatting - Use `config.getOrDefault` for DEFAULT_BASE_URL - Switch `actionRegistry.paths().contains` to `validate(path)` for robust path checking - Enhance ActionRegistry - Make `paths` thread-safe - Add `validate(path)` method for path checking - Minor formatting and method signature adjustments - Improve ConnectionManager reliability - Track dead connections and avoid reusing them - Handle EOFException during send and mark connection as dead - Update connection validation and expiration checks - Refactor HttpServer CORS handling - Support dynamic allowed origins and credentials - Preflight OPTIONS responses now properly closed with 204 status