ReleaseNotes


Release Notes
Release notes
All the latest MDriven Fixes and Updates

MDriven - September 2024

Designer

  • Backwards Navigation: Introduced the BackwardsNav option in FrameworkAction to allow users to navigate back one step in the browser history. This is particularly useful for implementing a "Resume" button on the Timedout page.
  • WebView2 Temp Files: Relocated the WebView2 temporary files directory to SpecialFolder.CommonDocuments to mitigate potential issues when multiple users are running the application.
  • Save and Keep Open Button: Added an extra style to the new "Save and Keep Open" save button to improve its appearance.
  • WPF Issue: Fixed an issue in WPF that could result in an "Specified index is out of range or child at index is null" error.
  • Tagged Values Editing: The action dialog now includes a button to edit tagged values per action.
  • Blazor Support: Added support for the BLAZOR=true tagged value on view models to display views using Blazor.

Framework

  • Blazor Timeout Handling: Blazor now listens to timeouts and navigates to the Timedout page. It also improves Ctrl-click behavior.
  • Blazor Navigation: The BackwardsNav option in FrameworkAction has been added to allow users to navigate back one step in the browser history. This is particularly useful for implementing a "Resume" button on the Timedout page.
  • Angular Combobox Databinding: Changed databinding for combos in Angular to address an issue with binding to lists of strings.
  • Combobox Null Reference: Fixed a null reference issue with comboboxes when showing lists of strings, enums, or other non-object types.
  • Global Modal Options: Introduced a new GlobalModalOfferOpenStandalone setting to control the behavior of modal windows, including the ability to open them as standalone views.
  • User Sidebar Memory: Changed the default __UserSidebarShowMemory setting to true to improve the user experience.
  • .NET Core Server Behind Proxy: Improved handling of .NET Core servers behind a proxy by processing HTTP headers and avoiding private addresses.
  • Blazor Position: Added support for positioning vClientLatidute and vClientLongitude in Blazor.
  • Global Pop-up and Action Settings: Implemented GlobalCenteredPopUp and GlobalHideActionOnDisable in Blazor, and added the "Save & Lock" and "Save as" features on the server.
  • Global Settings: Added two new properties to SysMDrivenMiscSettingsSingleton: GlobalNavigateOnDoubleClickWithoutMenu and GlobalReadOnlyModeUseSaveAndLock.
  • OCL Editor: Improved handling of special characters like å, ä, ö, and ü in the OCL editor.
  • Blazor Grid: Resolved an issue with the choice between Textarea and Textfield in Blazor grids.
  • ReCreateClaims: The SysUserManager.ReCreateClaims method is now called for both password and JWT logins, not just for SAML2 and external logins.
  • IComponentTypeSwitchBroker: Introduced the IComponentTypeSwitchBroker interface in Blazor to allow for injection and replacement of components at the type level.
  • Search Total Count Text: Improved styling for the search total count text.
  • Combos Presenting Enums: Fixed an issue with combos presenting enums with nullrep that did not have an explicit presentation.
  • Global Settings in Blazor: Added support for working with global settings in Blazor, including _GlobalBlazorClientComponentOverride.
  • User Sidebar Memory: Made major updates to facilitate the __UserSidebarShowMemory setting, which controls the sidebar showing from the server.
  • getListForPageSize: Fixed null reference issues in getListForPageSize and updated __UserSidebarShowMemory.
  • Seeker Page Buttons: Improved the seeker page buttons to show the total number of rows and allow users to change the page size.
  • WebAssembly Interfaces: Updated WebAssembly interfaces to remove traces of scope.
  • Angular PageSize: Corrected the binding to the current page size in Angular seeker grids.
  • Checksum Issue: Fixed an issue with checksum calculations that could occur when running compiled generated code with sublevel packages.
  • getListForPageSize: Added getListForPageSize in JavaScript and used it by page buttons.
  • Angular Grid Issues: Fixed issues with _Visible and _ReadOnly properties in Angular grids.
  • SessionID and RemoteIPDetails: Moved SessionID and RemoteIPDetails to EcoController for wider use.
  • Attacker Probing: Implemented several countermeasures to reduce the impact of attacker probing.

Turnkey

  • Blazor Components: Kept Blazor components in EXT_ComponentsRazor and included scripts, CSS, and assemblies in the Blazor application at the top level.
  • RowSelect in Editable Grids: Fixed issues with row selection in editable grids when clicking within input elements.
  • RowSelect in Modal Grids: Fixed issues with row selection in modal grids.
  • Modal Window Line: Fixed an issue with the line above buttons in modal windows not stretching.
  • Leftside Menu Blinking: Implemented a solution to fix the issue with the leftside menu blinking when hidden and navigating.
  • Blazor Timeout Handling: Blazor now listens to timeouts and navigates to the Timedout page.
  • Open Modal Standalone Button: Moved the "Open Modal Standalone" button to the top and replaced it with the "Open in new" icon.
  • Combobox and Null Reference: Fixed a lingering issue with comboboxes and null references.
  • Angular Combobox Databinding: Changed databinding for combos in Angular to address an issue with binding to lists of strings.
  • Global Modal Options: Introduced a new GlobalModalOfferOpenStandalone setting to control the behavior of modal windows, including the ability to open them as standalone views.
  • NavigateOnSingleClickEnable: Implemented the NavigateOnSingleClickEnable setting for Angular.
  • .NET Core Server Behind Proxy: Improved handling of .NET Core servers behind a proxy by processing HTTP headers and avoiding private addresses.
  • Blazor Position: Added support for positioning vClientLatidute and vClientLongitude in Blazor.
  • Global Pop-up and Action Settings: Implemented GlobalCenteredPopUp and GlobalHideActionOnDisable in Blazor, and added the "Save & Lock" and "Save as" features on the server.
  • Global Settings: Added two new properties to SysMDrivenMiscSettingsSingleton: GlobalNavigateOnDoubleClickWithoutMenu and GlobalReadOnlyModeUseSaveAndLock.
  • EXT_ComponentsRazorPath: Clarified the correct path for EXT_ComponentsRazorPath.
  • ReCreateClaims: The SysUserManager.ReCreateClaims method is now called for both password and JWT logins, not just for SAML2 and external logins.
  • IComponentTypeSwitchBroker: Introduced the IComponentTypeSwitchBroker interface in Blazor to allow for injection and replacement of components at the type level.
  • Search Total Count Text: Improved styling for the search total count text.
  • ClassAction Modal Window: Fixed issues with bringing up a modal window from a ClassAction that is out-opted but referred in placed button.
  • Global Settings in Blazor: Added support for working with global settings in Blazor, including _GlobalBlazorClientComponentOverride.
  • Leftside Menu Blinking: Fixed an annoying leftside menu blinking issue in the Angular client when switching pages.
  • Attacker Probing: Implemented countermeasures to reduce the impact of attacker probing.
  • getListForPageSize: Added getListForPageSize in JavaScript and used it by page buttons.
  • Angular Grid Issues: Fixed issues with _Visible and _ReadOnly properties in Angular grids.
  • SessionID and RemoteIPDetails: Moved SessionID and RemoteIPDetails to EcoController for wider use.
  • Attacker Probing: Implemented several countermeasures to reduce the impact of attacker probing.

