Changelog-Framework


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

February 2025

  • Revision 16369 (Modified on 2025-02-06): Issue in compare checksum; NetFramework compiled MDrivenServer returns an escaped string, but .netCore compiled MDrivenServer does not - homogenised to handle both Yet an issue with checksum for state machines differences between NetFramework compiled vs .netCore compiled, this time the named transitions came in different order, now we sort them. This may be a breaking change - needing a model push
  • Revision 16368 (Modified on 2025-02-06): Turnkey; ExportTabSepController added to support new functions on seeker tables , to download result as tab separated file
  • Revision 16363 (Modified on 2025-02-05): ...
  • Revision 16362 (Modified on 2025-02-05): ...
  • Revision 16361 (Modified on 2025-02-05): Changes to paging buttons of paged tables - number of hits moved and better info of which page you are at
  • Revision 16350 (Modified on 2025-02-04): GrrenDot missed in wpf core project
  • Revision 16349 (Modified on 2025-02-03): CollectCheckSumData of StateMachine regions did not sort the states within the region leaving a possibility to have the server and client get different order - fixed
  • Revision 16346 (Modified on 2025-02-03): GreenDot for object reference consolidated to own control, allows drag to and drag from Better feedback in Debugger about current PersistenceMapper Issue with too wide subcolumns gave scrollbar solved

