MDriven v7.0.x - May 2025

Released: Jun 10, 2025

v7.0.x - May 2025 버젼 업데이트

기능

Designer

  • Enhancements
    • Vibe/LLM Integration:
      • Vibe information is now available in the plan dialog.
      • Updated Vibe UI LLM prompt and fed XML to reduce misunderstandings.
      • A new Vibe-coding technique allows LLM to redesign ViewModels (experimental but encouraging).
      • Reworked all calls to LLM/Vibing to be async and non-locking.
      • Updated LLM engine to Gemini 2.5 to better handle complex UIs.
    • Styling & Layout:
      • Diagram Placed ViewModels now include a "Focus-In-Tree" option.
      • Added IgnoreContent boolean on Columns and PlacingContainers to set underlying flex-content to zero, improving alignment in ListViews.
      • IgnoreContent of PlacingContainer has been implemented in WPF flexpanel.
      • ActionRenderPosition has a new ButtonOnly value, used when a left-side/toolbar action is opted out but still used in buttons, fixing several related issues with "Are You Sure" questions and ViewModelContextAction.
      • Added --label-font-size CSS variable, documented on the wiki, and applied to control label sizes.
      • Added --textfield-label-clr CSS variable for label colors, applied to all labels.
      • ColumnarLayout now includes PlacingContainers on single-link Nestings.
    • Model Management:
      • Added silent clean-up of mishaps discovered on model load (rouge associations and ends).
      • Added setting to XML package loader IncludeAllEvenDefaultValues for better Vibe-coding information.
      • MDrivenServer now turns off allow registrations when a pwdreset file is applied, signaling a strong/non-local-dev server.
  • UI & Usability Fixes
    • ViewModel Editor:
      • Reduced saturation on some colors in the ViewModelEditor for improved aesthetics.
      • Better info and direct link to wiki from the theme-styling dialog.
      • Improved progress feedback on vibing functions.
      • Bookmarks now have the same context menu as the tree for consistency.
      • When opening a red-dot error, the system now prioritizes opening in an already open WPF or Web ViewModel editor, otherwise, it opens a new WPF editor.
      • A new null check in WebViewEditor ViewModelEditorTree error list provides better feedback on what it points to when clicked.
    • General UI:
      • Renamed "AdvancedStyling" tab to "ThemeStyling".
      • Improved drag and drop in the tree that sometimes was not caught due to buttons receiving the drop.
  • Performance & Stability Improvements
    • Azure Connectivity:
      • Improved changes to reach Azure straight from the designer.
      • Ensured uploaded data to Azure does not use VistaDB to prevent resource consumption on low-tier Azure.

Framework

  • Breaking Changes
    • Assignment Operator (:=): Assignment now goes from RHS-type to LHS-type (Left-hand side decides type). This will likely break some expressions, requiring typecasting.
  • Enhancements
    • Vibe/LLM Integration: Vibe UI LLM updated prompt and fed XML to reduce misunderstandings.
    • Actions: ActionRenderPosition has a new value: ButtonOnly. This is used when a left-side/toolbar action is opted out but still used in one or more buttons, fixing several old problems, especially regarding AreYouSureQuestions and ViewModelContextAction.
    • Styling & Layout:
      • IgnoreContent of PlacingContainer has been implemented in WPF flexpanel.
      • --text-on-primary text on buttons was set to white but had theme-default issues; resolved to allow theme-default to apply, and text on buttons is now changed to black.
      • Turnkey runtime prepared for new PlacingContainer property that controls flexbasis called IgnoreContent.
    • OCL:
      • In OCL, EnumOrd now populates with the ordinal number of the enumerated value (0,1,2) for expressions like MyEnum.allinstances.EnumOrd.
      • Comparison between Enum.value and integer is now allowed (falls back to EnumOrd).
    • Development Environment:
      • OclVariableConverter, a TypeConverter needed for design and WinForms design code generation, has been moved from eco.handles.design to eco.handles. This helps de-confuse the WinForms .NET 8 design host (designtoolserver) and extension-loaded types from project-loaded types. Consistent behavior (non-misbehaving WinForms editors) now requires MDriven design time and MDriven NuGet mdriven handles no older than this version.
  • Performance & Stability Improvements
    • GraphAPI Access: Changes on all operations for GraphAPI access to deduce if it is "InvalidAuthenticationToken" and if so - refresh the token and execute the operation again.