Server

.NET Core Server Behind Proxy: Improved handling of .NET Core servers behind a proxy by processing HTTP headers and avoiding private addresses.

MDriven - August 2024

This release includes a mix of new features, bug fixes, and improvements across Designer, Framework, and Turnkey.

Designer

  • Checksum Improvements:
    • Addressed a difference in checksum calculation when model constructors were introduced (Framework - Revision 15891).
    • Improved handling of missing model methods removed manually from code files (Designer - Revision 15830).
  • WPF DataGrid Fix: Resolved an issue where DataGrids only displayed a maximum of two rows (Designer - Revision 15877).
  • CodeGen Performance: Enhanced CodeGen performance by adding an await Dispatcher.Yield() (Designer - Revision 15872).
  • ActionEditor Enhancement: Added a "New" button to create new ViewModels within the ActionEditor (Designer - Revision 15850).
  • Other Bug Fixes:
    • Fixed various unspecified issues (Designer - Revision 15881, Revision 15877).

Framework

  • Debugger Enhancement: Improved error message clarity for failing expressions in the debugger (Framework - Revision 15894).
  • Cell-Level Read-Only Behavior: Addressed inconsistencies in cell-level read-only behavior (Framework - Revision 15892).
  • Blazor Integration:
    • Extensive work on Blazor integration, including numerous bug fixes and improvements (Framework - Revisions 15895, 15886, 15882, 15879, 15878, 15876, 15874, 15866, 15865, 15864, 15861, 15857, 15855, 15854, 15853, 15849, 15847, 15846, 15844, 15837, 15834, 15832, 15829, 15827, 15826, 15824, 15823, 15820, 15819, 15818, 15817, 15816, 15815, 15814, 15813, 15812, 15811). Key areas of focus include:
      • Pre-rendering checksums
      • View creation and re-rendering
      • Styling (buttons, grids)
      • Grid features (paging, columns, visibility)
      • Runtime CSS refresh
      • DataGrid improvements
      • External component import
      • Navigation and URL handling
      • Toolbar behavior on small screens
      • Folding menus and sections
    • Improved SoapCalls security by validating certificates, including support for self-signed certificates (Framework - Revision 15849).

Turnkey

  • Blazor Rendering: Optimized Blazor rendering by removing a redundant div level and shifting responsibility to components (Turnkey - Revision 15895).
  • AppReady Response: Modified AppReady server response behavior to hold for 10 seconds if needed, allowing clients to request directly without overloading the server (Turnkey - Revision 15893).
  • SkipWhenBacking Tag Respect: Ensured Turnkey Angular respects the SkipWhenBacking tagged value on ViewModels (Turnkey - Revision 15888).
  • vCurrent Bug Fix: Addressed a bug in vCurrent propagation for VMClass in nested Turnkey scenarios involving combo boxes (Turnkey - Revision 15884).
  • CSS Turnkey Change: Simplified the &.full-height CSS calculation for better compatibility with the toolbar (Turnkey - Revision 15862).
  • Other Bug Fixes and Improvements:
    • Introduced various bug fixes and improvements related to Blazor in Turnkey (Turnkey - Revisions 15893, 15888, 15856, 15854, 15853, 15846, 15845, 15835, 15832).

General

  • Updated Microsoft.AspNetCore.Components to version 8.0.8 (Framework - Revision 15866).

MDriven - July 2024

Designer

  • Blazor Enhancements:
    • Implemented error handling and helper text for improved user experience.
    • Fixed issues with ViewModelColumn editing in InplacePopup.
    • Added support for notifications in Blazor.
    • Introduced constraints for Blazor components.
    • Started development on InPlacePopup.
    • Improved TextArea and GlobalMenu visibility and enablement.
    • Implemented proper styling and visibility for PlacingCOntainer ListView.
    • Added double-click functionality and checkbox cell styling for grids.
    • Updated tk-checkbox for grid reuse and style updates.
    • Fixed Memcheck issues related to negative numbers.
    • Enabled file upload and image upload functionality.

Framework

  • NuGet Updates: Consolidated and updated NuGet packages for Microsoft.IdentityModel.JsonWebTokens, Microsoft.IdentityModel.Logging, Microsoft.IdentityModel.Tokens, System.Diagnostics.DiagnosticSource, System.IdentityModel.Tokens.Jwt, System.Text.Encodings.Web, System.Text.Json, System.Threading.Channels, and Microsoft.IdentityModel.Abstractions.
  • Blazor Improvements:
    • Resolved issues with the leftside menu blinking.
    • Integrated SignalR 8.0.7 and cleaned up old Blazor implementations.
    • Added support for sending TaggedValues with metadata and corrected PreventDefault for contextmenu.
    • Implemented ContextMenu functionality.
    • Added alert dialogs for various actions.
    • Introduced modal windows with OK/Cancel buttons.
    • Implemented leftside actions.
    • Added CenteredPopUp functionality.

Turnkey

  • Fixed spurious exceptions during style removal.
  • Introduced CenteredPopUp in MiscSettingsSingleton.

