This release delivers a robust diagram versioning system, enhancing collaboration and design iteration. It integrates optimistic concurrency to prevent data conflicts, refactors diagram rendering for dynamic scope updates, and simplifies user interaction with diagram scopes through clearer terminology and automated naming. The changes are supported by new backend services, comprehensive testing, and necessary database migrations.
Highlights
- Diagram Version Control System: Introduced a comprehensive version control system for diagrams, allowing users to save, restore, delete, and promote immutable snapshots of their diagram layouts. This includes new UI components for version management and new API routes for all version operations.
- Optimistic Concurrency: Implemented optimistic concurrency control using HTTP ETag/If-Match headers for diagram layout saves and version restores. This prevents data loss from concurrent edits by multiple users or sessions, providing clear conflict resolution in the UI.
- Dynamic Scope Management: Refactored diagram rendering logic to gracefully handle dynamic scope changes, such as those resulting from version restores that alter the diagram's filter group. This ensures the canvas updates correctly without full page reloads.
- Diagram Scope Terminology & Auto-Naming: Updated UI terminology from 'Filter Group' to 'Diagram Scope' for clarity and simplified user experience. Backend now auto-generates unique names for diagram-owned sub-groups and version snapshots, removing the need for users to manually name these internal components.
- New Repositories and Utilities: Added
SubGroupRepositoryfor cloning and managing sub-groups,DiagramLayoutVersionRepositoryfor handling diagram layout versions, and client-side utilities for ETag and layout ID management. This provides a robust foundation for diagram data integrity. - Enhanced Testing and Migrations: Included new integration and unit tests for the version control and scope management features. New database migrations and cleanup scripts were added to support the schema changes and ensure data consistency, including orphaned version sub-group cleanup.