@mod-system/js/compat/innertext.js is obsolete and has been removed. See https://gitlab.com/webhare/platform/issues/7
The implementations widgetedit (<screen implementation="p:widgetedit"> and WidgetEditScreenBase) and widgetextension
(<tabsextension implementation="p:widgetextension"> and WidgetEditExtensionBase) have been deprecated since March 2019 and have now been removed.
A widgetedit screen should be replaced with a tabsextension and for a widget tabsextension the implementation attribute can be removed.
The datastore property for <p:whfsinstance> has been removed.
wh rewrite is now wh dev:rewrite
Assigning DEFAULT RECORD to a composition no longer resets all associated cells, as this was inconsistent with the behavior of
assigning partially set records (which ignored instead of cleared missing cells). Use ResetValue to explicitly reset all cells of a composition
formsapi forms that want to resubmit themselves without invoking reset() on themselves first, must invoke reallowSubmission() (eg in onSubmitSuccess)
to prevent accidental submission loops.
Support for storing siteprofiles in the Publisher has been removed. All siteprofiles should now be in modules and loaded through <webdesign> and/or <webfeature>s
rpc.json services no longer enforce one call at a time. If you need to enforce this you'll have to manage and await promises yourself.
rpc.json's rpcResolve has been deprecated. Use AbortControllers for 4.28+ code. A IE11 polyfill has been added
@mod-system/js/net/jsonrpc has been deprecated.
Things that are nice to know
WRD types now have a haspersonaldata flag, which can be set to TRUE for types that may contain sensitive user data. All types that refer to a type that has set haspersonaldata to TRUE are also considered to contain user data. The WRD_PERSON type has this flag set by default. When exporting or syncing WRD schemas you can choose to only export/sync non-personal data, all data or select which types to export/sync. Exporting and syncing WRD schemas now also logs audit events.
A <filetype> can now set kind=virtualfile|rawfile|datafile to quickly set some of the most common fileype properties
A <filetype> or <foldertype> can now define members in its <members> subproperty and don't need a separate <contenttype> then. You
wil need to change the typedef= attribute to namespace= to allow this
Contenttype members can now use their type as localname: eg <member name="mytext" type="string" /> can now just be <string name="mytext" />
A <filetype> or <foldertype> is now a source of <apply> rules implicitly applied to that type.
A tollium <screen> can now set footerbuttons= to directly set up its footer node. Eg <screen footerbuttons="ok cancel">
The footerbuttons is also available on the screen's frame, eg this->frame->footerbuttons := "ok cancel";
You can still setup a footer with a <defaultformbuttons>. The footerbuttons will then simply overwrite the buttons of all defaultformbuttons elements.
Setting/Resetting enabled on a composition now affects all its cells.
<arrayedit>s can now be toggled into a 'view-only' mode by setting its buttons property to view. It will request its rowedit screens to go into view mode too. (custom edit handlers should check ->InViewMode())
an <arrayedit> can set viewifdisabled="true" which will switch the arrayedit into view-only mode if it's disabled.
A rowedit screen will now control its defaultformbuttons itself, setting it to OK/Cancel when editting and to Close when in view mode.
Tollium components can now have user-defined attributes that apply to any element, even builtin ones. These 'user attributes' must be in a
separate namespace and defined in a XSD just like components and are available through the readonly property 'userattributes' on any component.
Tollium <checkbox> now supports 'indeterminate'
QueueMailInWork has an option ignorerecipientwhitelist to ignore the email recipient whitelist
WRD Password resets (including WebHare itself) will ignore the email recipient whitelist