Server

  • Owin Update: Updated Microsoft.Owin package to version 4.2.2.
  • NuGet Updates: Consolidated and updated NuGet packages for Microsoft.IdentityModel.JsonWebTokens, Microsoft.IdentityModel.Logging, Microsoft.IdentityModel.Tokens, System.Diagnostics.DiagnosticSource, System.IdentityModel.Tokens.Jwt, System.Text.Encodings.Web, System.Text.Json, System.Threading.Channels, and Microsoft.IdentityModel.Abstractions.

This release includes significant enhancements to the Blazor framework, improved user experience, and updated NuGet packages.

MDriven - June 2024

Designer

Enhancements

  • GlobalMenu Data Access: Added access to GlobalMenu data as XML for Blazor client. Introduced BlazorClientMetaRenderer to provide page structure for the Blazor client. Updated MDriven.SharedInterfaces.WebAssembly to remove dependency on Eco.Interfaces for version information. (Revision 15735)
  • New APIs for Blazor Client Meta Info: Introduced GlobalActionsMeta2 and ViewMetaBlazorClient APIs for enhanced Blazor client metadata handling. (Revision 15737)
  • GlobalCenteredPopUp Tag: Introduced GlobalCenteredPopUp tag for better popup management. (Revision 15730)
  • SysDocBatch Pattern Extension: Extended the SysDocBatch pattern by adding the method OnSysDocBatchViewClose. (Revision 15699)
  • LibreOffice Conversion Support: Introduced support for PDF, DocX, and XLSX conversions using LibreOffice. (Revision 15697)

Fixes

  • Checksum Strategy Update: Fixed an issue where the "Model has changes - codegen?" question was not updated to look at the new checksum strategy, resulting in messages being displayed at the wrong time. (Revision 15736)
  • MDrivenZeroServerSide: Added condition definitions for MDRIVENZEROSERVERSIDE. (Revision 15739)
  • Null Checks: Implemented null checks in QP and Ocl_Existing. After 10 BusinessDeleteWarnings, the system will now ask, "Do you want us to continue to warn you?" Additional null check added. (Revisions 15734, 15728, 15714)
  • Debugger List Update: Removed triggers and trigger queries from the debugger list of operators. (Revision 15727)
  • oclEditor Rescue Functions: Resolved an issue where the oclEditor Rescue functions, which offer to add a missing variable or attribute, were getting confused too easily. (Revision 15726)
  • Version Update: Correct version applied to MDriven.SharedInterfaces.WebAssembly assembly and NuGet. (Revision 15721)
  • Filename Handling in ZIP: Replaced colons with underscores in filenames within ZIP archives to avoid issues. (Revision 15713)
  • AutoFormSeekers Exception: Fixed an issue where AutoFormSeekers for transient classes failed with an exception. (Revision 15710)
  • ViewModelOpenDocumentReports: Addressed issues with static fields in ViewModelOpenDocumentReports that could cause strange report results in multiuser systems (e.g., turnkey/mdrivenserver), where images could get mixed up between reports. (Revision 15708)
  • LibreOffice Compatibility: Fixed an issue where LibreOffice would not open ODT files with images due to incorrect updates to the meta-inf/manifest.xml file. (Revision 15707)
  • Action Optimization: Improved optimization for checking ActionsThatShowThis ViewModel. Added consideration for the root expression due to ViewModel changes in root type or requirement. Renamed the expression "Score" to "Cost" to better reflect the measurement. (Revision 15706)
  • SysDocBatchChecks Update: Moved SysDocBatchChecks to DefaultEcoSpace. Fixed an issue where a missed action occurred when a button with abstractaction opted out and displayed a modal window. Added GraphAPISupport GetContentFromDriveIdAndIdAndVersion. (Revision 15704)
  • StartTransactionNoChecks: Introduced a protected virtual method IDbTransaction StartTransactionNoChecks() on AbstractIDatabaseImpl to facilitate custom transaction starts, enabling Firebird-specific options. (Revision 15703)
  • Convert.ChangeType Fix: Resolved an issue with Convert.ChangeType failing for string to Guid conversion by implementing TypeDescriptor.GetConverter(t).ConvertFromInvariantString(safeval as string) for all string values. This fixed the issue with converting posted data to Guid at FI. (Revision 15700)
  • MDrivenServerAutoForm Update: Removed the FileType parameter from selfVM.Download, extended the SysDocBatch pattern with OnSysDocBatchViewClose, and dropped Convert attributes from the SysDoc pattern due to incompatibility with the ZIP function. Fixed a bug in MDrivenServerAutoForm when converting nullable DateTime. (Revision 15698)
  • Popup Management: Fixed positioning of popups called from toolbar dropdowns, adjusted popups overflowing the viewport, and addressed min-height in advanced tables. (Revisions 15719, 15718, 15717, 15724, 15729)
  • WatcherTableHeight Error: Fixed watcherTableHeight error in the console. (Revision 15716)
  • selfVM.Download Operator: Fixed an issue where the new selfVM.Download operator did not correctly trigger multiple downloads in turnkey. (Revision 15712)
  • SysDocBatchViewRequestedShowButNotShown: Changed parameters to ViewModel.SysDocBatchViewRequestedShowButNotShown. (Revision 15711)
  • Enable/Visible for WPF: Fixed an issue with lagging Enable/Visible for WPF due to late action enable evaluation triggering some derived effects on early action enable. (Revision 15720)
  • DuckType Error Checks: Fixed DuckType error check for Association classes and DuckType column name checking for derived targets that cannot be assigned. (Revisions 15702, 15701)

Technical Improvements

  • Turnkey Update: Refined the IExternalLateBind implementation of Turnkey to better support pattern-based methods from MDrivenServer. (Revision 15695)
  • SysDocBatch Pattern Update: Updated SysDocBatch pattern for WPF and wecpof. (Revision 15709)

Turnkey

