🚀 Welcome to MDriven Learn –  MDriven is now on Discord!  Don’t miss the latest Release Notes.
Changelog-Turnkey
This page was created by Wikiadmin on 2024-03-06. Last edited by Edgar on 2025-09-11.


Release Notes
MDRIVEN: CHANGELOG - TURNKEY
All the latest MDriven Fixes and Updates
ChangeLog - MDriven Turnkey

September 2025

  • 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 16867 (Modified on 2025-09-09): angularjs numberhash filter and locales
  • Revision 16865 (Modified on 2025-09-09): In angularJS the numberhash filter used navigator language and not the $translate i18n language - fixed
  • 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 16860 (Modified on 2025-09-08): Web LiveEdit now tries to retain variables between design changes in order to be smoother
  • 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 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 16844 (Modified on 2025-08-28): When Culturesettings change we now reload page automatically
  • 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 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 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 16815 (Modified on 2025-08-11): Updated MDrivenClientScriptExecute and updated documentation : https://wiki.mdriven.net/Documentation:ClientScriptExecute
  • Revision 16806 (Modified on 2025-08-01): Broken javascript in cellselect due to unlucky checkin yesterday - fixed

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 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 16785 (Modified on 2025-07-21): x
  • 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 16782 (Modified on 2025-07-16): Null ref in VS from ModelEditor better safeguard
  • Revision 16780 (Modified on 2025-07-16): Wiki updated: https://wiki.mdriven.net/Documentation:EXT_ComponentsBlazor Blazor components - When razor components use scripts they are named component.razor.js - to simply development you can set the EXT_ComponentsRazorPathForJSScripts to the path (semicolon separate multiple paths) where script can be found. In runtime we will look for them in ./EXT_ComponentsRazor/CompName/script1.razor.js (same for js.map, ts and css) We now check if 404's are really blazor component scripts and if so we find them and return them
  • 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 16773 (Modified on 2025-07-09): x
  • 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 16766 (Modified on 2025-07-03): Recurse is now available in ViewModelEditor to set on column in nesting
  • Revision 16765 (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 16760 (Modified on 2025-06-27): AngularJS and Blazor client updated to allow copy from tables in Modal or Popup mode - before only worked in main page
  • Revision 16758 (Modified on 2025-06-27): Adding a new FrameworkAction option ClosePopup - that will close a popup that is open
  • Revision 16754 (Modified on 2025-06-26): Image conversion for report added also for TK-legacy (windows draw)
  • Revision 16753 (Modified on 2025-06-26): Issue in Turnkey that it did not rescale images to fit opendocument reports - fixed with SKia draw
  • Revision 16746 (Modified on 2025-06-25): Clear cell select when multi-rows are selected to avoid user confusion on what will happen on copy
  • Revision 16745 (Modified on 2025-06-25): When shiftclicking straight into the multiselect checkbox in datagrids nothing happened -> fixed
  • Revision 16744 (Modified on 2025-06-25): When having dynamically hidden columns i datatables - and that column being the first column - the current row indicator was lost in angularjs (works in blazor) - to mitigate this a new style firstvisiblecolumn is now on the first visible column - this is maintained js but set to default on render
  • 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 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 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 16729 (Modified on 2025-06-13): Modlr was confused order tagvalue creation - certain TV should force codegen, some should not - and if we assign the TV value prior to attaching it to owner modlr could not understand - order changed to first add, then set. Changing to defualt to WPF viewmodel editor since WebView requires a lot of prereqs WebClient right-click also updated selection wich made right-click action to target vSelected hard
  • Revision 16726 (Modified on 2025-06-12): Update ZXIng to support SKia rendering (post .net6 and linux requirement) Adding SkiaSharp" Version="3.119.0" SkiaSharp.NativeAssets.Linux Version="3.119.0" ZXing.Net" Version="0.16.10" ZXing.Net.Bindings.SkiaSharp" Version="0.16.21"
  • 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 16714 (Modified on 2025-06-08): Vibe information - actions to created views are collected to menugroups The angular context menu for tables could show wrong set of actions due to bug regarding actions referenced from placed action column and opted out (ButtonOnly renderingposition) - this checking corrects the error from the 20th of may
  • Revision 16713 (Modified on 2025-06-03): Paging buttons in web-ui; when no results - "No results" is written where normally "0-50 of 1000" is written
  • Revision 16712 (Modified on 2025-06-03): CHeckbox for requires root object we too wide in ViewModelEditor controls Paging buttons in web-ui(blazor/angular); when no results - "No results" is written where normally "0-50 of 1000" is written
  • Revision 16711 (Modified on 2025-06-03): Issue with SysDocBatchView - it wont show if the View requesting reports is already modal - we now check for modality and if so return document as download direct (default)
  • Revision 16710 (Modified on 2025-06-03): Problem with Turnkey OnSHowExpression dirtycontext - the sending context's dirtylist was added to the receiving OnShowcontext leading to cancel of instigator if OnShowCOntext was modal and cancelled - fixed

May 2025

  • Revision 16700 (Modified on 2025-05-28): Both Blazor and Angular clients allowed for update of vSelected collection from datagrid without Multiselect-TV, this could give odd effects were user not being aware of a multiselect and the action used all objects in vSelected_ collection. To be more consistent the vSelected_ collection will only the vCurrent_ object in its list as long has the nesting is not tagged with Multiselect
  • Revision 16698 (Modified on 2025-05-28): SkipWhenBacking updated implementation in Angular after reports that it skipped too far. Homogenized implementation with Blazor
  • Revision 16691 (Modified on 2025-05-26): Style of checkbox label did not use variable --textfield-label-clr
  • Revision 16690 (Modified on 2025-05-26): Style of checkbox label did not use variable --textfield-label-clr
  • Revision 16686 (Modified on 2025-05-26): Diagram Placed ViewModels now has the Focus-In-Tree option TK: new css variable added: --label-font-size , and documentet on wiki, and applied to control size of labels of controls --textfield-label-clr; color of labels applied to all labels
  • Revision 16685 (Modified on 2025-05-26): Issue in theme style; default Buttons text should use --text-on-default-btn but used --text-on-primary , fixed
  • Revision 16674 (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, For AngularJS
  • Revision 16672 (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 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 16656 (Modified on 2025-05-13): Save and Keep open did not notify "CHanges saved" - fixed better
  • Revision 16653 (Modified on 2025-05-13): ExecuteFrameworkRuntimeActionRT.ReadOnlyModeToogle is corrected to ExecuteFrameworkRuntimeActionRT.ReadOnlyModeToggle
  • Revision 16652 (Modified on 2025-05-13): Reverting back to alert dialog due to none support of nested dialogs in angular Save and Keep open did not notify "CHanges saved" - fixed
  • Revision 16651 (Modified on 2025-05-13): Changes to TS client - 1. Modal ESC key lingers after close due to bad event implementation - Fixed issue 2. Modal ESC uses browser alert to warn - I will test to use $mdDialog on top of modal - not sure 3. When in Modal we should not listen for Ctrl+e (enter edit) Ctrl+s
  • 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 16634 (Modified on 2025-05-07): Turnkey did not correctly handle up-promotion from new to save object - and the viewmodel was recreated and it lost variable state - should be 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 16623 (Modified on 2025-05-06): When having Save and Save&KeepOpen, ctrl+enter should use Save&KeepOpen otherwise save Extra defined check in typescript UpdateSelectedStateForTable

April 2025

  • Revision 16622 (Modified on 2025-04-30): Missed style flex-grow for .tk-data-table.ctGridYBottom .tk-data-table__content made modal grids not expand
  • Revision 16619 (Modified on 2025-04-30): Issue with ctrl+enter turnkey hotkey showing Save even when nothing to save - fixed. Issue with Turnkey angular double click execute of single action that navigates when holding control did not open in new tab fixed ViewModel ShownByAction will now show if it is popup,modal or normal
  • 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 16611 (Modified on 2025-04-27): Removed the blazor specific table row heights - harmonized to the existing variables
  • Revision 16610 (Modified on 2025-04-27): Corrections i scss so that it not is able to transpile to css again
  • Revision 16607 (Modified on 2025-04-26): Major updates to advanced styling with LLM support and fast-track-CSS to help you shine
  • Revision 16605 (Modified on 2025-04-25): Implementation of Alt-key in Web-ui (blazor and angularjs), first try to focus toolbar, and if not possible - mainmenu, and if you are already AT first item in toolbar, try mainmenu, if you are already at mainmenu - try toolbar
  • Revision 16604 (Modified on 2025-04-25):
  • Revision 16603 (Modified on 2025-04-25):
  • Revision 16602 (Modified on 2025-04-25):
  • Revision 16601 (Modified on 2025-04-25): x
  • Revision 16600 (Modified on 2025-04-25): Table border color now use variable
  • Revision 16597 (Modified on 2025-04-24): New keyboard shortcuts; only ask AreYouSure if we are dirty. Only actually save is we are dirty
  • Revision 16596 (Modified on 2025-04-24): New keyboard shortcuts; only ask AreYouSure if we are dirty. Only actually save is we are dirty
  • Revision 16595 (Modified on 2025-04-24): Escape in AngularJS should ask before doing cancel
  • Revision 16594 (Modified on 2025-04-24): Fixes with theme styling Remove of old ActionDefinition view Fix of Asking before escaping in Blazor shortcut keys
  • Revision 16593 (Modified on 2025-04-23):
  • Revision 16592 (Modified on 2025-04-23): ThemeStyling continued work
  • 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 16589 (Modified on 2025-04-23): Blazor datagrid styling better aligned with angular
  • Revision 16588 (Modified on 2025-04-23): ThemeStyling continued work, scss definitions did not use variables correctly
  • Revision 16587 (Modified on 2025-04-22): ThemeStyling continued work
  • Revision 16586 (Modified on 2025-04-22): scss Sidebar width variable respected
  • Revision 16583 (Modified on 2025-04-21): New Tab in LiveEdit - advanced-styling, work in progress
  • 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 16572 (Modified on 2025-04-15): SysTurnkeyTrace now also tracks Exceptions in the same structure as the navigations
  • Revision 16553 (Modified on 2025-04-09): When the MDrivenServer was "Not Started" or when the MDrivenServer is not reachable at all, stars aligned in such a way that the Turnkey-log said NOTHING. This has been changed and TK log will now reflect communication breach with MDrivenServer clearly
  • Revision 16548 (Modified on 2025-04-07): Added ability to post binary data to Turnkey exposed Rest service. Add single column BYTEARRAYCONTENT that receives blob, this is following the pattern of string data STRINGCONTENT - if the uploaded content is not a Form-record these 2 types are checked instead
  • Revision 16539 (Modified on 2025-04-03): x
  • Revision 16538 (Modified on 2025-04-03): x
  • Revision 16537 (Modified on 2025-04-03): x
  • Revision 16536 (Modified on 2025-04-03): introducing numberhash:dec for StringFormatAngular , where number:2 is two decimals , but the new numberhash:2 is two decimals unless there are more decimals (ie 0.00#)
  • Revision 16534 (Modified on 2025-04-02): Adding special name BYTEARRAYCONTENT to upload with restPut,post,patch a single blob (no multipart content) - works the same as STRINGCONTENT RestHead ocl operator has been added to only ask external service to return the headers. vResponseHeaders variable - when found and Rest call is made we populate variable with a return separated list of header-name:header-value
  • Revision 16532 (Modified on 2025-04-02): In turnkey angularjs we could get blurry fonts in popups due to use of transform - reworked to flex to solve

March 2025

  • Revision 16526 (Modified on 2025-03-31): New property on selfVM called DisplayMode - that has one of the values enum DisplayModeEnum { UINormal, UIModal, UIPopup,Technical, RestPost, RestGet, RestPatch, RestPut,RestDelete }; Since ViewModels may have multiple usages it is good to be able to know the current use