Turnkey

  • Enhancements
    • Advanced Styling: Made major updates to advanced styling with LLM support and fast-track CSS.
    • Web UI Alt-Key Navigation: Implemented Alt-key in Web-UI (Blazor and Angularjs). This now intelligently tries to focus the toolbar, then the main menu, and if already at the first item in either, it tries the other.
    • StringFormatAngular Enhancement: Introduced numberhash:dec for StringFormatAngular. This allows for two decimals, but will show more if they exist (e.g., 0.00#).
    • Binary Data Support: Added the ability to post binary data to Turnkey exposed Rest service. A single column BYTEARRAYCONTENT now receives blobs, following the pattern of string data STRINGCONTENT. These types are checked if the uploaded content is not a Form-record.
    • MDrivenServer Communication Logging: The Turnkey-log will now clearly reflect communication breaches with MDrivenServer when it is "Not Started" or unreachable, providing better visibility.
    • Exception Tracking: SysTurnkeyTrace now tracks Exceptions in the same structure as navigations, improving debugging capabilities.
    • Styling Variables: New CSS variable --label-font-size has been added and documented on the wiki, applied to control label sizes. --textfield-label-clr color of labels applied to all labels.
    • PlacingContainer Property: Turnkey runtime prepared for a new PlacingContainer property that controls flexbasis called IgnoreContent.

Server

  • Enhancements
    • Security & Configuration: MDrivenServer now automatically turns off registrations when a pwdreset file has been applied, signaling that it should operate as a strong/non-local-dev server.
    • Logging & Diagnostics: Added more logging at Turnkey and MDrivenServer startup to better detect Azure behavior.

수정사항

Designer

  • Bug Fixes
    • PlacingContainer Issues:
      • Fixed a "trigger happy" new error message on using PlacingContainer in root that appeared prematurely.
      • Fixed an issue where selfVM.ExecuteAction could fail if Nestings for search expressions were present.
      • Fixed a glitch in Vibe progress close.
      • Resolved multiple issues with StylesInModel and theme data: it now survives save/load and loads correctly in Turnkey even if only one Style is declared, and handles singleton load issues.
      • Fixed detection of missing PlacingContainer in single Nestings when Span has them, which broke rendering, and added a rescue operation.
      • Fixed PlacingContainer Index bug of child PCs.
      • Corrected the DefaultValue of PCIgnoreContent and IgnoreContent on PlacingContainer from false to False for proper ignoring.
    • Vibe UI: Fixed VibeUI when it was discovered that LLM changed random signs in GUIDs.
    • TagExtensionForm: Fixed issues where TagExtensionForm had stopped working.
    • Typo Correction: ExecuteFrameworkRuntimeActionRT.ReadOnlyModeToogle is corrected to ExecuteFrameworkRuntimeActionRT.ReadOnlyModeToggle.

Framework

  • UI & Usability Fixes
    • ViewModel Editor: Issue in ViewModelEditor with Mounted views.
    • ComboBoxes: When listing native type values in a combo box and trying to assign one by pick, Turnkey now behaves better for datetime, bool, int, double, and decimal.
    • Search & Selection:
      • Issue that Seek multiple times on the same string sometimes could remove the selection made by AutoSelectFirstRow.
      • AutoFirstSelectRow was glitchy if something was selected prior to a new search.
    • Read-Only Mode:
      • ReadOnlyMode when turned on globally also affected MVCAutoForms - these forms can now ignore ReadOnlyMode for easier debug editing.
      • Update to vSysReadOnlyMode is NOT entered if the object IsNew.
  • Bug Fixes
    • Styling: StylesInModel issue with button not getting its icon covered by the componentlabel target.
    • Core:
      • selfVM.ExecuteAction used internal function that could fail if Nestings for search expressions were present.
      • In C# Math.Round(-1.0/10000) gives negative zero that survives to ToString giving "-0.00". This is legitimate but annoying and deemed of low value so in MDriven (-1.0/10000).Round(2) will from now on return a positive zero.
      • DynamicEnumString did not correctly implement Equals leading to combobox presentation halting.
      • ElementHandle did not correctly create columns when switching types if new type was IEnumerationType - affected debugger output that showed last result type if the result type was IEnumerationType.
      • 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.
      • Ocl_includes did not handle enum compare.
      • OclResultTypeDeduceMethod.TypeOfFirstParam was really 2 and OclResultTypeDeduceMethod.TypeOfSecondParam was really 3 - fixed this and also added OclResultTypeDeduceMethod.TypeOfThirdParam. This gave problems when implicitly upgrading ints to double in an assign somedouble:=0 when it was enclosed in ->collect because the list was int and not of double.
      • Serious Bug: A month-old bug regarding IdentityChangers (new objects have GUID ID, and saved get permanent ID) - when on root web clients did not correctly update URL to show new ID, and client-side ViewModels did not get all the needed IdChange messages to correctly upgrade ID on objects held deeper in the hierarchy than root.
      • ExecuteFrameworkRuntimeActionRT.ReadOnlyModeToogle is corrected to ExecuteFrameworkRuntimeActionRT.ReadOnlyModeToggle.
    • Development Environment:
      • OclVariable as a placeable component did not work with new required WinForms net48<>net5 streaming - now works for net48.
      • OclVariable as a placeable component did not work with new required WinForms net48<>net5 streaming - work in progress.

Turnkey

  • Bug Fixes
    • DataGrid Selection Consistency: Both Blazor and Angular clients now only include the vCurrent_ object in the vSelected_ collection if the nesting is tagged with Multiselect, preventing unintended multi-selection behavior.
    • SkipWhenBacking: Updated implementation of SkipWhenBacking in Angular after reports that it skipped too far, homogenizing its behavior with Blazor.
    • Modal Grid Expansion: Fixed a missed flex-grow style for .tk-data-table.ctGridYBottom .tk-data-table__content which prevented modal grids from expanding correctly.
    • Ctrl+Enter Hotkey: Issue with Ctrl+Enter Turnkey hotkey showing "Save" even when nothing to save is fixed.
    • Angular Double Click Navigation: Issue with Turnkey angular double-click execution of a single action that navigates when holding control not opening in a new tab is fixed.
    • ViewModel ShownByAction: ViewModel ShownByAction will now correctly indicate if it is popup, modal, or normal.
    • Angular Client Control Keys: Fixed an issue in the Angular client where control keys did not fully execute their after-action due to a roundtrip fillup.
    • Variable Dialog: Add variable-dialog now offers an "As-collection" checkbox instead of listing all types, streamlining the process.
    • Blazor Table Row Heights: Removed Blazor-specific table row heights and harmonized them to existing variables.
    • SCSS Transpilation: Corrections in SCSS to ensure it can be correctly transpiled to CSS.
    • Table Border Color: Table border color now uses a variable for consistent theming.
    • Button Text Color: Resolved theme style issue where default Buttons text should use --text-on-default-btn but used --text-on-primary. Text on buttons is now correctly black.
    • "Are You Sure" Prompt: New keyboard shortcuts only prompt "AreYouSure" if the data is dirty, and only perform a save if data is actually dirty.
    • AngularJS Escape Key: Escape key in AngularJS should now correctly prompt "Are you sure?" before canceling.
    • Blazor Escape Key: Fixed "Asking before escaping" in Blazor shortcut keys.
    • Debugger Tuple Cloning: Issue in the debugger when cloning ViewModel variables where one is a Tuple is fixed.
    • Keyboard Shortcuts: Changes for keyboard shortcuts for Save (Ctrl+S), SaveAndLock (Ctrl+Enter), EditMode (Ctrl+E), CancelAndLock (Esc), undo (Ctrl+Z), redo (Ctrl+Y) are implemented in both Angularjs and Blazor-client.
    • Blazor Datagrid Styling: Blazor datagrid styling is now better aligned with Angular.
    • SCSS Sidebar Width: SCSS sidebar width variable is now respected.
    • .NET Framework Updates: Updates to enable MDriven VS2022 on ARM64 required .NET Framework 4.8 and late VS2022 (Version 17.13.6). All components compiled with .NET Framework 4.7.2 have been raised to .NET Framework 4.8. This is a critical update: users must update VS2022 and MDriven NuGets, and ensure their projects target at least .NET Framework 4.8.
    • Up-Promotion Handling: Turnkey did not correctly handle up-promotion from new to saved objects, causing the ViewModel to be recreated and lose variable state. This issue has been fixed.
    • Save Notifications: "Save and Keep open" action now correctly notifies "Changes saved".
    • Modal ESC Key: Fixed modal ESC key lingering after close due to bad event implementation in TS client.
    • Modal Alert Dialogs: Reverted back to browser alert dialogs due to lack of support for nested dialogs in Angular.
    • Modal Keyboard Shortcuts: When in a modal, the system should no longer listen for Ctrl+E (enter edit) or Ctrl+S.
    • ReadOnlyMode in MVCAutoForms: ReadOnlyMode when turned on globally also affected MVCAutoForms, making debug editing harder. These forms now ignore ReadOnlyMode.
    • IdentityChangers (Serious Bug): A critical, month-old bug regarding IdentityChangers (new objects get GUID ID, saved objects get permanent ID) has been fixed. Previously, on root web clients, the URL did not correctly update to show the new ID, and client-side ViewModels did not receive all necessary IdChange messages to correctly upgrade IDs on objects held deeper in the hierarchy than the root, leading to data inconsistencies.
    • Save/Save&KeepOpen Logic: When both Save and Save&KeepOpen actions are present, Ctrl+Enter should now use Save&KeepOpen, otherwise Save. An extra defined check in typescript UpdateSelectedStateForTable was added.
    • ExecuteFrameworkRuntimeActionRT.ReadOnlyModeToogle: Corrected typo to ExecuteFrameworkRuntimeActionRT.ReadOnlyModeToggle.