Enhancements

  • GlobalMenu Data Access: Added access to GlobalMenu data as XML for Blazor client. Introduced BlazorClientMetaRenderer to provide page structure for the Blazor client. Updated MDriven.SharedInterfaces.WebAssembly to remove dependency on Eco.Interfaces for version information. (Revision 15735)
  • New APIs for Blazor Client Meta Info: Introduced GlobalActionsMeta2 and ViewMetaBlazorClient APIs for enhanced Blazor client metadata handling. (Revision 15737)
  • GlobalCenteredPopUp Tag: Introduced GlobalCenteredPopUp tag for better popup management. (Revision 15730)
  • SysDocBatch Pattern Extension: Extended the SysDocBatch pattern by adding the method OnSysDocBatchViewClose. (Revision 15699)
  • LibreOffice Conversion Support: Introduced support for PDF, DocX, and XLSX conversions using LibreOffice. (Revision 15697)

Fixes

  • Checksum Strategy Update: Fixed an issue where the "Model has changes - codegen?" question was not updated to look at the new checksum strategy, resulting in messages being displayed at the wrong time. (Revision 15736)
  • MDrivenZeroServerSide: Added condition definitions for MDRIVENZEROSERVERSIDE. (Revision 15739)
  • Null Checks: Implemented null checks in QP and Ocl_Existing. After 10 BusinessDeleteWarnings, the system will now ask, "Do you want us to continue to warn you?" Additional null check added. (Revisions 15734, 15728, 15714)
  • Debugger List Update: Removed triggers and trigger queries from the debugger list of operators. (Revision 15727)
  • oclEditor Rescue Functions: Resolved an issue where the oclEditor Rescue functions, which offer to add a missing variable or attribute, were getting confused too easily. (Revision 15726)
  • Version Update: Correct version applied to MDriven.SharedInterfaces.WebAssembly assembly and NuGet. (Revision 15721)
  • Filename Handling in ZIP: Replaced colons with underscores in filenames within ZIP archives to avoid issues. (Revision 15713)
  • AutoFormSeekers Exception: Fixed an issue where AutoFormSeekers for transient classes failed with an exception. (Revision 15710)
  • ViewModelOpenDocumentReports: Addressed issues with static fields in ViewModelOpenDocumentReports that could cause strange report results in multiuser systems (e.g., turnkey/mdrivenserver), where images could get mixed up between reports. (Revision 15708)
  • LibreOffice Compatibility: Fixed an issue where LibreOffice would not open ODT files with images due to incorrect updates to the meta-inf/manifest.xml file. (Revision 15707)
  • Action Optimization: Improved optimization for checking ActionsThatShowThis ViewModel. Added consideration for the root expression due to ViewModel changes in root type or requirement. Renamed the expression "Score" to "Cost" to better reflect the measurement. (Revision 15706)
  • SysDocBatchChecks Update: Moved SysDocBatchChecks to DefaultEcoSpace. Fixed an issue where a missed action occurred when a button with abstractaction opted out and displayed a modal window. Added GraphAPISupport GetContentFromDriveIdAndIdAndVersion. (Revision 15704)
  • StartTransactionNoChecks: Introduced a protected virtual method IDbTransaction StartTransactionNoChecks() on AbstractIDatabaseImpl to facilitate custom transaction starts, enabling Firebird-specific options. (Revision 15703)
  • Convert.ChangeType Fix: Resolved an issue with Convert.ChangeType failing for string to Guid conversion by implementing TypeDescriptor.GetConverter(t).ConvertFromInvariantString(safeval as string) for all string values. This fixed the issue with converting posted data to Guid at FI. (Revision 15700)
  • MDrivenServerAutoForm Update: Removed the FileType parameter from selfVM.Download, extended the SysDocBatch pattern with OnSysDocBatchViewClose, and dropped Convert attributes from the SysDoc pattern due to incompatibility with the ZIP function. Fixed a bug in MDrivenServerAutoForm when converting nullable DateTime. (Revision 15698)
  • Popup Management: Fixed positioning of popups called from toolbar dropdowns, adjusted popups overflowing the viewport, and addressed min-height in advanced tables. (Revisions 15719, 15718, 15717, 15724, 15729)
  • WatcherTableHeight Error: Fixed watcherTableHeight error in the console. (Revision 15716)
  • selfVM.Download Operator: Fixed an issue where the new selfVM.Download operator did not correctly trigger multiple downloads in turnkey. (Revision 15712)
  • SysDocBatchViewRequestedShowButNotShown: Changed parameters to ViewModel.SysDocBatchViewRequestedShowButNotShown. (Revision 15711)
  • Enable/Visible for WPF: Fixed an issue with lagging Enable/Visible for WPF due to late action enable evaluation triggering some derived effects on early action enable. (Revision 15720)
  • DuckType Error Checks: Fixed DuckType error check for Association classes and DuckType column name checking for derived targets that cannot be assigned. (Revisions 15702, 15701)

Technical Improvements

  • Turnkey Update: Refined the IExternalLateBind implementation of Turnkey to better support pattern-based methods from MDrivenServer. (Revision 15695)
  • SysDocBatch Pattern Update: Updated SysDocBatch pattern for WPF and wecpof. (Revision 15709)

Framework

Enhancements

  • GlobalMenu Data Access: Added access to GlobalMenu data as XML for Blazor client. Introduced BlazorClientMetaRenderer to provide page structure for the Blazor client. Updated MDriven.SharedInterfaces.WebAssembly to remove dependency on Eco.Interfaces for version information. (Revision 15735)
  • New APIs for Blazor Client Meta Info: Introduced GlobalActionsMeta2 and ViewMetaBlazorClient APIs for enhanced Blazor client metadata handling. (Revision 15737)
  • GlobalCenteredPopUp Tag: Introduced GlobalCenteredPopUp tag for better popup management. (Revision 15730)
  • SysDocBatch Pattern Extension: Extended the SysDocBatch pattern by adding the method OnSysDocBatchViewClose. (Revision 15699)
  • LibreOffice Conversion Support: Introduced support for PDF, DocX, and XLSX conversions using LibreOffice. (Revision 15697)

