🚀 Welcome to MDriven Learn –  MDriven is now on Discord!  Don’t miss the latest Release Notes.
Changelog-Framework


Release Notes
MDRIVEN: CHANGELOG - FRAMEWORK
All the latest MDriven Fixes and Updates
ChangeLog - MDriven Framework

September 2025

  • 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
  • Revision 16741 (Modified on 2025-06-23): Better check that Mounted ViewModel does not give duplicate nesting names Updated check that change to modellayer attribute with DoNotPersist does not flag Model as needing change Added checkboxes on ViewModelNesting to set Editable and MultiSelect tagged values when Nesting will be rendered as some kind of list Added checkbox on ViewModelColumn for new TV IncludeHere that controls de-reference/cursoring of single-link reference in list nesting
  • Revision 16737 (Modified on 2025-06-18): x
  • Revision 16736 (Modified on 2025-06-18): Real life case where MDrivenServerSync-block was tagged with wrong ModelChecksum due to checksum from actual save block creation was not caught and kept - instead the checksum was retrieved again prior to insert of synkblock and at this point the evolve had added a new version. Freak occurrence blocked from happening again.
  • Revision 16735 (Modified on 2025-06-17): When building ListViews - and having de-reference to single nesting (as will happen when mounting viewmodel) there is now support for IncludeHere tagged value that will NOT de-reference and put cursored controls out of listview as standard - instead IcnludeHere tag will bring in rendering into the current listview row; this makes it possible to have a list of mounted viewmodels (all the same definition though)
  • Revision 16732 (Modified on 2025-06-16): When using ListViews the supported behavior has not allowed subnestings from row (worked only of subnesting was other listview) - for single links these where interpreted as "dereference/render-after" - but for MountedViewModel this made it impossible to have Mounts inside the ListViewRow , to better handle this the "IncludeHere" tag value can be set on the Mount-point-column or also on a SingleLink-reference; work in progress
  • Revision 16731 (Modified on 2025-06-16): Mistake in SearchLogic from last checkin made TotalCount get value of pagecount if special search (missing words+semicolon) was tested but not applied - fixed
  • Revision 16730 (Modified on 2025-06-13): Better return of checksum, null checks after real life scenarios TraceLogTurnkey now catches first trace with TRACESTART and prune app with PRUNEAPP trace entries to better see dynamics of usage
  • Revision 16727 (Modified on 2025-06-12): Issue with ocleditor context finding when writing expressions - specially the case self.DeepClone(SomeType.ViewModels.SomeView) was not any good at any of the levels of the inner expression SomeType.ViewModels.SomeView
  • Revision 16721 (Modified on 2025-06-10): Now Seekers in turnkey will init their vSeekerResultCount to -1 , and this will be used to avoid showing "No results" prior to first search The special search for missing words (replacing space with wildcard) has been limited to strings under 200 in length to avoid undue db stress The special search for multi-search had issues with AutoForms/Template created seeker forms due to use of vSeekParamWildcard that included wildcard in value to allow for sqlite to not having a parser meltdown... Long story, but fixed. Seekers-paging-buttons in web did not show count if the count was 1, it does now
  • Revision 16717 (Modified on 2025-06-09): When parsing xml datablock we now fallback to check for Ansi-datetime on datetimes (before only binary) OCLDebugger has new button to Vibe demo data from a given diagram
  • Revision 16716 (Modified on 2025-06-09): Runtime updated to allow for default-opt-out of actions making it easier to maintain large model where some viewModels should be stable and not get new class actions as they are added - but rather wait for explicit opt-in. This is a per viewmodel choice named default-opt-out
  • Revision 16704 (Modified on 2025-06-01): Improved sorting on menus i web when mixing menus without group and those with group Continued work with Vibe-information

