Releases: goadesign/model
v1.11.2
Bug Fix: Fixed webapp rendering error that prevented the graphical editor from loading
- Resolved a critical runtime error: TypeError: (j[r.toLowerCase(...)] || j.rectangle) is not a function
- Fixed shape fallback compatibility between Go backend and frontend
- The graphical editor now loads correctly when using Shape(ShapeBox) in Go DSL code
Background: This issue was introduced in v1.11.0 during the graphical editor enhancement. The frontend code
was changed to expect Rectangle as the default shape, but the Go backend continued to serialize ShapeBox as
"Box", causing a mismatch that broke editor rendering.
Impact: Users with models using box shapes (the default shape type) could not load the graphical editor. This
particularly affected:
- Models using the default shape styling
- Code explicitly using Shape(ShapeBox)
- The shapes example in /examples/shapes/
Thanks to https://github.com/Not4sure for identifying and reporting this issue!
This release maintains full backward compatibility with existing Go DSL code while restoring editor
functionality.
v1.11.1
What's Changed
Fix build issue with v1.11.0 by @raphael in #943
v1.11.0 Release Notes:
Model v1.11.0 Release Notes
Major Graphical Editor Overhaul
This release represents a significant step forward for the Model graphical editor. We've completely redesigned the user interface and added a comprehensive set of productivity features that make working with architecture diagrams much more efficient.
The most visible change is the new modern toolbar that organizes all editor functions into logical groups. Each button now includes helpful tooltips that show the appropriate keyboard shortcuts for your platform (Cmd on Mac, Ctrl on PC). The toolbar provides visual feedback when features like grid visibility or snap-to-grid are active, making it easier to understand the current editor state.
One of the biggest workflow improvements is the new drag mode system. The editor now has two distinct modes that you can toggle between with the T key or the toolbar button. In select mode, clicking and dragging lets you select elements and move them around - this is perfect when you're actively positioning elements in your diagram. In pan mode, clicking and dragging moves the entire view around, which is ideal when you're navigating large diagrams or just reviewing your work. The cursor changes to indicate which mode you're in, and the toolbar button shows the current state. This eliminates the frustration of accidentally moving elements when you meant to pan the view, or vice versa.
We've introduced a full grid system that transforms how you position elements. You can toggle the grid overlay on and off, enable snap-to-grid for precise alignment, and even snap all existing elements to the grid with a single command. This makes creating clean, professionally aligned diagrams much easier.
The keyboard shortcut system has been completely overhauled with cross-platform support. You can now align elements horizontally and vertically, distribute them with equal spacing, move them with fine or coarse precision, and control every aspect of the grid system without touching the mouse. The editor also supports comprehensive zoom controls and a full undo/redo system.
Multi-element selection has been improved with better visual feedback and more intuitive behavior. You can select multiple elements by shift-clicking or dragging a selection box, then use the alignment and distribution tools to organize them precisely. The selection behavior respects the current drag mode - in select mode, shift-dragging creates a selection box, while in pan mode, the same gesture pans the view.
We've also enhanced the overall user experience with dynamic page titles that show the current view name in your browser tab, making it easier to work with multiple diagrams. The build process for the web application has been streamlined, and we've updated various dependencies to improve performance and security.
Technical Details
The editor now includes comprehensive keyboard shortcuts for all major functions:
- File operations (save, undo, redo)
- Element selection and movement with both fine and coarse control
- Alignment and distribution tools
- Grid system controls
- Zoom and navigation
- Auto layout and drag mode switching
This release maintains full backward compatibility with existing models and workflows. All your existing diagrams will continue to work exactly as before, but you'll have access to much more powerful editing capabilities.
The changes in this release complete several items from our feature roadmap, including the grid system, keyboard shortcuts for alignment, toolbar integration, cross-platform support, and dynamic page titles.
Full Changelog: v1.10.0...v1.11.1
v1.11.0
Model v1.11.0 Release Notes
Major Graphical Editor Overhaul
This release represents a significant step forward for the Model graphical editor. We've completely redesigned the user interface and added a comprehensive set of productivity features that make working with architecture diagrams much more efficient.
The most visible change is the new modern toolbar that organizes all editor functions into logical groups. Each button now includes helpful tooltips that show the appropriate keyboard shortcuts for your platform (Cmd on Mac, Ctrl on PC). The toolbar provides visual feedback when features like grid visibility or snap-to-grid are active, making it easier to understand the current editor state.
One of the biggest workflow improvements is the new drag mode system. The editor now has two distinct modes that you can toggle between with the T key or the toolbar button. In select mode, clicking and dragging lets you select elements and move them around - this is perfect when you're actively positioning elements in your diagram. In pan mode, clicking and dragging moves the entire view around, which is ideal when you're navigating large diagrams or just reviewing your work. The cursor changes to indicate which mode you're in, and the toolbar button shows the current state. This eliminates the frustration of accidentally moving elements when you meant to pan the view, or vice versa.
We've introduced a full grid system that transforms how you position elements. You can toggle the grid overlay on and off, enable snap-to-grid for precise alignment, and even snap all existing elements to the grid with a single command. This makes creating clean, professionally aligned diagrams much easier.
The keyboard shortcut system has been completely overhauled with cross-platform support. You can now align elements horizontally and vertically, distribute them with equal spacing, move them with fine or coarse precision, and control every aspect of the grid system without touching the mouse. The editor also supports comprehensive zoom controls and a full undo/redo system.
Multi-element selection has been improved with better visual feedback and more intuitive behavior. You can select multiple elements by shift-clicking or dragging a selection box, then use the alignment and distribution tools to organize them precisely. The selection behavior respects the current drag mode - in select mode, shift-dragging creates a selection box, while in pan mode, the same gesture pans the view.
We've also enhanced the overall user experience with dynamic page titles that show the current view name in your browser tab, making it easier to work with multiple diagrams. The build process for the web application has been streamlined, and we've updated various dependencies to improve performance and security.
Technical Details
The editor now includes comprehensive keyboard shortcuts for all major functions:
- File operations (save, undo, redo)
- Element selection and movement with both fine and coarse control
- Alignment and distribution tools
- Grid system controls
- Zoom and navigation
- Auto layout and drag mode switching
This release maintains full backward compatibility with existing models and workflows. All your existing diagrams will continue to work exactly as before, but you'll have access to much more powerful editing capabilities.
The changes in this release complete several items from our feature roadmap, including the grid system, keyboard shortcuts for alignment, toolbar integration, cross-platform support, and dynamic page titles.
Full Changelog: v1.10.0...v1.11.0
v1.10.0
Model 1.10.0 Release Notes
Model 1.10.0 introduces relationship coalescing for architectural diagrams, along with infrastructure updates and code quality improvements. This release maintains full backward compatibility while adding powerful new features for managing complex diagrams.
New Features
Relationship Coalescing in Views
The biggest addition in this release is comprehensive relationship coalescing functionality for System Landscape and System Context views. When you have multiple relationships between the same source and destination elements, you can now merge them into a single, consolidated relationship.
What's included:
CoalesceRelationships(source, destination, [description], [technology])
- lets you explicitly control which relationships to mergeCoalesceAllRelationships()
- automatically consolidates all duplicate relationships in a view- Smart precedence handling where explicit coalescing takes priority over automatic coalescing
- Significant improvement to diagram clarity by reducing visual clutter
The implementation spans multiple files with over 575 lines of new code, including comprehensive test coverage. This addresses a common pain point when creating complex architectural diagrams that previously suffered from relationship proliferation.
Infrastructure and Maintenance
Go Version Update
Updated the Go version used by CI to ensure compatibility with the project's go.mod requirements. The project now requires Go 1.22.0 with toolchain go1.22.2, bringing improved performance and access to the latest language features.
Code Quality Improvements
Fixed various linting issues throughout the codebase to improve consistency and maintainability. These changes ensure better adherence to Go coding standards without affecting functionality.
Backward Compatibility
All existing Model DSL code will continue to work without changes. The new relationship coalescing features are entirely optional - you only use them when you want to clean up complex diagrams.
Getting Started with Relationship Coalescing
To use the new features, add coalescing calls to your view definitions:
SystemLandscape("example", func() {
// Merge specific relationships
CoalesceRelationships(userSystem, paymentSystem, "Financial transactions", "HTTPS")
// Or automatically merge all duplicate relationships
CoalesceAllRelationships()
})
Contributors
Thanks to @raphael for implementing the relationship coalescing feature, updating the CI infrastructure, and maintaining code quality across the project.
Full Changelog: v1.9.0...v1.10.0