Fixes

  • Checksum Strategy Update: Fixed an issue where the "Model has changes - codegen?" question was not updated to look at the new checksum strategy, resulting in messages being displayed at the wrong time. (Revision 15736)
  • MDrivenZeroServerSide: Added condition definitions for MDRIVENZEROSERVERSIDE. (Revision 15739)
  • Null Checks: Implemented null checks in QP and Ocl_Existing. After 10 BusinessDeleteWarnings, the system will now ask, "Do you want us to continue to warn you?" Additional null check added. (Revisions 15734, 15728, 15714)
  • Debugger List Update: Removed triggers and trigger queries from the debugger list of operators. (Revision 15727)
  • oclEditor Rescue Functions: Resolved an issue where the oclEditor Rescue functions, which offer to add a missing variable or attribute, were getting confused too easily. (Revision 15725)
  • Version Update: Correct version applied to MDriven.SharedInterfaces.WebAssembly assembly and NuGet. (Revision 15721)
  • Filename Handling in ZIP: Replaced colons with underscores in filenames within ZIP archives to avoid issues. (Revision 15713)
  • AutoFormSeekers Exception: Fixed an issue where AutoFormSeekers for transient classes failed with an exception. (Revision 15710)
  • ViewModelOpenDocumentReports: Addressed issues with static fields in ViewModelOpenDocumentReports that could cause strange report results in multiuser systems (e.g., turnkey/mdrivenserver), where images could get mixed up between reports. (Revision 15708)
  • LibreOffice Compatibility: Fixed an issue where LibreOffice would not open ODT files with images due to incorrect updates to the meta-inf/manifest.xml file. (Revision 15707)
  • Action Optimization: Improved optimization for checking ActionsThatShowThis ViewModel. Added consideration for the root expression due to ViewModel changes in root type or requirement. Renamed the expression "Score" to "Cost" to better reflect the measurement. (Revision 15706)
  • SysDocBatchChecks Update: Moved SysDocBatchChecks to DefaultEcoSpace. Fixed an issue where a missed action occurred when a button with abstractaction opted out and displayed a modal window. Added GraphAPISupport GetContentFromDriveIdAndIdAndVersion. (Revision 15704)
  • StartTransactionNoChecks: Introduced a protected virtual method IDbTransaction StartTransactionNoChecks() on AbstractIDatabaseImpl to facilitate custom transaction starts, enabling Firebird-specific options. (Revision 15703)
  • Convert.ChangeType Fix: Resolved an issue with Convert.ChangeType failing for string to Guid conversion by implementing TypeDescriptor.GetConverter(t).ConvertFromInvariantString(safeval as string) for all string values. This fixed the issue with converting posted data to Guid at FI. (Revision 15700)
  • MDrivenServerAutoForm Update: Removed the FileType parameter from selfVM.Download, extended the SysDocBatch pattern with OnSysDocBatchViewClose, and dropped Convert attributes from the SysDoc pattern due to incompatibility with the ZIP function. Fixed a bug in MDrivenServerAutoForm when converting nullable DateTime. (Revision 15698)
  • Popup Management: Fixed positioning of popups called from toolbar dropdowns, adjusted popups overflowing the viewport, and addressed min-height in advanced tables. (Revisions 15719, 15718, 15717, 15724, 15729)
  • WatcherTableHeight Error: Fixed watcherTableHeight error in the console. (Revision 15716)
  • selfVM.Download Operator: Fixed an issue where the new selfVM.Download operator did not correctly trigger multiple downloads in turnkey. (Revision 15712)
  • SysDocBatchViewRequestedShowButNotShown: Changed parameters to ViewModel.SysDocBatchViewRequestedShowButNotShown. (Revision 15711)
  • Enable/Visible for WPF: Fixed an issue with lagging Enable/Visible for WPF due to late action enable evaluation triggering some derived effects on early action enable. (Revision 15720)
  • DuckType Error Checks: Fixed DuckType error check for Association classes and DuckType column name checking for derived targets that cannot be assigned. (Revisions 15702, 15701)
  • General Fixes: Various other minor fixes and improvements. (Revisions 15740, 15723, 15722, 15696, 15695)

Technical Improvements

  • Turnkey Update: Refined the IExternalLateBind implementation of Turnkey to better support pattern-based methods from MDrivenServer. (Revision 15695)
  • SysDocBatch Pattern Update: Updated SysDocBatch pattern for WPF and wecpof. (Revision 15709)

Server

Enhancements

  • GlobalMenu Data Access: Added access to GlobalMenu data as XML for Blazor client. Introduced BlazorClientMetaRenderer to provide page structure for the Blazor client. Updated MDriven.SharedInterfaces.WebAssembly to remove dependency on Eco.Interfaces for version information. (Revision 15735)
  • New APIs for Blazor Client Meta Info: Introduced GlobalActionsMeta2 and ViewMetaBlazorClient APIs for enhanced Blazor client metadata handling. (Revision 15737)
  • GlobalCenteredPopUp Tag: Introduced GlobalCenteredPopUp tag for better popup management. (Revision 15730)
  • Support for Pattern-Based Methods: Improved support for pattern-based methods from MDrivenServer by refactoring IExternalLateBind implementation in Turnkey. (Revision 15695)

Bug Fixes

  • Checksum Strategy in Model Changes: Fixed the issue where the "Model has changes - codegen?" question did not consider the new checksum strategy, causing incorrect messaging. (Revision 15736)
  • OclEditor Rescue Functions: Fixed confusion in oclEditor Rescue functions offering to add missing variables/attributes. (Revision 15726)
  • Enable/Visible Lag in WPF: Fixed issue with lagging Enable/Visible states in WPF due to late action enable evaluation triggering derived effects. (Revision 15720)
  • AutoFormSeekers Exception: Fixed exception in AutoFormSeekers for transient classes. (Revision 15710)
  • ViewModelOpenDocumentReports: Fixed issues with static fields in ViewModelOpenDocumentReports that caused incorrect report results in multiuser systems. (Revision 15708)
  • LibreOffice Compatibility: Fixed issue where LibreOffice couldn't open ODT files with images due to incorrect meta-inf/manifest.xml updates. (Revision 15707)
  • New selfVM.Download Operator: Fixed issue where the new selfVM.Download operator did not correctly trigger multiple downloads in Turnkey, only taking the last one. (Revision 15712)
  • SysDocBatch Checks: Moved SysDocBatchChecks to DefaultEcoSpace. Fixed issue with missed actions when a button with abstract action opted out and showed a modal window. Added support for GraphAPISupport GetContentFromDriveIdAndIdAndVersion. (Revision 15704)
  • Download FileType Parameter Removal: Removed the FileType parameter from selfVM.Download. Extended SysDocBatch pattern with OnSysDocBatchViewClose method. Dropped Convert attributes from SysDoc pattern as they conflicted with the Zip function. Fixed bug in MDrivenServerAutoForm when converting nullable DateTime. (Revision 15698)
  • Null Check: Implemented additional null check. (Revision 15722)