May 2025

  • Revision 16699 (Modified on 2025-05-28): StylesInModel issue with button not gettings its icon covered by the componentlabel target - fixed
  • Revision 16693 (Modified on 2025-05-27): selfVM.ExecuteAction used internal function that could fail if Nestings for searchexpressions were present - fixed. Vibe UI - LLM updated prompt and fed xml to reduce misunderstandings
  • Revision 16681 (Modified on 2025-05-25): Detection of issue with missing PlacingContainer in single Nestings when Span has them - this issue break rendering a new error in error check has been added - and also a rescue operation to fix with one click
  • Revision 16680 (Modified on 2025-05-23): In C# Math.Round(-1.0/10000) gives negative zero that survives to ToString giving "-0.00". This is legit but annoying and deemed of low value so in MDriven (-1.0/10000).Round(2) will from now on return a positive zero
  • Revision 16678 (Modified on 2025-05-21): Issue in ViewModelEditor with Mounted views - fixed
  • Revision 16676 (Modified on 2025-05-21): Long limitation that Bag{1,2,3} did not really return a bag but instead a Set - combined with limitation that union filtered away duplicates gave this expression Bag{1,2,3}->union(Bag{1,2,3}) to return 1,2,3 instead of the expected 1,2,3,1,2,3 - fixed
  • Revision 16670 (Modified on 2025-05-20): ActionRenderPosition has a new value:ButtonOnly, this is used when a leftside/toolbar action is opted out - but still used in one or more buttons This change fixes several old problems; specially the one that AreYouSureQuestions where not properly handled of action was outopted but used in button, and that optout level had importance for ViewModelContextAction
  • Revision 16669 (Modified on 2025-05-19): DynamicEnumString did not correctly implement Equals leading to combobox presentation halting
  • Revision 16668 (Modified on 2025-05-19): IgnoreContent of PlacingContainer implemented in WPF flexpanel
  • Revision 16667 (Modified on 2025-05-16): ElementHandle did not correctly create columns when switching types if new type was IEnumerationType - effected debugger output that showed last result type if the result type was IEnumerationType
  • Revision 16666 (Modified on 2025-05-16): Ocl_includes did not handle enum compare - fixed
  • Revision 16663 (Modified on 2025-05-14): --text-on-primary text on buttons was set to white - but several issues made it not reach the theme-default, the theme-default issues has been resolved and then text on button became white - this is now changed to black Width of tk-input-field--datepicker was reduced - for no apparent reason - now its treated as any other input StylesInModel was unable to reach and set the text of buttons - now fixed Turnkey runtime prepared for new PlacingContainer property that controls flexbasis called IgnoreContent
  • Revision 16659 (Modified on 2025-05-13): BREAKING CHANGE: Assignment := goes from RHS-type to LHS-type (Left hand side decides type today and onwards). This WILL MOST LIKELY break a few expression. You fix them by typecasting. Read how and why here: https://learn.mdriven.net/index.php?title=Documentation:OCLOperators_:%3D
  • Revision 16658 (Modified on 2025-05-13): OclResultTypeDeduceMethod.TypeOfFirstParam was really 2 and OclResultTypeDeduceMethod.TypeOfSecondParam was really 3 - fixed this and also added OclResultTypeDeduceMethod.TypeOfThirdParam This gave problem when implict upgrading ints to double in a assign somedouble:=0 when it was enclosed in ->collect because the list was int and not of double
  • Revision 16655 (Modified on 2025-05-13): ExecuteFrameworkRuntimeActionRT.ReadOnlyModeToogle is corrected to ExecuteFrameworkRuntimeActionRT.ReadOnlyModeToggle
  • Revision 16641 (Modified on 2025-05-10): OclVariableConverter a TypeConverter needed for design and winforms design code gen has been moved from eco.handles.design to eco.handles - this is to de-confuse the winforms .net8 designhost (designtoolserver) and also de-confuse extension loaded types from project loaded types. This means that to get consistent behaviour (non missbehaving winforms editors) you need MDriven design time and MDriven nuget mdriven.handles no older than THIS version
  • Revision 16640 (Modified on 2025-05-09): OclVariable as placeble component did not work with new required winforms net48<>net5 streaming - now works for net48
  • Revision 16639 (Modified on 2025-05-09): OclVariable as placeble component did not work with new required winforms net48<>net5 streaming - work in progress
  • Revision 16637 (Modified on 2025-05-09): ReadOnlyMode when turned on globally also affected MVCAutoForms - and that made debug editing harder - we now let these forms ignore ReadOnlyMode
  • Revision 16636 (Modified on 2025-05-08): ReadOnlyMode when turned on globally also affected MVCAutoForms - and that made debug editing harder - we now let these forms ignore ReadOnlyMode SERIOUS BUG: A month old bug regarding IdentityChangers (new objects has guid id, and saved get permanent id) - when on root webclients did not correctly update url to show new id, and whats client side viewmodels did not get all the needed IdChange messages to correctly upgrade id on objects held deeper in hierarchy than root. Fixed
  • Revision 16633 (Modified on 2025-05-07): Update to vSysReadOnlyMode is NOT entered if the object IsNew
  • Revision 16630 (Modified on 2025-05-07): Issue that Seek multiple times on same string sometimes could remove the selection made by AutoSelectFirstRow - fixed
  • Revision 16626 (Modified on 2025-05-06): Changes on all operations for GraphAPI access to deduce if it is "InvalidAuthenticationToken" and if so - refresh the token and execute the operation again
  • Revision 16625 (Modified on 2025-05-06): AutoFirstSelectRow was glitchy if something was selected prior to new search