January 2025

  • Revision 16343 (Modified on 2025-01-31): Fixing broken wiki links
  • Revision 16340 (Modified on 2025-01-31): Fixing broken wiki links
  • Revision 16337 (Modified on 2025-01-30): selfVM.Navigate(someclass.nullvalue,'SomeViewModel') would fail due to Navigate creating a temporary class action and we had a blanket rule to set enable false on class actions with nullroot. The sepcial case of selfVM.Navigate is now excepted to allow nav to unrooted screens
  • Revision 16332 (Modified on 2025-01-29): ...
  • Revision 16324 (Modified on 2025-01-26): Issues with new CacheInval manifest tool. It saved data - and it should not.
  • Revision 16323 (Modified on 2025-01-26): New cache invalidation Manifest tool in the debugger did not correctly init the Transform service etc. Fixed
  • Revision 16322 (Modified on 2025-01-26): Issues with DebuggerTab in LiveEdit
  • Revision 16320 (Modified on 2025-01-26): For cacheInvalidations ViewModels we now recognise columns CacheIgnoreObjects* , that should return list of objects that will be ignored from the manifest - this further extends the existing CacheIgnoreClasses. The OCLDebugger tabs for ViewModelTree and ViewModelUI now has an new button : CacheInvalidation Manifest Size This button creates text output to inform how large the manifest will be if CacheInvalidation is used, and what it will contain. Example of output: C A C H E - I N V A L I D A T I O N - M A N I F E S T -------------------- 1 Detail.Attribute1 1 Detail.Attribute2 1 Detail.Class1 1 Detail.Thing 1 Thing.AssociationClass 1 Thing.Details 1 Thing.MultiValuePick 1 Thing.SomeDateTime 1 Thing.SomeInt 1 Thing.SomeString -------------------- Totals number of rows: 11 If the manifest contains more than 50ish (debatable) lines you should try to cut away things that are unlikely to change Some attributes/objects may really be immutable in practice, and thus not worth tracking change on CacheIgnoreClasses column is used to return a list of string names of classes we should ignore totally CacheIgnoreObjects<name> columns are used to return lists of objects to ignore totally NOTE! what you see here is how ONE-SPECIFIC-OBJECT will fare, you should test several objects to see what is representative NOTE! You may want to revisit this tool when you have collected more data in your system - to get representative manifest sizes
  • Revision 16319 (Modified on 2025-01-25): Refactoring of code to allow creation of MDrivenCache-manifest-rows from debugger
  • Revision 16316 (Modified on 2025-01-24): Normally when building ViewModel tree hierarchies we ensure vCurrent Upstream in the tree, but when a deep hierarchy uses its own vCurrent as hierarchy builder (bad idea since everything below this point will be same branch) - then its important to remember which of the collection of the cloned branches was actually clicked - this was not done earlier and that gave a race effect where vcurrent of such hierarchies eventually settle on something unlikely correct.
  • Revision 16315 (Modified on 2025-01-24): OclEditor - annoying replace all in this scenario "vSomething or vOther..." when picking from tree all was replaced due to space not being handled as a separator. Fixed. Better handling of resolve of loopvariable context in this scenario "somethings->collect(x|)", now when picking properties from tree "x.picked" will be used , before it was just ".picked"
  • Revision 16314 (Modified on 2025-01-24): Issues with AnalyzeExpressions and ReCreate-expressions did not correctly handle DateTime constants - and multiple use of derivations could make AnalyseExpressions fail to show correctly when using ExpandDerivations - fixed
  • Revision 16311 (Modified on 2025-01-22): Clean up of CellStyles for Styles in Model, further aligning between Blazor and Angular for Styles in model Issue with add-SingleLink-Setter in grid cell fixed
  • Revision 16309 (Modified on 2025-01-21): New and extended search logic as described here at the bottom of this page: https://wiki.mdriven.net/Documentation:Convergence_%E2%80%93_ViewModels,_import,_export,_multi_search,_synchronization_and_Excel New from 2025 is that we before checking for semicolons (again this is only of no other hits where found) we now look for space - and if found we inject a wildcard instead of space if we after all this still have zero hits, we now split on space and search for individual words.
  • Revision 16306 (Modified on 2025-01-21): OPtimization of IndexOf when adding 1000ths by assuming add/last, saves aprox 8 percent on monster 5000 class model
  • Revision 16305 (Modified on 2025-01-20): ...reverting one of the ocleditor changes to better find type in position
  • Revision 16303 (Modified on 2025-01-19): Changes to implement Qualified associations in MDriven OCL/ActionLang - read more on https://wiki.mdriven.net/index.php?title=Documentation:QualifiedAssociations
  • Revision 16299 (Modified on 2025-01-17): Added methods to ASP_User to easier change pwd, and added UI to MDrivenServer UserAndRolesAdmin to change pwd and unlock users
  • Revision 16298 (Modified on 2025-01-16): Blazor cell styles; styles in model merged also standalone compstyles - now cell and cellcontent is isolated
  • Revision 16288 (Modified on 2025-01-12): Better actions handling when nesting is tuple, from before we acted on first object , but now the ActAsForActions expression can be used to for this. StylesInModelView cleaned up for usability Issue with styles and merge and double merged discovered and fixed (styles disappeared if merged again)
  • Revision 16284 (Modified on 2025-01-09): Blazor issue with int and Guid CellSelect issue when major grid-changes (seek result is new) Fixed In Blazor-client we got issues of mprphing between VMClassObject and VMClassListItem - VMClassListItem was removed to handle everything as VMClassObject
  • Revision 16283 (Modified on 2025-01-09): New TV on Nesting AutoSelectFirstRow, lets you control if first row should be auto selected in datagrids - the default behaviour depends on the MultiSelect setting as described here: https://wiki.mdriven.net/Documentation:VCurrent_and_vSelected
  • Revision 16282 (Modified on 2025-01-09): Blazor now listens for enter to start search in Seekers Blazor now allows for paste of tabsep-data outside of the grid to be sent to api/ExcelPlugin AngularJS now allows for paste in table-header to send tabsep data to api/ExcelPlugin
  • Revision 16280 (Modified on 2025-01-09): CellSelect - issues in both angular and blazor - code simplified and reworked to javascript
  • Revision 16277 (Modified on 2025-01-08): In MDrivenTurnkey we did not fully check ReadOnly or isStatic prior to applying the updated value serverside - this could be used as an exploit by a trusted user that could push data into readonly or static fields with Rest calls withing the trusted session. Fixed. - when fixing above we accidently broke ability to set vCurrent and vSelected - these are and should be open always - if attacker wants to create there own selection logic they are welcome and information security implementations should not be based on convoluted rules to hinder selections on things on screen
  • Revision 16276 (Modified on 2025-01-07): In MDrivenTurnkey we did not fully check ReadOnly or isStatic prior to applying the updated value serverside - this could be used as an exploit by a trusted user that could push data into readonly or static fields with Rest calls withing the trusted session. Fixed.
  • Revision 16275 (Modified on 2025-01-07): Several issues with InplacePopup handled - it did not correctly build inner PC structure of popup and left residues outside of popup MDrivenStyleChecker logic reworked to allow for ModelIndepentant access and view - removing the need to add a MDrivenStyleChecker ViewModel for this purpose. MDrivenStyleChecker now backed by localhost turnkeyserver; MDDesign/StyleOverview StylesInModel-view , ,colors took to much space and was moved into an inplace popup Blazor mistake made all blobs render as texts - fixed
  • Revision 16273 (Modified on 2025-01-03): StyleInDesign and VisibleInDesign for placingcontainers now in ModelIndependant web render