Adjustments

  • Popup Overflow Adjustments: Adjusted newly opened popups to prevent them from overflowing the viewport. (Revisions 15729, 15724, 15717)
  • Toolbar Popup Positioning: Fixed the positioning of popups called from toolbar dropdowns. (Revision 15719)
  • Advanced Tables Cleanup: Cleaned up min-height settings in advanced tables. (Revision 15718)
  • Watcher Table Height Error: Fixed console error related to watcherTableHeight. (Revision 15716)
  • Correct Version in Assembly and NuGet: Updated MDriven.SharedInterfaces.WebAssembly to the correct version in the assembly and NuGet package. (Revision 15721)
  • Filenames in ZIP: Replaced colons in filenames within ZIP archives with underscores. (Revision 15713)
  • Ocl_Existing Null Check: Added null check in Ocl_Existing. After 10 issues with BusinessDeleteWarnings, users are now prompted with "Do you want us to continue to warn you?". (Revision 15728)
  • Debugger Operator List Cleanup: Removed triggers and trigger queries from the debugger list of operators. (Revision 15727)

Internal Updates

  • MDRIVENZEROSERVERSIDE Condition Definition: Updated MDRIVENZEROSERVERSIDE condition definition. (Revision 15739)
  • Optimize ViewModel Checks: Refined optimization when checking ActionsThatShowsThis viewmodel to include root expressions due to potential changes in root type or requirements. Renamed expression Score to Cost for better clarity. (Revision 15706)
  • DuckType Error Check: Fixed DuckType error check for Association classes. (Revision 15702)
  • DuckType Column Name Check: Fixed issue where DuckType column name check did not produce errors for derived targets that couldn't be assigned. (Revision 15701)
  • Convert.ChangeType Fix: Addressed Convert.ChangeType failure from string to Guid by implementing a safer value conversion method. (Revision 15700)
  • Support for File Conversions: Introduced support for LibraOffice PDF/DocX/XLSX conversions. (Revision 15697)

Miscellaneous

  • General Fixes and Updates: Various minor fixes and updates. (Revisions 15742, 15740, 15714, 15696)

MDriven - May 2024

Designer

  • Improved Data Download Support: We've implemented the OnInitiateUserDownloadOfData function to better support the SysDocBatch pattern, allowing for more efficient data downloads. (Revision 15693)
  • Easier Access to Authentication Tokens: Developers can now easily access GetDecodedAccessAndRefreshTokenOnClient for Graph API Support, simplifying authentication workflows. (Revision 15685)
  • Enhanced Expression Handling:
    • The score calculation for expressions now differentiates between PSExpression and ocl expressions, providing more accurate results. (Revision 15672)
    • We've improved the overall score calculation for Expressions and ViewModels. (Revision 15669)
    • The ExpressionAnalyze function now calculates a score based on MDrivenServer statistics, offering better insights into expression performance. (Revision 15668)
    • The OCL editor tree now displays MDrivenServer statistics per class and associationEnd, along with the cost of all included expressions when analyzing expressions. (Revision 15667)
  • WPF Improvements:
    • The subscription on DirtyList has been enhanced to ensure the Save button updates correctly in WPF applications. (Revision 15660)
    • A null reference exception related to focusing a combobox and context menus has been fixed. (Revision 15660)
  • Thumbnail Performance Optimization: ViewModels and Diagrams thumbnails are now rendered using PNG files stored in a dedicated cache directory (_CachedImages). This approach improves performance and memory usage, especially for large models. (Revision 15652)
  • Model Editing Enhancements:
    • We've implemented error detection for ReadOnly and Visible expressions used within mounted ViewModels. This prevents potential issues arising from differences in the top-level self context. (Revision 15647)
    • The "Find in model" functionality now includes PlacingContainer Visible and Style expressions in its search. (Revision 15645)
  • Action Window Improvements:
    • Action windows have been consolidated into a single window with tab functionality, allowing users to easily switch between different actions. (Revision 15642)
    • Action windows now include "Close only this" and "Re-sort" tabs for better organization. (Revision 15643)
    • The header of the action window is now updated upon opening. (Revision 15643)
  • Action Opt-Out Clarification: The user interface for action opt-out has been improved for better clarity. The opt-out button has been removed from view model actions as it is no longer applicable. (Revision 15622)

Additional Bug Fixes:

  • Resolved various other bugs and implemented minor improvements throughout the application.

Turnkey

This release builds upon the previous improvements to SysDocBatch functionality introduced in v15693. Here's a summary of the key changes:

  • Enhanced SysDocBatch Support:
    • Clarification on the purpose of the SysDocBatch pattern for managing downloads and prints in batch. (Revision 15694, Revision 15690, Revision 15687)
    • Emphasis on the new selfVM operators:
      • SysDocBatchEnsured(ViewModelReferenceType vmref): Ensures a ViewModelReference is downloaded as part of a batch.
      • SysDocBatchZip(ViewModelReferenceType vmref): Zips a ViewModelReference for download as part of a batch.
  • Other Improvements:
    • Graph API User and Group Support: Reminder that SysGraphAPI was extended to include functionality for users and groups. (Revision 15678)
    • Resolved potential deadlock issue: Addressed a potential deadlock scenario introduced in Revision 15650 related to pruning the _ServerToClientQueue. (Revision 15650)
      • Toolbar Enhancements:
        • Fixed a toolbar issue where only the first ActionGroup was displayed. Now the toolbar shows all action groups, including always-show actions. (Revision 15626)
        • Improved toolbar styling. (Revision 15633)
    • Advanced Table Height: Removed the previously introduced height calculation for advanced tables, allowing them to follow placing container rules or row-span min-height rules. (Revision 15670)
  • Other Bug Fixes:
    • Fixed a JavaScript error caused by a missing null check. (Revision 15639)
    • Addressed various toolbar-related issues to improve user experience. (Revision 15640, Revision 15634)
    • Resolved a bug with the advancedTable.directive that caused table height changes when adding rows. (Revision 15657)

