Changelog-Framework
Release Notes
MDRIVEN: CHANGELOG - FRAMEWORK
All the latest MDriven Fixes and Updates
ChangeLog - MDriven Framework
November 2025
- Revision 17026 (Modified on 2025-11-08):
- Revision 17025 (Modified on 2025-11-08): Changes to OCLEditor - replaced the underlying edit control (Richtextbox) due to being fed up with all the issues
- Revision 17024 (Modified on 2025-11-08): Changes to OCLEditor - replaced the underlying edit control (Richtextbox) due to being fed up with all the issues
- Revision 17023 (Modified on 2025-11-06): VS Automation Adapting ContinousIntegration as described https://wiki.mdriven.net/Documentation:ContinuousIntegration
- Revision 17021 (Modified on 2025-11-06): VS Automation Adapting ContinousIntegration as described https://wiki.mdriven.net/Documentation:ContinuousIntegration
- Revision 17017 (Modified on 2025-11-04): Debugger step had a tendency to deadlock app after usage - this was due to a bad transition between sync and async in EcoSpace - fixed
- Revision 17016 (Modified on 2025-11-04): Better logging during automation
- Revision 17014 (Modified on 2025-11-04): Issues with Automation fixed
- Revision 17011 (Modified on 2025-11-03): When ComboBox displays are tight we now show a tooltip with the selected value (title is set) Also - but only in blazor - we add a transparent text above combo so that result is found by browser ctrl+F search
October 2025
- Revision 17004 (Modified on 2025-10-29):
- Revision 17002 (Modified on 2025-10-29): The Turnkey/GetImage is now better to return a correct filename-given download even if the filename has characters that needs escaping
- Revision 17001 (Modified on 2025-10-29): Changes to if we stop OclPS due to finding out that self is new - before we did - but this limits PSEval that is very generic - its sure offers you to use self - but you may not actually do it. We remove the check on self isnew
- Revision 16997 (Modified on 2025-10-29): MDrivenServer - blazor UI updates
- Revision 16996 (Modified on 2025-10-28): SysDynamicView had an issue when constructing dynamic columns with expressions that was xml sensitive - fixed
- Revision 16995 (Modified on 2025-10-28): SysDynamicView had an issue when constructing dynamic columns with expressions that was xml sensitive - fixed
- Revision 16994 (Modified on 2025-10-28): SysDebugger - when doing OclPS the debugger now checks the resulting type on the expression and decides if to use GetValue or Execute so that you do things like Class.allinstances->size and press OCLPS
- Revision 16988 (Modified on 2025-10-23): On class Action new taggedvalue : IgnoreOptOut=true tagged value was added to allow for SysDebuggerAutoform from all objects - even when actions are opted out by default
- Revision 16986 (Modified on 2025-10-23): /debug in angular was broken by changes to MiniBlazor and having actions as VMClass columns. Fixed
- Revision 16984 (Modified on 2025-10-22): MVC way to get downloaded content is Turnkey/GetImage and we had - to seperate id, attribute, contenttype and filename. Turns out that was really bad choice of seperator so we now also allow for = as separator. Wiki updated https://wiki.mdriven.net/Documentation:MVC_GetImage
- Revision 16981 (Modified on 2025-10-22): AutoForms has extra parameter to send in accessgroups
- Revision 16980 (Modified on 2025-10-21): SysDebugger issue that SysDynamicViews did not have have any AccessGroups; fixed by assigning the accessgroups from the View calling navigate to bring the dynamic view up - this will be the correct accessgroup in the context - usually the debugger. Prior to this change there was a risk that another user could get access to AutoForm if she knew the url.
- Revision 16979 (Modified on 2025-10-20): SysDebugger changes caused an issue in QueryPlanner - fixed
- Revision 16978 (Modified on 2025-10-20): QueryPlanForSpecificType checked DefaultStringRep for subclasses - but this is not meaningful if the class is the defaultSuperClass or has more than 30 subclasses (the aim is to reduce rouge questions)
- Revision 16975 (Modified on 2025-10-19):
- Revision 16973 (Modified on 2025-10-19):
- Revision 16972 (Modified on 2025-10-19):
- Revision 16971 (Modified on 2025-10-19): Work on MDriven.MiniBlazor - a strategy that to bind Blazor serverSide straight to VMClass with the direct aim to make MDrivenServer UI more modern
- Revision 16970 (Modified on 2025-10-19): BREAKING CHANGE: The VMClass Bagage Dictionary shifted from string,string to string,object /// Baggage was initially added to hold previous values of vCurrent variables on postback from MVC public Dictionary<string, object> Baggage New mistake had knocked out Create New and Delete buttons from debugger autoform seekers - fixed
- Revision 16969 (Modified on 2025-10-18): SysDynamicView and SysDebugger pattern supported by Turnkey - see wiki
- Revision 16968 (Modified on 2025-10-16):
- Revision 16966 (Modified on 2025-10-14): Function to export turnkey search grids to file - now the headers alone are sent of the result is empty - this is to make it easier to get a template for import. Also _ReadOnly, _Visible, _Style columns are filtered away (as they are in the UI)
- Revision 16959 (Modified on 2025-10-13): MetricNotImperial has been refined into MetricNotImperial_Area, MetricNotImperial_Weight. MetricNotImperial_Temperature, MetricNotImperial_Volume, MetricNotImperial_Velocity
- Revision 16957 (Modified on 2025-10-13): Issues with system.buffers in VS
- Revision 16946 (Modified on 2025-10-12): <PackageReference Include="System.ClientModel" Version="1.6.0" /> <PackageReference Include="System.Text.Json" Version="8.0.6" /> <PackageReference Include="Azure.Identity" Version="1.14.2" /> <PackageReference Include="Microsoft.Extensions.Logging.Abstractions"> <Version>8.0.3</Version> <PackageReference Include="Azure.Core" Version="1.47.2" />
- Revision 16945 (Modified on 2025-10-12): Issues with MDrivenServer for .net48 resolved Changing projects from old nuget to PackageReference netStandard : net48 , removing .net472 Nuget: <PackageReference Include="System.Buffers" Version="4.6.1" /> <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.1.2" /> <PackageReference Include="System.Memory" Version="4.6.3" /> <PackageReference Include="Azure.Identity" Version="1.17.0" /> <PackageReference Include="System.Buffers"><Version>4.6.1</Version> <PackageReference Include="System.Memory"><Version>4.6.3</Version> <PackageReference Include="Azure.Core"><Version>1.49.0</Version> <PackageReference Include="Azure.Identity"><Version>1.17.0</Version> <PackageReference Include="Azure.ResourceManager.AppService"><Version>1.4.1</Version> <PackageReference Include="Azure.ResourceManager.Resources"><Version>1.11.1</Version> <PackageReference Include="Azure.Storage.Blobs"><Version>12.25.1</Version> <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="7.0.2" />
- Revision 16938 (Modified on 2025-10-08): More logging for sign in Issue with BlazorComp download url when app is in subfolder fixed Adding js function ReadFromClipbookMDriven to match WriteToClipbookMDriven
- Revision 16936 (Modified on 2025-10-07): Extended logging for login
- Revision 16935 (Modified on 2025-10-07): Extended logging for external login issues
- Revision 16926 (Modified on 2025-10-03): The GraphAPI will now also set the Modified:DateTime? of SysGraphAPIResultRow if present
- Revision 16924 (Modified on 2025-10-01): Increased to save 50 log files instead of 10 Removed excessive logging. Hunted and cure one infinite loop issue removing use of System.Drawing.Common
September 2025
- Revision 16922 (Modified on 2025-09-29): MDrivenServer Ability to let special TWOFACTOR code bypass TWOFACTOR model upload to enable automation and scripted deploy MDrivenFramework extended to allow CodeGen,Build,Upload model from script as described here: https://wiki.mdriven.net/Documentation:ContinuousIntegration
- Revision 16915 (Modified on 2025-09-24): RTCreate of ViewModel now checks for self referencing (recursion) if nestings - which will break renderers hard - it is now filtered away
- Revision 16911 (Modified on 2025-09-22): Nugets <PackageReference Include="Microsoft.AspNetCore.Localization" Version="2.3.0" /> <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.3.0" />
- Revision 16909 (Modified on 2025-09-22): MDriven.ASPNETIdentity.core -> net8 MDriven.MVC.Core -> net8 MDriven.Persistence.WebApi.Core -> net8 Upgraded nugets: <PackageReference Include="Microsoft.AspNetCore.Http" Version="2.3.0" /> <PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.3.1" /> <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.3.0" /> <PackageReference Include="Microsoft.AspNetCore.Owin" Version="8.0.20" /> <PackageReference Include="Microsoft.Extensions.Identity.Core" Version="8.0.20" /> <PackageReference Include="Microsoft.Extensions.Identity.Stores" Version="8.0.20" /> <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.3" /> <PackageReference Include="Microsoft.IdentityModel.Tokens" Version="8.14.0" /> <PackageReference Include="Microsoft.IdentityModel.Tokens.Saml" Version="8.14.0" /> <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.14.0" />
- Revision 16906 (Modified on 2025-09-22): Nuget updates for everything .net8+ Microsoft.Extensions.Logging.Abstractions" Version="8.0.3" updated from 8.0.2 <PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="8.0.20" /> updated from 8.0.11 <PackageReference Include="Microsoft.AspNetCore.SignalR.Client.Core" Version="8.0.20" /> <PackageReference Include="Microsoft.AspNetCore.SignalR.Common" Version="8.0.20" /> <PackageReference Include="Microsoft.AspNetCore.Components" Version="8.0.20" /> <PackageReference Include="Microsoft.AspNetCore.Components.QuickGrid" Version="8.0.20" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.20" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.Facebook" Version="8.0.20" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.Google" Version="8.0.20" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="8.0.20" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="8.0.20" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.20" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="8.0.20" />
- Revision 16896 (Modified on 2025-09-20): Rename, Usage functions missed preconditions for methods and triggers - fixed
- Revision 16893 (Modified on 2025-09-19): Further deadlock issue - now solved
- Revision 16892 (Modified on 2025-09-19): Issue with Copy/Paste attributes in stable diagrams - new value does not show - Fixed issue Issues with deadlock in wpf due to async-force when using PSEval-operations from ocl. Rewritten.
- Revision 16890 (Modified on 2025-09-17): Export items to file available from searchgrids had stopped working due to MaxFetch init to 0 Blazor StaticText and Edit gets info on IsNumeric and also a invariant culture value as attribute in order to sanely handle summation of cells in datagrids. Blazor cell select now shows a Sum/Average/Count of selected numeric cells
- Revision 16888 (Modified on 2025-09-15): PC structure display in WPF viewModelEditor improvements with DD
- Revision 16886 (Modified on 2025-09-14): PC structure visualization helper in WPFViewModel Editor
- Revision 16881 (Modified on 2025-09-12): PlacingContainer conversion helper improvements
- Revision 16878 (Modified on 2025-09-11): Added new Grid to PlacingContainer transition tool in MDrivenDesigner Changes to WPF viewModelRendering to enable the new Grid to PlacingContainer transition tool in MDrivenDesigner
- Revision 16877 (Modified on 2025-09-10): Issue that made MDrivenServer say System.InvalidCastException: Invalid cast from 'System.Int64' to 'AppCompleteGeneric.ConnectionType'. is fixed, issue came from us now being able to store tuples in variables and roundtrip of mvc was misapplied
- Revision 16870 (Modified on 2025-09-10): The StringFormat in wpf/blazor to default 2 decimals had issues Placeholder in blazor had issues
- Revision 16869 (Modified on 2025-09-10): The angularjs numnerhash filter returned nan when null - changing to The numberformatted strings in angularjs did not get the placeholder text if set
- Revision 16868 (Modified on 2025-09-10): If a packaged is used but not included in the ecospace the error was just Model not Ecofied - and that made it hard to follow - error improved Default stringformat is now also applied to integer types in order to give thousand separator
- Revision 16866 (Modified on 2025-09-09): Angular debug view - better number and date format
- Revision 16864 (Modified on 2025-09-09): Updates due to usermanager interface changes
- Revision 16863 (Modified on 2025-09-09): public interface IUserMDrivenManager { IUserMDriven CreateNew(IEcoServiceProvider sp,string userNameToActAsId); This is changed from IUserMDriven CreateNew(IEcoServiceProvider sp) We discovered that SysUser could be doubled due to id and username difference - and this causes downstream problems with login tokens. The issue is that .net core UserManager has interfaces to locate on user id AND on username - and these really must be the same to ensure none doubles going forward. The definition to the SysUser is that UserName == Id and should be unique - Normally (login flow, Oauth-flow) this is the user email
- Revision 16862 (Modified on 2025-09-08): Updates to SS-Blazor, Updates to Culture settings in session and client
- Revision 16861 (Modified on 2025-09-08): Ocl issues when result was constant - but not owned (like this 'let x=true in (1.23)') - then we got the result with EnsureSpanFetch and threw it away - then we gave null from the main render - fixed
- Revision 16859 (Modified on 2025-09-07): LiveEdit now has a BlazorEdit option - this uses a different rendering model - and is able to change the page without a full page refresh - the aim is to provide a smoother liveedit...
- Revision 16858 (Modified on 2025-09-05): Metric - use of presentation type did not work on viewmodelcolumns alone - Fixed issue Column filtering did not work on combos - fixed
- Revision 16852 (Modified on 2025-09-03): Deprecating the StringFormatRazor in favor for StringFormat, updated the wiki to reflect (StringFormatRazor will continue to be checked if StringFormat is empty)
- Revision 16850 (Modified on 2025-09-02): null check
- Revision 16848 (Modified on 2025-09-02): MetricImperial transforms added. Now available are: MetricImperial_GramOunce MetricImperial_MillimeterInch MetricImperial_MilliliterFluidOunce MetricImperial_CelsiusFahrenheit MetricImperial_SquareKilometersSquareMiles MetricImperial_SquareMetersSquareFeet MetricImperial_SquareCentimetersSquareInches MetricImperial_KilometersPerHourMilesPerHour MetricImperial_MetersPerSecondFeetPerSecond
- Revision 16847 (Modified on 2025-09-01): MetricImperial work. Adding auto StringFormat on decimals for AngularJS and Blazor - will default to IMDrivenUITranslation.EffectiveDefaultDecimalDisplay that defaults to 2 but can be set in property DefaultDecimalDisplay:int on SysCultureSettingsSingleton
August 2025
- Revision 16845 (Modified on 2025-08-28): Preparing for StringFormat for numbers and dates having default values that can depend on user set culture Blazor serverside issues with ShouldRenderFilter that stopped combo lists to correctly update; fixed
- Revision 16844 (Modified on 2025-08-28): When Culturesettings change we now reload page automatically
- Revision 16843 (Modified on 2025-08-27): Mistake fixed
- Revision 16841 (Modified on 2025-08-27): LockIssues connected to taking care of singleton load in Turnkey Fixed issue IMDrivenUITranslation extended with EffectiveLanguage - enabling setting culture in data/userprofile instead of trusting browser Also adding cache-tag for MetricNotImperial since this new setting will change PresentationUnit in html we need to cache both metric and imperial per language New functionality on IMDrivenUITranslation to convert back and forth in UI for metric and imperial Triggered by tagged value: "MetricImperial" having one of these values: "GramOunce" "MillimeterInch" "MilliliterFluidOunce" (this is US fluid ounce - not imperial)
- Revision 16840 (Modified on 2025-08-25): Yesterday I wrote: WPF: Something fishy when having tuples in a grid ... ...All of this was due to the fact that Tuples HashCode was depending its values - and changing hashcode breaks collectionview and everything in .net UI and Dictionaries. Tuples has been rewritten to have stable hash - but that broke GroupBy - GroupBy has been rewritten for tuple stable hash
- Revision 16839 (Modified on 2025-08-25): EnsureRange on a null tuple gave nullref exception - fixed
- Revision 16837 (Modified on 2025-08-22): WPF: Something fishy when having tuples in a grid - then having a detail grid under it - seems like if one detail is deleted the currency managers CollectionView is thrown of target and stops responding to changes I really do not understand the root cause - nothing helps only to completly resetting the handle with enable/disable when this is discovered... (Maybe descriptor types changes for tuples? Maybe revisit if new info emerge)
- Revision 16836 (Modified on 2025-08-22): Turnkey: Tuples in tables - that has child tables; did not work due to VMClassId not handled on tuples - several changes including changing ToString of tuple to return HashCode Several issues with handling tuples as vCurrent_ vars in Turnkey fixed Also discovered issue with Nestings using derived type from owning column - the order of creation could be wrong if the expression was depending on a vCurrent of a nesting that laid after it in creation. Fixed.
- Revision 16829 (Modified on 2025-08-19): Fredrik S discovered that RenderedByAction on checkbox in grid in wpf had stopped working - found issue (element was variable that was null - and logic was tricked by thinking that current was known when it was not - suspect the summer changes for updating the selected in WPF UI when variable is set) Fixed.
- Revision 16827 (Modified on 2025-08-18): DefaultEcoSPace ensure its singletons on activate - but this is also baseclass for TempEcospace used by XmlLoading etc - and THAT should not ensure singletons, since they leave unwanted residues. To mitigate ShouldEnsureSingletonsOnActivate was introduced and overriden in TempEcoSpace to return false
- Revision 16825 (Modified on 2025-08-14): Fixes to BlazorPivot
- Revision 16824 (Modified on 2025-08-14): MDrivenDesigner now also handles adding components from ext_componentsrazor Switching the BLAZOR TV on ViewModel to bring up Blazor serverside instead of webassembly Changes to how ext_componentsrazor load scripts - we do NOT load anything ahead of time - we wait for component to do its own thing - this avoid bloating and general script-hell
- Revision 16813 (Modified on 2025-08-11): Changed Gantt DateScaler to placing container control. Changed ThreeJS to https://cdn.skypack.dev
- Revision 16807 (Modified on 2025-08-02): Several issues with assign and compare of tuples addressed and Fixed Added IActionLanguageService.IsCurrentlyInActionEvaluation Reveals if this thread is currently in evaluation of EAL Added ViewModelClass.ActionToUpdateUITovCurrent that is now set by WPF DataGrids - this solves long standing issue that vCurrent_ updates from code did not update UI in WPF but did in web
July 2025
- Revision 16800 (Modified on 2025-07-30): vClientScriptExecute special variable added and works as described here: https://wiki.mdriven.net/index.php?title=Documentation:ClientScriptExecute Style issue on Blazor buttons not in grid fixed ServerSide Blazor; we now pull sessionid and userid from razor context and pass as parameters to MDServer
- Revision 16793 (Modified on 2025-07-29): Added interface for blazor component IMDPCHolderForExternalComponents Issues with contenttype in CheckIfItIsABlazorComponentJSScriptThatWeShouldReRoute Blazor Gantt - row move and improvements Blazor - The compholder is reused by SS Blazor and must null out values or they spill over from last...?!
- Revision 16792 (Modified on 2025-07-25): Blazor components cont...
- Revision 16790 (Modified on 2025-07-24): XMLPersistence has another lock issue discovered with SS Blazor TaggedValues on PC did not follow correctly Continued work on BlazorComponents
- Revision 16789 (Modified on 2025-07-23): XMLPersistence has another lock issue discovered with SS Blazor TaggedValues are now in runtime of placingContainers - so that they may be exposed to Blazor - to facilitate a new kind of structure component in blazor Continued work on Blazor components
- Revision 16786 (Modified on 2025-07-22): PeristenceMapperXML did not retry if stopped by a lock in FetchIDListWithCondition - fixed ServerSide Blazor MainMenu did not initiate automatically if server was not fully started Renaming the TheClientSingleton in blazor to ClientContextSingleton to better reflect ServerSideBlazor use Introducing ShortCutComponentAssemblyLoadForEasierDebug to help with Blazor debugging
- Revision 16783 (Modified on 2025-07-21): Updates to Blazor interface and better dev-support for blazor components: Blazor components often ensure their module (load their js) in code - and this path may not be the path for turnkey So we inspect and check if we find the js in the turnkey designated places EXT_ComponentsRazor: <MDrivenServerOverride CopyAssetsTKOnStart="True" PrototypeWithMDrivenDesignerInPath="SomeModel.modlr" EXT_ComponentsRazorPath="PathToDevAssemblies" EXT_ComponentsRazorPathForJSScripts="PathToDevScripts"/>
- Revision 16775 (Modified on 2025-07-10): SysMDrivenMiscSettingsSingleton GlobalMainUIEngine replaces GlobalBlazorClient - read on wiki Changing default value on AttackBreakThreshold from 2 to 10
- Revision 16774 (Modified on 2025-07-10): Deadlocks detected in VSPersistenceMapperXML.cs - changed to TryRetryLock Issue with blazor sending "True" instead of "true" tripped us up --navbar-height automagic now implemented in blazor Added AddEventStopPropagationAttribute to div for PC in blazor - cleared up issue with select of tree node Issues with SS Blazor fixed Checkbox in Blazor was impossible to click - z-index issue hard to understand - probably related to shadow dom of blazor Read of css vars from Javascript now use getComputedStyle to get value from :root if not overridden
- Revision 16772 (Modified on 2025-07-09): Major checkin - first version of ServerSide Blazor - available under /appli/ (client side blazor /appl/ and angularjs /App#/)
- Revision 16764 (Modified on 2025-07-03): Large checkin to enable use of Recurse in ViewModel definition and in AngularJS-UI, Blazor-UI, WPF-UI, Turnkey-debug-view and in all Tajson handling (think also deepclone and transform); more news coming - but this enables true recursive trees in ViewModel definition
June 2025
- Revision 16762 (Modified on 2025-06-29): There was a limitation in WPF that subcolumn_ReadOnly did not work correctly on Action buttons. Fixed
- Revision 16761 (Modified on 2025-06-29): WPF PlacingContainer - there was a limitation that CanScroll+HideOverflow did not lead to scrollbar the same way the WebRendering did - basically it only worked with scrollbar in listviews - however that is now fixed.
- Revision 16758 (Modified on 2025-06-27): Adding a new FrameworkAction option ClosePopup - that will close a popup that is open
- Revision 16755 (Modified on 2025-06-26): Placeholder - there are 2 ways to set placeholder value ; one old (taggedvalue) and one new (subcolumn). TextArea only supported the new way. Input checked the old way first. Updated to first check new way and if that not exist check old way for both
- Revision 16749 (Modified on 2025-06-25): A recently created bug from implementation of IncludeHere made ListViews de-reference/cursor/show-only-current not work. This is fixed. A recently created bug from implementation of Default-optout for actions had knocked out live-edit in turnkey due to a missed subscription. Fixed.
- Revision 16748 (Modified on 2025-06-25): If zero ordinary columns were present on Toplevel in ViewModel, the validations used on nestings were not initiated - fixed
- Revision 16747 (Modified on 2025-06-25): Missed checkin for firstvisiblecolumn