December 2024

  • Revision 16270 (Modified on 2024-12-31): Many changes to WebViewEdit : x COntextMeny på orange prick Click on action view opens webview if open Buttons hidden in web-viewedit BrowserBack,UrlEdit,StyleCheck,GoView/CLear+Prick, Upload model WebView tabs changed display when selected Add viewmodel in WebViewEdit WebView from toolbar when holding ctrl brings up second window Combo of viewmodels change changes WebViewEdit directly Sync ViewEdit and LiveView
  • Revision 16267 (Modified on 2024-12-28): Work in progress - Isolated edit in WebBlazor of one view, ModelIndependant Edit of WebViews in Blazor
  • Revision 16259 (Modified on 2024-12-27): Work in progress - Isolated edit in WebBlazor of one view, ModelIndependant Edit of WebViews in Blazor
  • Revision 16255 (Modified on 2024-12-21): Build system now inject correct BuildTime and you can access the via Eco.Interfaces.VersionInfo.ThisVersionDateTime
  • Revision 16254 (Modified on 2024-12-20): ParameterCheck for triggers did not accept null values for nullable parameters - fixed
  • Revision 16250 (Modified on 2024-12-19): Complex long running issue of locale dependent numbers (decimal point being , or .) along with angularJS limitation that stringformat breaking two-way binding. This has forced us to provide 2 inputs when you have both a number+stringformat , one that you only look at with stringformat (this must use type text to allow for blank-space to show as a thousand separator) , but is hidden on focus and focus brings up edit #2 - that has 2 way binding - but no stringformat and must have type=number to allow for AngularJS built in locales aware decimal separator. This gives the acceptable effect that all decimals show once you go into edit, also thousand separator disappears since space is not allowed in type=number fields.
  • Revision 16249 (Modified on 2024-12-19): Bad mistake in StringFormat for WPF made 2 days ago will give "Int32" instead of the value in any field not having an explicit stringformat, and not having a oldformat type specific string format defintion in XAML (ie like DateTime.StringFormat). Fixed
  • Revision 16247 (Modified on 2024-12-17): OCLEditor - arguments to operators now have names - this makes it easier to understand the operation; example: Method1(one:String; two:Integer; three:String) before -> self.Method1( «String» , «Int32» , «String» ) now -> self.Method1( «one:String» , «two:Int32» , «three:String» )
  • Revision 16246 (Modified on 2024-12-17): WPF StringFormat confusion; When we started with StringFormat support it was a mix of stylename and stringformat, in those scenarios style was given as "narrow" and we wanted to find narrow.stringformat, and narrow.TextBox etc as resources, this did not scale very well and we now give stringformat in std format , for example #,##.## , and we pass this in the TaggedValue StringFormat - this is a better fit as the different target environments can have their own TaggedValue: StringFormatAngular StringFormatRazor StringFormat (wpf + blazor)
  • Revision 16244 (Modified on 2024-12-17): VMClass by definition have their vCurrent_ of nestingslists set to the first object if available - now we also init the vSelected_ to first object if available. This is to make the use of vSelected_ variable for actions behave the same as the use of vCurrent_ variable
  • Revision 16243 (Modified on 2024-12-17): VMClass CanExecuteNamedAction did not correctly take ReadOnlyMode into account - This was noticed as PeriodicActions executed even when ReadOnlyMode was on . CanExecuteNamedAction now rewritten and now use AbstractAction.Enable that has the ReadOnlyMode awareness built in
  • Revision 16242 (Modified on 2024-12-17): Issue with empty space " " in EnableExpressions tricked concat of complete ViewExpression to become ... and ( ) -> giving runtime error - fixed with trim
  • Revision 16241 (Modified on 2024-12-16): OnDeleteReasonSolve(reason:string) is a new special method that can resolve cascading delete fail reasons as described here https://wiki.mdriven.net/Documentation:OCLOperators_OnDelete
  • Revision 16240 (Modified on 2024-12-16): Sort of viewmodel names in combos in debugger
  • Revision 16239 (Modified on 2024-12-16): Adding GraphAPI fields access and patch, adding permission access and send invite access
  • Revision 16238 (Modified on 2024-12-16): Changed wiki to learn in links to learn.mdriven.net Changed OclOperatator_<op> links to Documentation:OclOperatator_<op>
  • Revision 16234 (Modified on 2024-12-15): Several issues stopped StyleInModel-live changes to successfully render in LiveEdit
  • Revision 16231 (Modified on 2024-12-15): Added hiding of most menus during loading of Angular pages. Users find it confusing to see menus showing during loading on mobile devices
  • Revision 16228 (Modified on 2024-12-12): StartScreen updates - it now should also show if server is stopped mid streams
  • Revision 16226 (Modified on 2024-12-11): ...
  • Revision 16225 (Modified on 2024-12-11): CurrencyManager ran into issues with project assemblies vs plugin assemblies due to not residing in the same assembly as handles -now values are streamed between types
  • Revision 16224 (Modified on 2024-12-11): Certain combinations of expressions ending in comment became wrong when merged with accessgroups and or SysReadOnlyMode - fixed
  • Revision 16223 (Modified on 2024-12-10): SysDocBatchZip failed if SysDoc had null data - fixed
  • Revision 16222 (Modified on 2024-12-10): SysGraphAPIError class introduced to support the GraphAPI merge model. The use case to pull multiple documents in batch must allow any errors in the API usage to be managed by developer - and the execution of loops should not end
  • Revision 16220 (Modified on 2024-12-10): Tabindex on table to allow for paste on empty table
  • Revision 16218 (Modified on 2024-12-09): Fixed bug that prevented parameters to be used with RestDownload
  • Revision 16216 (Modified on 2024-12-08): cellselect work inprogress
  • Revision 16210 (Modified on 2024-12-05): Enum problem issues in blazor Styles for datatable improved
  • Revision 16203 (Modified on 2024-12-02): Upload new file, and create new folder calls added to GraphAPI now also sets SysGraphAPI.StatusFromLastOp as the other operations
  • Revision 16201 (Modified on 2024-12-02): Upload new file, and create new folder calls added to GraphAPI else if (method.Name == "UploadToFolderWithDriveIdAndId") { var driveid = variableList[0].Element.GetValue<string>(); var itemid = variableList[1].Element.GetValue<string>(); var filename = variableList[2].Element.GetValue<string>(); var blob = variableList[3].Element.GetValue<byte[]>(); result = GraphAPISupport.UploadToFolderWithDriveIdAndId(httpClient, theobject, driveid, itemid, filename, blob).Result; return true; } else if (method.Name == "CreateFolderInFolderWithDriveIdAndId") { var driveid = variableList[0].Element.GetValue<string>(); var itemid = variableList[1].Element.GetValue<string>(); var foldername = variableList[2].Element.GetValue<string>(); result = GraphAPISupport.CreateFolderInFolderWithDriveIdAndId(httpClient, theobject, driveid, itemid, foldername).Result; return true; }
  • Revision 16198 (Modified on 2024-12-02): Removed app.config, not needing and stopped build server