Framework

Bug Fixes

  • SysDocBatch Support: Introduced a new pattern (SysDocBatch) for managing downloads and prints in batch. This feature includes new selfVM operators:
    • SysDocBatchEnsured(ViewModelReferenceType vmref): Ensures a ViewModelReference is downloaded as part of a batch.
    • SysDocBatchZip(ViewModelReferenceType vmref): Zips a ViewModelReference for download as part of a batch. (Revision 15687)
  • Improved Data Download: Implemented the OnInitiateUserDownloadOfData function to support the SysDocBatch pattern, enabling more efficient data downloads. (Revision 15692)
  • Graph API Authentication Support: Provided easier access to GetDecodedAccessAndRefreshTokenOnClient for GraphAPISupport, simplifying authentication workflows for developers. (Revision 15685)
  • Enhanced Expression Handling:
    • The ColumnFieldConsistencyCheck function now compares database and model field types to identify potential inconsistencies. (Revision 15661, Revision 15662, Revision 15664)
    • OCL editor tree displays MDrivenServer statistics per class and associationEnd, along with expression costs. (Revision 15666)

WPF Improvements:

  • DataGrid Performance Optimization: Enabled Row+ColumnVirtualization for WPF DataGrids to enhance performance, especially for grids with many columns. (Revision 15654)
  • DirtyList Subscription: Improved the subscription on DirtyList to ensure the Save button updates correctly. (Revision 15660)
  • Null Reference Fix: Resolved a null reference exception related to focusing a combobox and context menus. (Revision 15660)

AngularJS Editing Fix:

  • AngularJS edit controls: String formatting for databinding is now handled differently to avoid breaking the databind while preserving number formatting. (Revision 15681)

Other Bug Fixes:

  • Resolved various bugs related to SoapCalls, including encoding headers and decompression. (Revision 15683, Revision 15684)
  • Fixed issues with combobox selection, CSSGrid rendering, and error messages. (Revision 15674, Revision 15676, Revision 15679, Revision 15651)
  • Addressed database snapshot functionality in MDrivenServerCore. (Revision 15661)
  • Improved handling of mounted ViewModels and expressions. (Revision 15647)
  • Numerous other bug fixes and improvements throughout the application.

Server

This release focuses on improving database schema management and data integrity. Here's a breakdown of the key changes:

  • Enhanced Database Schema Validation:
    • Introduced a new function in MDrivenServer/Admin/ColumnFieldConsistencyCheck. This function analyzes and compares database field types with their corresponding model types. This helps identify potential inconsistencies that could lead to "will not evolve" warnings. (Revision 15661)
    • Improved null handling in AdminORMapping to provide a clearer check for null values. (Revision 15691)
  • Database Snapshot Fix: Resolved an issue that prevented DatabaseSnapshot functionality from working correctly in MDrivenServerCore. (Revision 15661)
  • Admin Database Self-Repair: The self-repair functionality on startup has been improved to better handle issues within the admin database. It can now:
    • Detect XML errors within the admin database and suggest potential fixes.
    • Automatically fix missing tables in the database, preventing errors during the database evolution process. (Revision 15655)

These improvements provide more robust database schema management and help ensure data consistency within your application.

This is not an exhaustive list of all changes included in this release. Please refer to the changelog for more details.

MDriven - April 2024

Designer

AutoDiagram:

  • Improved filter functionality: "Filter associations" renamed to "Filter members" for better clarity. This filter now effectively filters all elements on the screen.
  • Enhanced performance during rendering by addressing inefficiencies caused by drawing during measuring.

ViewModelEditor:

  • Fixed an issue where the ViewModelEditor combo box name wouldn't update correctly when switching to "No-Category."

Error Checking Optimization:

  • Implemented changes to significantly reduce the time taken for subsequent error checks in modlr. This optimization tracks locally changed elements, their potential effects, and only re-checks affected areas.

Code Generation:

  • Checksum based codegen. This speeds up code generation by incorporating a checksum written to code checks.
  • Enhanced CodeGenGoverningInfo to identify code generation diffs even in scenarios where code generation wasn't performed (by you or someone else).

CloudForm:

  • Improved the "Changes" button functionality within CloudForm. The process now begins with a quick checksum check, followed by an optional view of the checksum diff, and lastly, the optional view of upcoming database changes.

Other:

  • Fixed a deadlock issue in the Designer that occurred when error checking attempted to look up ViewModelNames for Class.ViewModels variables.
  • Resolved a long-standing WPF bug that prevented dragging elements from the debugger to the application. Unnecessary parameters were removed to address this issue.
  • Addressed a problem with a hardcoded backslash for Unix systems. The correct Path.DirectorySeparatorChar is now used.

Turnkey

SignalR:

  • Fixed an issue related to incorrect stopping of SignalR Core.
  • Implemented proper disconnect from SignalR upon page reload.
  • Added a client-side service shutdown to prevent communication with the server during page reload, avoiding potential interference with redirects.
  • Enhanced logging for SignalR events.

General Bug Fixes:

  • Resolved two separate null reference problems.
  • Improved logging helpers to ensure log files are available before logging attempts.
  • Addressed a hardcoded backslash issue for Unix systems, using Path.DirectorySeparatorChar for correct path handling.
  • Fixed a case-sensitivity problem within Turnkey paths for Linux.
  • Corrected two instances where MapPathService.MapPath was using the wrong slash type (forward slash needed for platform compatibility).
  • Adjusted advanced table inputs and navbar resizing.
  • Implemented a fix for image fallback behavior. A null image cannot be used directly, but a valid link is required for proper fallback image loading.
  • Improved navbar wrapping and styling for save bar buttons.
  • Adjusted navbar height to accommodate wrappable menu items.