April 2025

  • Revision 16615 (Modified on 2025-04-28):
  • Revision 16613 (Modified on 2025-04-28): Issue in angularclient that ctrl keys did not fully do their after action due to roundtrip fillup Add variable-dialog now offers a As-collection checkbox instead of having all the types all the time
  • Revision 16612 (Modified on 2025-04-28): Added the enable expression that gives false in the log, when the serverside action is not allowed to run.
  • Revision 16608 (Modified on 2025-04-26): 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
  • Revision 16607 (Modified on 2025-04-26): Major updates to advanced styling with LLM support and fast-track-CSS to help you shine
  • Revision 16606 (Modified on 2025-04-26): ExtentService - added 2 new methods: /// If the class is Singleton this fetch, possibly create the instance IObject Singleton(IClass c); /// If the class is Singleton this fetch, possibly create the instance T Singleton<T>() where T : class, IEcoObject;
  • Revision 16599 (Modified on 2025-04-24): The Turnkey/Development?view= service was untested and failed in certain cases. Fixed
  • Revision 16598 (Modified on 2025-04-24): Theme upload did not happen unless there was a style - fixed
  • Revision 16591 (Modified on 2025-04-23): ThemeStyling continued work
  • Revision 16590 (Modified on 2025-04-23): Issue in debugger when cloning ViewModel vars and one is a Tuple - Fixed issue 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
  • Revision 16584 (Modified on 2025-04-22): Recent fix for actions accidently broke evaluation if the action enable expression was empty - fixed
  • Revision 16583 (Modified on 2025-04-21): New Tab in LiveEdit - advanced-styling, work in progress
  • Revision 16579 (Modified on 2025-04-17): Improved on hints when using things only valid in action in ocl in ocleditor errors
  • Revision 16578 (Modified on 2025-04-17): In OCL we now fill the EnumOrd to the ordinal number of the enumerated value (0,1,2) MyEnum.allinstances.EnumOrd And we allow comparison between Enum.value and integer (falls back EnumOrd )
  • Revision 16576 (Modified on 2025-04-16): 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 Saying again with other words: WE NOW LEAVE .netFramework472 and older behind forever - use .netFramework48 as the minimum.
  • Revision 16575 (Modified on 2025-04-16): SysViewStateCookie included the vSysReadOnlyMode variable - this was unintentional and it is not included in new SysViewStateCookies
  • Revision 16574 (Modified on 2025-04-16): CacheInvalidation revisited and an assumption was proved wrong and rectified - old manifests were to big due to this oversight
  • Revision 16573 (Modified on 2025-04-16): The selfVM.CanExecute ran into problem when evaluating a placed buttons enableexpression if the placed button was on subnesting and not pointing to an abstractaction (then it wrongfully used context of sublevel - but in these cases context is vmroot). Fixed
  • Revision 16571 (Modified on 2025-04-15): CommandTimeout option added to SQLImport and SQLExport functions in MDrivenServer
  • Revision 16570 (Modified on 2025-04-15):
  • Revision 16568 (Modified on 2025-04-11): OCLEditor has a new "Second pair of eyes" option that helps to spot issues with expression (LLM powered)
  • Revision 16567 (Modified on 2025-04-11): When listing native type values in combo box and trying to assign one by pick Turnkey ran into problems as soon as it was not an enumeration or a string, now behaves better for datetime,bool,int,double,decimal
  • Revision 16566 (Modified on 2025-04-11): selfVM.LogEntry fixes
  • Revision 16565 (Modified on 2025-04-11): Added Move column out of conflict position as one one the new Rescue operations
  • Revision 16564 (Modified on 2025-04-11): selfVM.LogEntry('say something') will output a row in MDrivenServer-log and Turnkey-log and debugger OCL-trace
  • Revision 16563 (Modified on 2025-04-11): DisplayMode did not correctly signal change when changed - fixed
  • Revision 16556 (Modified on 2025-04-09): The OCLEditor has had rescue links that offer to fix the issue there and then. Now these rescue links are available in the ViewModel editors error list