November 2024

  • Revision 16197 (Modified on 2024-11-30): Fix exception when using viewmodels with viewmodelclasses having non-english characters.
  • Revision 16196 (Modified on 2024-11-30): Issues with signalR from DevEnv, Now ignoring connection breaks , suspect assembly conflict with VS2022
  • Revision 16194 (Modified on 2024-11-30): Issues with signalR from DevEnv
  • Revision 16185 (Modified on 2024-11-29): Blazor grid relies unique cell ids that were exåensive to create - optimized
  • Revision 16183 (Modified on 2024-11-27): Fix of problem with requests to the server with angular binding text. Timing issue with src= for image not yet data bound
  • Revision 16179 (Modified on 2024-11-27): First stab at cell select in Blazor DataGrid - and copy to clip
  • Revision 16177 (Modified on 2024-11-26): Angular, issue with string format on numbers
  • Revision 16176 (Modified on 2024-11-26): Issue with stringformat in angular after last checkin
  • Revision 16174 (Modified on 2024-11-26): angular - Number input warning due to missing step:any attribute
  • Revision 16173 (Modified on 2024-11-26): Angular - Focus text if is Numeric
  • Revision 16163 (Modified on 2024-11-19): Several issues discovered with non-core TK and MDR regarding signalr - stuff that we already knew but had forgotten about : SignalR for ASP.NET is NOT compatible with SignalR for ASP.NET.Core - this takes us on a long journey that results in us not being able to use mdriven.net.http.netstandard in non core builds but instead mdriven.net.http , this is a bummer for many reasons and probably something that will make us deprecate the None core builds soon
  • Revision 16161 (Modified on 2024-11-19): Fixes to MDrivenServer (non core)
  • Revision 16157 (Modified on 2024-11-18): SignalR version confusion after consolidation to netStandard - fixed
  • Revision 16156 (Modified on 2024-11-17): Issue with PlacingContainers for single-link nestings being repeated as empty PC - fixed
  • Revision 16155 (Modified on 2024-11-15): ...
  • Revision 16152 (Modified on 2024-11-14): ...
  • Revision 16148 (Modified on 2024-11-14): VSIX and Designer changed to use netstandard builds of all persistencemappers
  • Revision 16137 (Modified on 2024-11-12): OrderBy breaks of early OrderBy(arg1,arg2,arg3... if arg1's ar different there is no need to compare args2's
  • Revision 16136 (Modified on 2024-11-11): The Debugger UI for ViewModel is now applying the styles in model

October 2024

  • Revision 16129 (Modified on 2024-10-31): Bug in checksum on Linux showed up as inability to use newlines on method bodies and ocl without checksum breaks - fixed VMClass - when nestinglist changes we now ensure the vSelected and vCurrent does not contain values NOT in the new list Bug in Turnkey UpdateSysToken caused multiple tokens being created with confusing results and issues with access. Fixed bug plus added compensating code to clean up double tokens
  • Revision 16127 (Modified on 2024-10-30): When VMClass VMManyAssociation has been updated - we now check that the vCurrent for this list is not left pointing to a value that does not exists in the list, and if the list has values but the vCurrent is out of list or null we now set first row. This is to mitigate issue in turnkey when new search that connected to a lot of details showed old details on new search.
  • Revision 16126 (Modified on 2024-10-30): When having RenderedBy - we now check that if you are non-boolean that you have set IsStatic on the column - RenderedBy must find a consistent place to click we cannot be editable at the same time. The renderedBy widget did not correctly adhere to the renderedactions readonly, or the ReadOnlyMode depending on WillEffectPersistent - fixed
  • Revision 16108 (Modified on 2024-10-29): Major changes to allow for DesignTimeSupport of WinForms for .net6+ components. MDriven relies on types defined in the solution, not necessarily in the same project and not in the same form. The .net6+ designtime support make use of an out of process designer called DesignerHost - and we must serialize and send components information and type information across this barrier - this required serious re-design and understanding. From this release NOTHING needs or should be in the GAC!!!! For winforms designer code AddRange(IColumn[]... should be replaced with AddRange(AbstractColumn[]...
  • Revision 16106 (Modified on 2024-10-25): Comboboxes in angularjs could null out when the list did not contain the selected value - as may happen during async load - solved by databinding in the current value as an hidden option (actually amazingly smart if it works ) Minor changes to scripts during debugging
  • Revision 16105 (Modified on 2024-10-25): SysSession updates - now states login method cookie if user was remembered but session or serverversion was new
  • Revision 16103 (Modified on 2024-10-25): ...
  • Revision 16102 (Modified on 2024-10-25): SysSession implemented for turnkeycore, this will not be maintained for turnkey for .netFramework472
  • Revision 16101 (Modified on 2024-10-24): Several changes to allow for Injecting templates from other sharepoint documents in order to create reports
  • Revision 16093 (Modified on 2024-10-22): MDrivenServer now has a TwoFactorCodeCheck for Upload model that can be turned on - this is to better protect production databases from mistakes... MDrivenDesigner has a new box to give the 2 factor code for the server. Designer has dropped the Upload ServerSide-jobs since this is automatic from months back...
  • Revision 16091 (Modified on 2024-10-22): SysMDrivenMiscSettingsSingleton is now internally subscribed to behave better when values change in runtime (like they will if values are derived for example)
  • Revision 16085 (Modified on 2024-10-17): Issue with Action in Grid that is connected to AbstractAction - that was NOT classAction - tried to use per row enable when it really follow ViewModelActions Enable - fixed
  • Revision 16084 (Modified on 2024-10-17): Improved logging if ocl method fails Added new SysGraphAPI method DriveDriveItemToThumbnailData to get acces to thumbnail data directly instead of the previous way DriveDriveItemToThumbnailUrl that points to CDN possibly blocked on server
  • Revision 16083 (Modified on 2024-10-16): ...