Turnkey UI:

  • Turnkey Toolbar: Introduced initial work on the ActionRenderPositionEnum Toolbar feature. This feature aims to categorize actions in the Turnkey UI:
  • Actions that navigate without data changes remain on the left side menu.
  • Actions that modify data, navigate, or involve saving/canceling/editing will be placed in a new horizontal toolbar below the main menu.
  • Adjusted CSS to ensure proper height calculation for the #viewmodelSection element.
  • Removed complex logic for main menu overflow handling. This will be replaced with CSS-based solutions.
  • Implemented a new method to prevent JavaScript execution during page reloads.
  • Defined the StartUpView concept for Turnkey Core, introducing a special page displayed while the application warms up. More details available here: https://wiki.mdriven.net/index.php?title=StartupViewTemplate
  • Moved the StartupViewTemplate_AppOverride.htm file to the views\turnkey\ directory for better organization.

Server

Logging:

  • Updated logging helpers to ensure they wait for log files to appear before logging attempts. This improves the reliability of logging messages.

Server-Side Jobs:

  • MdrivenServer now automatically applies SSJobs (SQL Server Jobs?) on Evolve. This eliminates the need for the "Update Server-Side Jobs" button, streamlining the deployment process.

Framework

ViewModelEditor:

  • Introduced a significant change to how variables and validations are edited. They are now displayed in a tree structure for better organization and accessibility.

Turnkey App:

  • Resolved an issue with the "Toolbar mode" functionality (work in progress). More details and documentation are available here: https://wiki.mdriven.net/Documentation:MDriven_Framework
  • Fixed a problem within Turnkey, Modal DesignedButton with ExecuteFrameworkRuntimeActionRT.DoModalOk. The button's enable property now correctly reflects the enable expression of the designed action.

Checksum Enhancements:

  • Addressed a code generation (Checksum) issue related to Statemachines, ensuring they are fully included in the process.
  • Continued improvements to the Checksum functionality:
  • Method Checksum calculations now exclude namespaces, improving accuracy.
  • Checksums for Enum types are now consistently represented as "ENUM."

Other:

  • Resolved a deadlock issue involving SysMDrivenMiscSettingsSingleton locks.
  • Fixed a bug that prevented updating validations in WPF when data changed for multiple columns. Validations are now consolidated for better efficiency.
  • Addressed a situation where SysAsyncTicket objects might have a null rootid value. This is now prevented by ensuring the referenced object gets a persistent ID.
  • Improved image download functionality using GetVMImageUrl when the application resides in a subfolder.
  • Enhanced error handling for ViewModelActions connected to Buttons. The server now searches for the action across all ViewModelClasses if not found in the initially provided one.
  • Updated the MySQL driver to version 8.3.0 to address reported Linux issues.
  • Defined the StartUpView constant.

MDriven - March 2024

Improved User Interface

  • Enhanced selection behavior in the View Model Editor to function even when action errors are present.
  • Introduced a "Hide on Disable" option for actions, allowing for actions to be completely hidden from end-user when so desired.
  • Error messages during OCL execution now pinpoint the specific method causing the issue.

Multi-Select Functionality

  • Implemented multi-select functionality in web UI tables, improving workflow efficiency.
  • Improved Model Upload
    • Resolved an issue where model uploads caused the application to become unresponsive. Uploads now run asynchronously.

Data Handling

  • Introduced a new vCurrent_Root variable for simpler access to the root element from any location within the view model. This streamlines copying and pasting view models while maintaining functional expressions.
  • Enhanced context sensitivity during OCL editing, providing more relevant suggestions based on the current context.

Database Consistency

  • Introduced a new validateA0DbData function for the MDriven server to identify and potentially fix inconsistencies within the database.
  • Debugger Improvements
    • Resolved an issue where the debugger lost the implicit selfVM variable upon model reread.

Error Handling

  • Improved error message clarity for type mismatches, providing more informative warnings.
  • Enhanced error handling for OCL expressions with mismatched data types, now displaying red dots to indicate errors within the model.

User Interface

  • Fixed a bug where left menu actions appeared as permanently selected or executable.
  • Addressed a navigation issue within pop-ups where the root object wasn't passed correctly.

Reverse engineering databases

  • Improved functionality for reverse engineering, particularly for Postgres databases.
  • Addressed general improvements to the reverse engineering process.

Access groups

  • Access Group Permissions
  • Resolved access group permission issues related to global actions.

Improved Handling of Division by Zero

  • Errors caused by division by zero are now handled more gracefully. Instead of crashing the application, the result will be set to the maximum decimal value.

Advanced Tables Feature

  • Introduced a new "Advanced Tables" turnkey feature. This feature can be enabled globally or for specific tables via tag values.
  • Enabling Advanced Tables provides functionalities like resizing columns, sorting data, and other advanced table manipulation capabilities.

Additional Notes

  • NavigateURL Overload: A new overload has been introduced for the selfVM navigate URL function. This allows you to specify whether you want to open the URL in a new tab or the current tab.
  • Read-Only Mode Information: Refer to other resources for detailed information on the read-only mode.
  • Improved Server Stability: Mitigated server restarts caused by errors in server-side jobs using the SQL pass-through operator.
  • Enhanced Cache Invalidation: Fixed a bug where mounting view models within other view models didn't trigger proper cache invalidation, potentially leading to outdated data.
  • MDriven Visual Studio Plugin - Improved Performance: Resolved an issue where code generation within the Visual Studio plugin caused the UI to temporarily freeze, especially for large models.
  • Limited Data Fetching in OCL Expressions: Introduced a new feature to limit data fetching within OCL expressions, actions, and persistent storage execution. This helps prevent accidental retrieval of massive amounts of data that could overwhelm the system.

Improved Performance

  • Introduced a new setting named "SSServiceSideJobParallelism" for periodic actions. This allows you to configure the number of parallel workers used to execute these actions on the MDriven server. This functionality helps optimize performance by controlling the number of jobs running concurrently.

Improved User Interface

  • Fixed a bug where left menu actions displayed incorrectly.
  • Addressed an issue where global actions and access groups interacted poorly.
  • Enhanced Error Handling
    • Introduced improved error messages for report generation failures.

Additional Notes: The new "Merge Model" functionality for OpenAI integration requires downloading additional components from GitHub. Refer to the MDriven documentation for detailed instructions.