MDriven v7.0.x - April 2025
Released: May 8, 2025
Mises à jour de v7.0.x - April 2025
Fonctionnalités
Designer
- Enhancements
- Advanced Styling: Major updates, including LLM support and fast-track CSS, to enhance styling capabilities.
- OCL Editor Assistance: The OCLEditor has a new "Second pair of eyes" option, powered by LLM, to help identify expression issues.
- ViewModel Analysis: Added Extras/ViewModelPlan - new experimental functionality to use LLM to help in ViewModel analysis.
- Variable Dialog Improvement: The Add variable dialog now features an "As-collection" checkbox, streamlining the selection process.
- Enum Ordinal Values in OCL: In OCL, EnumOrd now populates with the ordinal number of the enumerated value (0,1,2) for expressions like MyEnum.allinstances.EnumOrd.
- OCL Enum Comparison: OCL now allows comparison between Enum.value and integer, falling back to EnumOrd.
- Rescue Operations: Added "Move column out of conflict position" as a new Rescue operation.
- ViewModel ShownByAction: ViewModel ShownByAction now indicates if it is popup, modal, or normal.
- LiveEdit Tab: New Tab in LiveEdit - advanced-styling, work in progress.
- ViewModel Plan Updates: Updates to ViewModelPlan info.
- Design Changed Styles: Sent design changed styles are now sent when any theme measure, theme color, or style exists in the model.
Framework
- Enhancements
- Advanced Styling: Major updates with LLM support and fast-track CSS.
- Singleton Fetching: ExtentService has two new methods:
- IObject Singleton(IClass c): Fetches or creates a singleton instance.
- T Singleton() where T : class, IEcoObject: Fetches or creates a singleton instance with a generic type.
- OCL Editor Assistance: OCLEditor has a new "Second pair of eyes" option that helps to spot issues with expressions (LLM powered).
- Action Enable Expression Logging: Added the enable expression that gives false in the log when the server-side action is not allowed to run.
- Native Type Combo Box: When listing native type values in a combo box and trying to assign one by pick, Turnkey now behaves better for datetime, bool, int, double, and decimal.
- SelfVM Logging:
- selfVM.LogEntry('say something') will output a row in MDrivenServer-log, Turnkey-log, and debugger OCL-trace.
- selfVM.LogEntry fixes.
- RESTful API Enhancements:
- Added special name BYTEARRAYCONTENT to upload a single blob (no multipart content) with restPut, post, and patch. Works the same as STRINGCONTENT.
- RestHead OCL operator added to only request headers from an external service.
- vResponseHeaders variable: When found and a Rest call is made, this variable is populated with a return-separated list of header name:header-value.
- Command Timeout: CommandTimeout option added to SQLImport and SQLExport functions in MDrivenServer.
Turnkey
- Enhancements
- Advanced Styling: Major updates to advanced styling with LLM support and fast-track CSS.
- Web UI Alt-Key Navigation: Implementation of Alt-key in Web-UI (Blazor and Angularjs). First tries to focus toolbar, then main menu, and if already at the first item in either, tries the other.
- AngularJS Popups: Reworked the use of transform in Turnkey Angularjs to use flex, resolving blurry font issues in popups.
- StringFormatAngular Enhancement: Introduced numberhash:dec for StringFormatAngular, where number:2 is two decimals, but the new numberhash:2 is two decimals unless there are more decimals (e.g., 0.00#).
- Binary Data Support: Added ability to post binary data to Turnkey exposed Rest service. Added single column BYTEARRAYCONTENT that receives blob, following the pattern of string data STRINGCONTENT - if the uploaded content is not a Form-record these 2 types are checked instead.
- MDrivenServer Communication Logging: When the MDrivenServer was "Not Started" or unreachable, the Turnkey-log previously showed nothing. Now, TK log will clearly reflect communication breach with MDrivenServer.
- Exception Tracking: SysTurnkeyTrace now also tracks Exceptions in the same structure as navigations.
Correctifs
Designer
- UI & Usability Fixes
- LiveEdit Tree Splitter: Issue with LiveEdit tree splitter fixed.
- Turnkey Hotkey: Issue with Ctrl+Enter Turnkey hotkey showing Save even when nothing to save is fixed.
- Turnkey Angular Double-Click: Issue with Turnkey angular double-click execute of a single action that navigates when holding control not opening in a new tab is fixed.
- Blazor Shortcut Keys: Fixed "Asking before escaping" in Blazor shortcut keys.
- LiveEdit GoView: LiveEdit GoView did not work correctly - fixed.
- Tagged Values Dialog: Resolved strange ghost drags on columns and placing containers after opening the TaggedValuesDialog from a column's TV link.
- ActionDefinition View: Removed the old ActionDefinition view.
- Performance & Stability Improvements
- WebView2 in LiveEdit:
- Handled issue with WebView2 in LiveEdit being initiated too early.
- Resolved deadlock issue when WebView2 sends a shortcut to MDrivenDesigner while MDriven starts a save, preventing the wait animation loop. Shortcuts from the web browser are now blocked.
- Angular Client Control Keys: Fixed an issue in the Angular client where control keys did not fully execute their after-action due to a roundtrip fillup.
- Debugger & SQLite: Fixed issues with the Debugger form and SQLite.
- SQL Start Exception Handling: Implemented exception catching during SQL start to prevent the SQLink common issue from halting MSSql usage.
- MDrivenServer Ticket Time: MDrivenServer SysAsyncTicket now uses utcNow instead of server now, and the model's file format has been updated.
- .NET Framework Updates: Updates to enable MDriven VS2022 on ARM64, requiring .netFramework48 and VS 2022 (Version 17.13.6). .netFramework472 and older are no longer supported; .netFramework48 is now the minimum target. Users must update VS2022 and MDriven NuGets and ensure their projects target .netFramework48.
- Namespace Issues: Namespace issues have been resolved.
- Bug Fixes
- Nuget Packages:
- Azure.Core, Version=1.45
- System.ClientModel, Version=1.2.1
- System.Runtime.CompilerServices.Unsafe, Version=6.0.1.0
- System.Threading.Tasks.Extensions, Version=4.2.1.0
- System.Runtime, Version=4.3.1
- System.Security.Cryptography.ProtectedData, Version=6.0.0
Framework
- Bug Fixes
- Angular Client Control Keys: Issue in the Angular client where control keys did not fully do their after-action due to a roundtrip fillup is fixed.
- Variable Dialog: Add variable-dialog now offers an "As-collection" checkbox instead of having all the types all the time.
- Tuple Cloning in Debugger: Issue in the debugger when cloning ViewModel variables and one is a Tuple is fixed.
- Action Enable Expression Evaluation: A recent fix for actions accidentally broke evaluation if the action enable expression was empty - fixed.
- Theme Upload: Theme upload did not happen unless there was a style - fixed.
- Turnkey Development Service: The Turnkey/Development?view= service was untested and failed in certain cases. Fixed.
- Keyboard Shortcuts: Changes for keyboard shortcuts for Save (Ctrl+S), SaveAndLock (Ctrl+Enter), EditMode (Ctrl+E), CancelAndLock (Esc), undo (Ctrl+Z), redo (Ctrl+Y) in Angularjs and Blazor-client.
- DisplayMode Change Signaling: DisplayMode did not correctly signal change when changed - fixed.
- SelfVM.CanExecute: selfVM.CanExecute ran into a problem when evaluating a placed button's enable expression if the placed button was on sub-nesting and not pointing to an abstract action (then it wrongfully used the context of the sub-level - but in these cases, the context is vmroot). Fixed.
- SysViewStateCookie: SysViewStateCookie included the vSysReadOnlyMode variable - this was unintentional and it is not included in new SysViewStateCookies.
- Cache Invalidation: Cache Invalidation was revisited and an assumption was proved wrong and rectified - old manifests were too big due to this oversight.
- OclKindOf Operator: Discovered issue in in-memory OCL for OclKindOf (used internally to implement LINQ "is"). Class2.allInstances->select(GenSym_0|GenSym_0.Class1.OclIsKindOf(Class1A)) and self.Class1.OclIsKindOf(Class1A) gave true if single link "class1" was null - corrected in new builds.
- Nuget Packages:
- Azure.Core, Version=1.45.
- System.ClientModel, Version=1.2.1.
- System.Runtime.CompilerServices.Unsafe, Version=6.0.1.0.
- System.Threading.Tasks.Extensions, Version=4.2.1.0.
- System.Runtime, Version=4.3.1.
- System.Security.Cryptography.ProtectedData, Version=6.0.0.
- .NET Framework Updates: Updates to enable MDriven VS2022 on ARM64, this required .netFramework48 and late VS2022 (Version 17.13.6). Everything that WAS compiled with .netFramework472 has been raised to .netFramework48 (this does not concern things compiled with netStandard or netcore+ (net6,7,8)). THIS IS IMPORTANT: Update your VS2022, Update your MDriven Nugets, If you get build breaks check that YOUR THINGS TARGET at least .netFramework48.
Turnkey
- Bug Fixes
- Modal Grid Expansion: Missed style flex-grow for .tk-data-table.ctGridYBottom .tk-data-table__content which made modal grids not expand is fixed.
- Ctrl+Enter Hotkey: Issue with Ctrl+Enter Turnkey hotkey showing Save even when nothing to save is fixed.
- Angular Double Click Navigation: Issue with Turnkey angular double-click execute of a single action that navigates when holding control did not open in a new tab fixed.
- ViewModel ShownByAction: ViewModel ShownByAction will now show if it is popup, modal, or normal.
- Angular Client Control Keys: Issue in the Angular client where control keys did not fully do their after-action due to a roundtrip fillup is fixed.
- Variable Dialog: Add variable-dialog now offers an "As-collection" checkbox instead of having all the types all the time.
- Blazor Table Row Heights: Removed the Blazor-specific table row heights and harmonized them to the existing variables.
- SCSS Transpilation: Corrections in scss to ensure it can be correctly transpiled to css.
- Table Border Color: Table border color now uses a variable.
- "Are You Sure" Prompt: New keyboard shortcuts only ask "AreYouSure" if the data is dirty, and only actually save if dirty.
- AngularJS Escape Key: Escape key in AngularJS should now prompt "Are you sure?" before canceling.
- Blazor Escape Key: Fix of "Asking before escaping" in Blazor shortcut keys.
- Debugger Tuple Cloning: Issue in the debugger when cloning ViewModel vars and one is a Tuple is fixed.
- Keyboard Shortcuts: Changes for keyboard shortcuts for Save (Ctrl+S) SaveAndLock (Ctrl+Enter) EditMode (Ctrl+E) CancelAndLock (ESC) undo (Ctrl+z) redo (ctrl+y). This is in angularjs and Blazor-client.
- Blazor Datagrid Styling: Blazor datagrid styling better aligned with angular.
- SCSS Sidebar Width: scss sidebar width variable is now respected.
- .NET Framework Updates: Updates to enable MDriven VS2022 on ARM64 - this required .netFramework48 and late VS2022 (Version 17.13.6). Everything that WAS compiled with .netFramework472 has been raised to .netFramework48 (this does not concern things compiled with netStandard or netcore+ (net6,7,8)). THIS IS IMPORTANT: Update your VS2022, Update your MDriven Nugets, If you get build breaks check that YOUR THINGS TARGET at least .netFramework48.
- LiveEdit Tab: New Tab in LiveEdit - advanced-styling, work in progress.
Server
- Nuget package update:
- Azure.Core, Version=1.45.
- System.ClientModel, Version=1.2.1.
- System.Runtime.CompilerServices.Unsafe, Version=6.0.1.0.
- System.Threading.Tasks.Extensions, Version=4.2.1.0.
- System.Runtime, Version=4.3.1.
- System.Security.Cryptography.ProtectedData, Version=6.0.0.
- .NET Framework Updates: Updates to enable MDriven VS2022 on ARM64 - this required .netFramework48 and late VS2022 (Version 17.13.6) Everything that WAS compiled with .netFramework472 has been raised to .netFramework48 (this does not concern things compiled with netStandard or netcore+ (net6,7,8)) THIS IS IMPORTANT: Update your VS2022, Update your MDriven Nugets, If you get build breaks check that YOUR THINGS TARGET at least .netFramework48. Again, .netFramework472 and older are being left behind forever - use .netFramework48 as the minimum.
- Cache Invalidation: Cache Invalidation revisited and an assumption was proved wrong and rectified - old manifests were too big due to this oversight.
- MDrivenServer Ticket Time: MDrivenServer SysAsyncTicket now use utcNow instead of server now, and the new file format on model.