Changelog
yuuvis® shell
3.25.0
Section titled “3.25.0”Released 10/08/2026
Deprecations:
- Writing to
ShellService.shellConfigviaset()orupdate()is deprecated and will be removed in the next major version. UseShellService.setShellConfig()to change the app’s config, orShellService.setThemeAppIcon()to set or clear the app icon of the tenant theme. ReadingshellConfigreturns the app’s config with the theme’s app icon on top
Features:
- Global apps: apps that are always available in a collapsible, resizable side panel next to the active app, e.g. an AI chat. Declare them with
provideShellGlobalApps()from@yuuvis/client-shell-coreinapp.config.ts, or register them at runtime viaShellService.registerGlobalApp(). Like routed apps, they are only shown if requirements,permissionsand the feature configuration allow it. If no global app is available, there is no panel. With several apps, a picker in the panel header switches between them. The panel can be popped out into its own window, which takes over the current theme, and on small screens it opens as a drawer from the navigation menu. Its collapsed state, width and active app are stored on the device.GlobalPanelServicelets apps open the panel from code withactivate(id). Note:@yuuvis/client-shellnow has a peer dependency on@yuuvis/client-components yuv-query-listandyuv-tile-listcan show newly created objects at once: list theEventServiceevent types that announce them in the newcreateEventsinput. When such an event carries aDmsObject, or an array of them, the objects go on top of the list as drop-in items on whatever page it shows. A tile that is already shown moves to the top instead of showing twice. The tile list then selects the first new tile; to turn this off, setskipSelectionOnDropIn. The newprependDropItems()method does the same from code, and the selection stays on the items it was on. Drop-in items are highlighted by a border that fades in, stays for a while and fades out. Style it with the--drop-in-highlight-*CSS variables (color,rest-color,border-width,radius,inset,fade-in-duration,duration,fade-out-duration)- URL fields in forms accept addresses without
http://,https://orftp://, e.g.example.com, and open them viahttp://. A hint under the field explains this. Links of URL, e-mail and phone fields now have an accessible label, and web addresses open in a new tab. New helpersUtils.isValidUrl(),Utils.hasUrlScheme()andUtils.toAbsoluteUrl()are available in@yuuvis/client-core(TUK-9356) - Widgets of the widget grid can set their own size:
GridWidget.defaultSizeis used when the widget is added to the grid.GridWidget.minSizesets the smallest size the widget can be resized to - The theme page of the shell admin got a larger live preview: a resizable split view shows buttons, form controls, a progress bar, a list selection and color swatches next to the pickers. The preview can be switched between light and dark mode on its own. It is also available as
ThemeAdminPreviewComponent(yuv-theme-admin-preview)
Bugfixes:
- When a form script set fields to
readonly, they were marked as modified and the metadata form offered Save, although no value had changed. Locking or unlocking a field no longer counts as a change (TUK-9846) yuv-object-formstayed read-only after itsreadonlyinput was switched back tofalse, or after a re-render with a differentformOptions.disabled. Building the form changed the form model passed in by the caller. The form is now built from a copy, so the caller’s model stays unchanged (TUK-9864)- Read-only form fields were disabled controls, so their content could not be selected or copied. Read-only text areas with more lines than
rowscould not be scrolled either: the mouse wheel scrolled the page behind them. Read-only fields now stay focusable, selectable and scrollable but are still dimmed. Validation is skipped for them, so a read-only required field without a value no longer blocks the form. Note: read-only fields now have an enabledFormControl(disabled: false). OnlyformOptions.disabledstill disables controls - Content behind a fading
yuvBusyOverlayignored clicks, e.g. a click on a list item right after the list had loaded was lost. If the content got busy again during the fade-out, the overlay was removed too early. Clicks now reach the content as soon as it is no longer busy, and a new busy state keeps the overlay - After an automatic logout, either from session timeout or a
401response, users now return to the page they were on once they log in again. The return address is now encoded, so deep links with their own query parameters work too - Tenant theming:
yuv-colormarked its form as modified as soon as it was shown. A new app icon did not show in the shell logo until the page was reloaded. Without a theme icon, the app’s own icon was not shown again.ShellThemingService.save()created a second theming configuration ifload()had not run before. The theme icon is now shown live, also as a preview. Without one, the app’s own icon is shown. Saving updates the existing configuration
3.24.0
Section titled “3.24.0”Released 10/05/2026
Features:
- Form scripts can react to editing table rows: the new
onroweditcallback of a table element runs whenever the row editing dialog opens. Through itsrowobject a script can set the values, required and readonly state and errors of the row’s cells, react to changes, and prevent saving viasaveEnabled. Changes apply to the dialog only and are discarded when it closes. Hosts outside form scripting provide the callback viaTableRowEditSupporton theformElementofyuv-data-grid(TUK-10144) - Search hits in the command palette can be shown through the property renderers, so a date is formatted, a catalog value shows its label and an organization field shows the user’s name, just like in the object lists. To enable it, add
provideShellCommandPaletteRenderer()from@yuuvis/client-shelltoapp.config.ts, or register your own component withprovideCommandPaletteSlotRenderer(). Note: matched terms in search hits are no longer highlighted, with or without a renderer.CommandPaletteSearchResulthas a new required fielditems
Bugfixes:
- In lists and tile views, a drag-selection could leave an invisible selection frame behind that blocked every click on the page. When the browser cancelled the pointer (e.g. a touch gesture or a lost
pointerup), the frame was never removed. Cancelled pointers now end the drag-selection, and a frame left behind is removed when the next one starts (TUK-10025) yuv-datetimedid not show arequirederror set up by the surrounding form, and its own validation wiped that error from the hosting control as soon as the entered date was valid. The field now keeps the host’s validation result and reflects it in its error state, also when the control is marked as touched from outside, e.g. by a form script or on submit. In addition, the error messages of all metadata form fields now appear as soon as a field is marked as touched from outside, not only when its validity changes (TUK-9818)yuv-query-listcould show the result of an outdated search. Requests ran side by side, so a slow response to an earlier query or page overwrote the newer one, and a new query was dropped entirely while another one was still loading. The latest request now cancels the one in flight, the paginator always shows the page that is actually loaded, also after a failed request, andrefresh()moves to the last page when the current one no longer exists, e.g. after its objects were deleted- The buttons on smart-search condition chips were hard to use with a keyboard or screen reader. The dynamic-condition toggle had no accessible name, so screen readers only announced “button, pressed”. Pressing Enter or Space on it or on the remove button also opened the condition for editing, and inside a host
<form>it submitted that form. Focus now stays in place after toggling a chip; after removing one, it moves to the next or previous chip or to the add-condition button (TUK-9805)
3.23.0
Section titled “3.23.0”Released 09/25/2026
Features:
- The command palette can search the dms: type
#followed by a term to find objects and open them in the app that owns them. Apps make their object configs available to the search viaObjectConfigService.registerConfigTypes(). See the Command Palette guide for details - Tenant-wide shell theming: enable it with
ShellBootstrapOptions.enableThemeConfigto set the primary color, brand colors and app icon for all users. The shell-admin app gained a theme page with live preview - New
@yuuvis/material/themingentry point withgeneratePrimaryThemeVars(), which derives the Material Design 3 primary colors from a single hex color - New
yuv-colorform element for picking hex colors - Widgets can request a larger setup dialog via
GridWidget.setupDialogSize(TUK-9980)
Bugfixes:
- The widget picker dialog cut off widget setup views. The dialog was held to Material’s default limits (560px wide, 65vh tall), so setup views with a configuration-and-preview layout were clipped. The setup view now uses the available screen space, and the dialog returns to its normal size when the user goes back to the widget list (TUK-9980)
- Copying objects with table properties failed with “Malformed table. A row of the table ’…’ is not a list.”
DmsServicesent table rows in the client’s form, one object per row with_titleenrichments, while the Core-API only accepts each row as a list of column values. Rows are now converted back, with the column names sent alongside. Copying also no longer strips properties from the source object that is still on screen, so pasting the same clipboard entry a second time sends the complete data (TUK-9993) - Opening a tile’s actions menu reset a multi-selection to that single tile. Pressing the menu button started a drag-selection, and even a click that moved the mouse by a pixel then replaced the selection. Presses on buttons, links and other interactive elements no longer start a drag-selection, a drag only selects after the pointer has moved at least 5 pixels, and right-clicks never start one (CASEM-3484)
- Users without a saved locale got English (
en) instead of the default client locale configured inmain.json, because the user model filled inenbefore the configured fallback could apply. The locale marked asfallbackinmain.jsonis now used, also when the user settings cannot be loaded - After closing, the command palette could only be reopened with the keyboard after a mouse click. While closing, it pulled the focus back into its input field, which was removed a moment later, so the browser sent all key presses to that detached field and the shortcut never reached the page. The palette now releases the focus as soon as it starts closing
- The “add type” button in smart search had no tooltip (CASEM-3671)
Dependency Updates:
- Added
@material/material-color-utilities^0.3.0as a peer dependency of@yuuvis/material. Applications have to install it
3.22.1
Section titled “3.22.1”Released 09/18/2026
Bugfixes:
yuv-numbervalidatedprecisionandscaleagainst the typed text instead of the parsed value, so locale grouping separators, a leading sign and the unit of thefilesizeclassification (“1.5 MB”) were all counted as digits — legitimate values were rejected, while integer fields silently accepted decimals: ascaleof0, set explicitly or left unset, was treated as “no limit”. Digits are now counted on the parsed number, with exponential notation (1e-7,1e21) handled correctly, and a scale of0rejects any decimal place (CASEM-3698)yuv-organizationlabelled every autocomplete suggestion astype: 'role'. The discriminator was guessed from the shape of the IDM result, which never matched a user, so a user picked from the suggestions was persisted as{"id":"…","type":"role"}in the metadata json of fields usingwithMetadata. Reloading masked the defect — the chip type is re-derived from the id — so only the stored value was ever wrong. The type now comes from the source: an organization set entry keeps thetypethe backend sent, and every result ofqueryUser()is a user by definition- Buttons declared with
ymtButton="danger"rendered without danger styling.YmtButtonDirectivesnapshotted the host’s classes before applying its own, and creating theMatButtoncomponent overwrites the hostclassattribute — soymt-button--dangerwas added and immediately wiped. Onlydangerwas affected, as it is the sole variant applied as a class rather than an attribute. Warning-level confirm dialogs are shown in danger styling again
3.22.0
Section titled “3.22.0”Released 09/11/2026
Features:
- The audit timeline can be restricted to selected audit codes.
yuv-object-auditgained anactionsinput, andAuditQueryOptions.actions— declared since the first release but never passed on togetAuditActions(), and typedstring[]although audit actions are numeric codes everywhere else — is nownumber[]and actually applied byAuditService.getAuditEntries(), so a consumer can show custom audit entries only ([10000], for example). The restriction is applied after the user/admin separation and can therefore only narrow the entries the current user is already allowed to see, never widen them; an empty list means no restriction (CASEM-3468) - The shell can collapse several apps behind a single sidenav icon that opens a flyout listing its members. Apps join a group via
AppOptions.group, groups are registered withprovideShellAppGroups(), andShellService.navEntriesderives the structure: apps referencing an unregistered group stay top-level, empty groups are dropped, and a group left with one member collapses back to that app so a flyout never holds a single entry. Grouping is presentational only — routes stay flat: every app keeps its own top-level path and existing deep links are unchanged (the rationale is in ADR-009). Rendering reuses the shared overflow menu:OverflowMenuItemgained an optionalchildrenfield and itscallbackis now optional, rendered by the new recursiveyuv-overflow-submenu. A group counts as one item, so it collapses into the overflow menu as a unit - Tile lists can select the tile under the cursor on right-click. The new
selectOnContextMenuinput onyuv-tile-listis off by default, so a context menu meant to act on the existing selection keeps it; with it enabled a menu built fromselection()describes the row that was right-clicked. A tile already part of the selection never changes it, selecting this way emitsselectionChangebut notitemSelect, and the input is ignored whiledisableCustomContextMenuis set (TUK-9115)
Bugfixes:
- Actions were offered for selections they do not support.
ActionsService.getActions()only consultedisExecutable()and ignored the action’s declaredrange, so aSINGLE_SELECTaction still showed up for a multi selection. The range is now enforced beforeisExecutable()runs —SINGLE_SELECTfor exactly one item,MULTI_SELECTfor one or more,MULTI_SELECT_ONLYfor more than one,ANYfor any selection including an empty one. All four built-in actions areMULTI_SELECTand are unaffected; only custom actions whose declared range does not match how they are used will stop appearing. An empty selection now yields no actions at all (HAR-4219) - The
excludeMeoption on the organization form element had no effect./idm/searchhas no such parameter at all and/idm/users?excludeMe=trueis not guaranteed to honour it, so the signed-in user kept showing up in the suggestions — for organization set fields the option was not even passed on. The current user’s id is now filtered out on the client for both query paths (HAR-4208) - A failed delete looked like a successful one. The details shell cleared the object on every
DMS_OBJECT_DELETEDevent, including those reporting a non-2xx response, leaving an empty shell behind for an object that may well still exist;YuvEventDeletedDatanow carries the optional_errorand the shell keeps the object rendered when it is set. The dialog’s error list showed raw IDs instead of names, since a DELETE response only echoessystem:objectId; it now falls back to the subject sent with the request. A double-click on the confirm button no longer fires a second DELETE, whose 404-inside-207 was indistinguishable from a genuine failure (TUK-9934)
3.21.0
Section titled “3.21.0”Released 09/08/2026
Breaking Changes:
- BREAKING:
BadgeContextnow carries a requiredresolveUser(userId)— a cached IDM lookup that emitsnullwhen the user is unknown or the lookup fails. Anything building a context literal by hand no longer compiles; useBadgeRegistryService.createContext(dmsObject), now public, instead of assembling one yourself (CASEM-3677)
Features:
- Badges can render dynamic descriptions. A
Badgemay now definedescriptionParams(dmsObject, ctx)returning interpolation values for itsdescriptionKey, either synchronously or as anObservable. The built-in lock badge uses it to name the lock owner — “This object is locked by …” instead of the generic “locked and cannot be modified” — falling back to the raw user id when the lookup fails. Resolving params needs object context, soyuv-badge-chipgained admsObjectinput; without it the description renders un-interpolated, and while async params are still pending the description is shown without them. Theyuv.badge.lock.descriptiontext changed in bothenandde; installations overriding that key have to add the{{ user }}placeholder to pick up the owner name (CASEM-3677) - Downloads can request a particular file name from the backend.
DmsService.getContentPath()takes an optionalfilename, and the newDmsService.downloadContentAs([{ object, filename, withVersion? }])downloads each object under a chosen name. The name has to travel in the content URI as thefilenamequery parameter: the response’sContent-Dispositionheader takes precedence over an anchor’sdownloadattribute, so a name set on the client is silently discarded.downloadContent()is unchanged and keeps the backend default, i.e. the file name stored in the object’s content stream (CASEM-3485) - Smart search can offer object types the user has no READ permission for. The new
ignoreTypePermissionsinput onyuv-smart-search(off by default) drops thesearchpermission filter from the type picker and the block-type autocomplete suggestions — meant for surfaces that author a query rather than execute it as the current user, such as admin screens and stored-search templates. Only what the picker offers is widened: executing the resulting query still goes through the backend, which enforces the user’s permissions unchanged. Thetypesinput also still applies on top, so the flag never widens what the consumer scoped
Bugfixes:
ShellConfigService.download(id, filename)ignored the file name it was given, so the file always landed under its stored name. It handed the name toBackendService.download(), whose anchordownloadattribute is overruled by the backend’sContent-Dispositionheader. The name is now requested through the content path instead. Thefilenameparameter ofBackendService.download()still applies to other URIs, but not to DMS content (CASEM-3485)- External
postMessageevents lost their payload when the message carried no nesteddataproperty.EventServiceforwardedevent.data.dataunconditionally, so messages that put their payload at top level — the media viewer’sOfficeDocumentMessageamong them — reached subscribers asundefined, dropping fields such asstatusandobjectId. The whole message is now forwarded as a fallback (CASEM-3691) - Office documents converted from the old O365 format stayed stale in the preview. The
OFFICE_DOCUMENT_CONVERTEDmessage was never handled, so the viewer kept showing the pre-conversion content stream — and its old mime type — until the object was reopened. The preview now reloads the DMS object and rebuilds the viewer for the converted file, and ignores conversion messages addressed to another preview on the same page (CASEM-3691)
3.20.1
Section titled “3.20.1”Released 09/04/2026
Bugfixes:
- Date input: a date that does not exist is rejected instead of being silently shifted. Typing
31.02.used to roll over into March and propagate that shifted date, and a part with trailing characters (1x) was reduced to its leading digits. The parts are now parsed strictly, checked against the real length of the month and re-verified after the date is built, so an impossible date keeps what was typed and reports the invalid-input error until it is corrected. While the input is invalid no value is propagated any more, where previously the shifted date was committed. A value arriving from the outside — the calendar or the model — clears that state again (CASEM-3505) - Organization form field: free text typed into a multi-select field rendered as a bare placeholder (
...) until the form was reloaded. The autocomplete commits typed free text as a raw string while the chip expects an organization node, so the entered text had no title to display. Committed items are now normalized back to nodes, giving typed and reloaded free text the same shape, chip label and hint tooltip. The propagated value is unchanged - List (
@yuuvis/client-components): Ctrl/Cmd-clicking an already-selected item removes it from the selection again. In multi-select mode the clicked index was pushed back into the selection unconditionally, so a Ctrl-click could only ever add an item and toggling the same item twice re-selected it. Ctrl-clicking an unselected item, single-select and Shift-range selection are unaffected
Dependency Updates:
- Updated
@yuuvis/media-viewerfrom 4.0.0 to 4.1.0
3.20.0
Section titled “3.20.0”Released 08/28/2026
Features:
- Dynamic catalogs can be overridden per object type. A type’s
propertyReferencemay now carry its owncatalog, so a shared property can be bound to a different catalog in each type that uses it. Because such an override only exists on the fields resolved for a type, everything that reads a catalog-backed field now takes optional type context —SystemService.getObjectTypeField(),CatalogLabelService.getCatalogName()/getCatalogLabel(),ObjectFormOptions.objectTypeIdand theyuvRendererinput. Omitting it keeps the previous behavior: the global property definition is used - A field read on a concrete object is resolved by the type that actually contributes it — a property coming from a secondary object type is overridden by that SOT, not by the object’s primary type. Exposed as
SystemService.getDmsObjectTypeField()andgetDmsObjectFieldTypeId(); resolution order is the primary type, then the applied SOTs in stored order, then the global property definition - Smart search lists object types alphabetically. The full-text type filter and the block-type autocomplete suggestions both follow the same order — sorted by label, collated in the active UI language, with the type id as fallback for types without a label — instead of the order the backend or
allowedTypeshappened to deliver. The “All types” entry stays first (TUK-9933)
Bugfixes:
- Smart search: the full-text type filter now applies without a search term — note that a saved or restored search with picked types but no term now returns results where it previously returned none. Picking types with nothing typed is a query in its own right (“show me everything of this type”), just like a type block without conditions; it previously contributed nothing to the emitted query while the filter still looked active. The full-text unit’s muted styling, the joiner to the blocks below it and the unit count behind the AND/OR toggle all follow the same rule, exposed as the new
isFulltextActive()helper. A unit with neither a term nor a picked type still contributes nothing (TUK-9935) - Shell feature configuration: an app granted to a single user was invisible to them.
yuv:shell:featuresentries matched theirallowed/deniedlists against the user’s authorities only, so a user ID or username in those lists never matched — the app was filtered out of the navigation andcanMatchFeaturerejected its route without any error. Both lists are now matched against the user’s authorities and their identity (idandusername), withdeniedstill overrulingallowed. The second parameter ofcanUseFeature()/canUseFeatureById()is nowsubjectsinstead ofauthorities. It is still used verbatim, so callers passing it explicitly — a per-user preview, for instance — have to include that user’sid/usernamealongside their roles
3.19.0
Section titled “3.19.0”Released 08/27/2026
Features:
- Smart search has a full-text only mode. The new
fulltextOnlyinput reduces the component to a plain search bar — term box, scope select and object-type filter stay, the type blocks, the condition builder and the form-mode toggle are not rendered. Because the blocks are not rendered they are not queried either: a state restored vialoadState()keeps its blocks, but only the full-text unit contributes to the emitted query while the flag is set - Smart search can be submitted with
Enter. The newquerySubmitoutput emits the current CMIS query whenEnterreaches the component without an inner widget having claimed the key — the equivalent of submitting a form, whilequeryChangeremains the live per-keystroke preview. Widgets that ownEnterkeep it — a suggestion list, a value widget panel and the inline editor each consume the key first, so the nextEntersubmits.Shift+EnterandEnterinside a multi-line value never submit. See the smart-search README for the full per-widget table - Tile configuration: hosts can hide additional properties from the property slot pickers. The new optional
excludePropertiesonTileListConfigOptionsis passed through the tile config trigger and applies on top of the always-excluded system and base fields
Bugfixes:
- Smart search now respects the object types it was given — note that this changes the results of existing full-text searches. Picking “All types” in the full-text filter emitted an unscoped query; it now means “any of the configured types” (
objectTypeId IN (…)). An emptytypeslist still yields an unscoped search.buildCmisQuery()andbuildFulltextClause()accept an optionalscopeTypesargument for this - Smart search: date presets (“This month”, “Last year”, …) and other special operators were displayed by their technical id (
date:thisMonth) once committed — they now resolve to their translated label - Smart search: a committed condition with a valueless operator (
is empty, a date preset) can be edited again. Re-opening it parked the editor on the operator step with no way to confirm, the operator box was prefilled with the current label (which filtered the suggestions down to itself), and cancelling the edit dropped the condition instead of restoring it - Smart search: a restored search reads in the current UI language.
loadState()re-resolves the type, field, operator and composed condition labels against the live schema and the active translations, so a search saved in one language no longer shows the labels of the language it was captured in. Ids that can no longer be resolved keep the stored label, and nothing that drives the emitted query is affected - Dynamic catalog values are shown with their label instead of the stored technical entry name. Dynamic catalog fields get their own renderer, backed by the new
CatalogLabelServicewhich fetches and caches the entries once per catalog rather than once per rendered row. Staticcatalog[...]fields, which stored the literal label but fell through to the “unknown” renderer, are now mapped explicitly to the string renderer - Datetime fields declared with
resolution: 'date'no longer display an invented time. The datetime renderer and the datetime columns of the table renderer now render such fields without a time. In addition a bareyyyy-MM-ddvalue is now parsed as local midnight instead of UTC midnight (newUtils.parseDateValuein@yuuvis/client-core), so the displayed day no longer shifts by one for users west of Greenwich — this affects the locale date pipe and the datetime form element, which previously could also write the shifted day back (CASEM-3620) - Object preview kept showing the previous file after a content replacement that did not change the mime type: the viewer source is derived from the object id, which does not change on a check-in. The URL of the current version is now keyed on the content stream (
_cs=<contentStreamId>), so the viewer reloads exactly when the content changes and not on metadata-only saves. Versioned URLs address immutable content and are unchanged (CASEM-3622)
3.18.0
Section titled “3.18.0”Released 08/25/2026
Features:
- Badges can be scoped to object types. The new optional
supportsproperty onBadge(types,sots,pattern, matched likeActionSupport) limits which types offer the badge in selection UIs such as the tile configuration; without it a badge stays available for every type. This scopes configurability only — rendering on a given object is still governed byapplies/rule - The retention badge is now limited to documents, so it is no longer offered when configuring folder types. Objects already under retention keep their badge regardless
Bugfixes:
- Apply type: a failed apply no longer closes the dialog silently. The dialog stays open with the entered data intact, an error message is shown, and the busy state is cleared so the operation can be retried. Affects the “Add type” dialog, the type picker and the manage-types dialog (TUK-9574)
- Toasts are now promoted to the browser top layer, so they remain visible while a dialog or another CDK overlay is open instead of being painted behind it (TUK-9574)
- Reference form element: a readonly reference can be opened again. The readonly state disables the inner autocomplete, and Material’s
pointer-events: noneon the disabled field wrapper was inherited by the “open referenced object” icon — it rendered, but never became a click target (HAR-4242) - Metadata form: date field validation errors are now translated. A date outside the permitted range, a past date in a future-only field, and invalid or missing input all rendered as
!missing key: <error name>— these error names had no mapped translation key (CASEM-3504) - Hit list context menu: the menu grows with the available window height instead of being capped at 300px, so all actions are visible when there is room and the scrollbar only appears once the list truly exceeds the viewport (TUK-9908)
- Apply type: the bordered form card in the “Add type” dialogs sat flush against the top edge of the scrollable area, which made the scrollbar look as if content was hidden above it. The card now has vertical spacing in the default, e-invoice and AI variants (TUK-9907)
3.17.1
Section titled “3.17.1”Released 08/21/2026
Bugfixes:
- Autocomplete: a
chipTemplatesupplied by the caller is now rendered inside the chip instead of being silently dropped in favor of the plain label. This also restores the “open referenced object” action on reference chips in object forms, which is rendered into exactly this template — reference chips could not be opened at all before (TUK-9902) - Metadata form: a boolean field keeps its caption next to its own control. The field stretched both the checkbox or slide toggle and its label to half of the field each, so the caption started in the middle of the field and ended up next to the following column, where it read as that column’s label — a checked box could look unchecked. Both now keep their natural width (TUK-9901)
- Media viewer: the PDF sidebar, the document properties dialog, the secondary toolbar, and the e-invoice and Office viewer error messages showed their raw translation keys instead of a label. The English and German translations of these labels are now complete (HAR-4241)
- Removed the remaining global
:focus-visibleoutline and box-shadow that applied wherever halo focus is not used, completing the revert started in 3.16.0. Components again provide their own focus styling. The.ymt-focus-insideopt-in class no longer has any effect
3.17.0
Section titled “3.17.0”Released 08/19/2026
Deprecations:
AutocompleteComponent.separatorKeysCodesis deprecated and will be removed in a future release — use the newseparatorKeysinput instead (CASEM-2846)
Features:
- Organization fields can now accept free text. Add the
freeTextoption to theid:organizationorid:organization:setclassification (e.g.id:organization[freeText]) to allow values that cannot be resolved to a user or a group. Typed values are marked as free text — a dashed, italic chip with an explaining tooltip — in the form element as well as in the metadata renderer (CASEM-2846) - Autocomplete: new
separatorKeysinput controls which key codes commit typed input as a chip. Set it to[ENTER]for values that may legitimately contain a comma, e.g.Lastname, Firstnameorganization titles (CASEM-2846) AutocompleteItemgained the optionalcustomproperty, marking a value the user typed rather than picked, andhintfor the chip’s tooltip (CASEM-2846)- Object relationship: new
pageSizeinput onyuv-object-relationshipandyuv-object-relationship-listsets the number of relations loaded per request. Without it the search service’s default query size applies as before (CASEM-1989)
Bugfixes:
- Data grid form element: a re-rendered data grid marked the form as modified even though nothing had been edited. Programmatic writes (
setValue,patchValue,reset) and rebinds now only render the value; the form model is updated exclusively from the add, edit and remove row actions - Tile configuration: a title attribute is now mandatory, replacing the substitution behavior released in 3.16.0. Instead of silently falling back to the type’s default configuration, saving is blocked while an edited type has no title — an error message names the affected types — and the attribute of the title slot can no longer be removed. Resetting a type that has no registered default now deletes the stored configuration so the render-time fallback applies again (CASEM-2258)
- Object relationship list: the query that loads the objects behind the relations is now sized to the number of requested IDs, so no related objects are missing from larger relation sets (CASEM-1989)
- Badges: the icon-only badge chip now carries an accessible name —
role="img"plus anaria-labelwith the badge label — so screen readers announce it. Previously the chip rendered nothing but an inert icon and had no accessible name at all (TUK-9823)
3.16.0
Section titled “3.16.0”Released 08/17/2026
Bugfixes:
- Tile configuration: a configuration without any assigned attribute is no longer saved. The type’s default configuration is applied instead — keeping a custom icon, actions and badges where set — and the configuration dialog now warns while the current selection is empty (CASEM-2258)
- Reverted the global
:focus-visibleoutline and box-shadow that was introduced for focused elements. Components again provide their own focus styling. - Corrected English and German translations in the renderer library
Dependency Updates:
The following updates were applied as part of a security patch.
- Updated
@yuuvis/media-viewerfrom 3.0.6 to 4.0.0 — major release, review the media-viewer changelog before upgrading - Updated Angular from 21.2.9 to 21.2.19, Angular CDK/Material from 21.2.7 to 21.2.14 and the Angular build tooling from 21.2.7 to 21.2.20
- Updated Nx from 22.6.5 to 22.7.6
- Updated
pdfjs-distfrom 4.10.38 to 6.2.108 andadm-zipfrom 0.5.17 to 0.6.0
3.15.0
Section titled “3.15.0”Released 08/06/2026
Bugfixes:
- add missing i18n key for widget-picker default group label
3.14.1
Section titled “3.14.1”Released 07/23/2026
Bugfixes:
- Reference form fields again restrict their suggestions to the configured target types. Previously the target-type filter could be dropped, causing searches to return objects of any type. Existing fields using the older
id:referenceclassification continue to work.
3.14.0
Section titled “3.14.0”Released 07/22/2026
Features:
- The audit trail now also records when an object relationship is changed or deleted, complementing the existing “relationship created” entry. Each entry shows the localized relationship type in its detail.
- The object relationship component now supports a read-only mode via a new
readonlyinput. When enabled, relationships can still be explored in both graph and list views, but the add and remove actions are hidden.
Bugfixes:
- Audit entries without a version (such as relationship deletions) no longer render an empty version badge.
3.13.1
Section titled “3.13.1”Released 07/21/2026
Deprecations:
- The
id:referenceclassification is deprecated and will be removed in a future release. Reference fields should now use the newobject:referenceclassification instead.
3.13.0
Section titled “3.13.0”Released 07/21/2026
Features:
- The audit trail now records when an object relationship is created, showing the localized relationship type in the entry detail.
Bugfixes:
- Fixed multi-selection in result lists collapsing after a re-query such as sorting, paging, or refreshing. (CASEM-3287)
- Ctrl/Shift double-clicks now extend the selection instead of triggering the double-click action. (CASEM-3287)
- Fixed the split-view gutter jumping and persisting a corrupt layout when dragged next to a collapsed pane. (TUK-9589)
3.12.0
Section titled “3.12.0”Released 07/16/2026
Features:
- Object forms now support reference fields. A field classified with
id:reference[...]renders a searchable input that finds and links other dms objects: as you type, a CMIS fulltext search narrowed to the classification’s target types suggests matching objects. Selected objects appear as chips (single- or multi-select) labelled with their configured title; a chip can be opened directly when its type belongs to a loaded app, and references that can no longer be resolved (deleted or without permission) are clearly flagged. - New cross-app “open object” mechanism. Apps can register an open handler with the shell (
registerObjectOpenHandler) so any part of the client can open an object owned by another app without knowing that app’s routes (canOpenObjectFor,openObject,openObjectById). The Drive app registers a handler, and the Tasks detail view now shows an “Open document” button that opens a task’s attached document in its origin app. - Hit list configuration can now exclude specific properties from the property picker via a new
excludePropertiesinput, on top of the always-excluded system fields.
Bugfixes:
- Object flavors can no longer be applied without the required create permission. Applicable flavors are now offered only when the current user has create permission for the flavor’s secondary object type. (TUK-7965)
- Number input fields keep their validation state in sync with what is displayed. Invalid text now shows an error (including after the field loses focus), the underlying value is cleared instead of silently keeping the last valid number, and a programmatically set value no longer flashes an error before the field is touched. (TUK-9357)
- The context menu no longer reappears on its own after opening a folder. A right-click event is now consumed once it opens the menu, so later state changes (actions clearing and repopulating) can no longer replay it. (TUK-9317)
- The drag-select rectangle now renders above list content and uses the correct selector border color. (CASEM-3286)
- Hit list configuration no longer offers table-type properties for selection.
- Refined and corrected English and German interface wording across smart search, badges, theme, PWA update, session and pagination texts. (HAR-4192)
3.11.1
Section titled “3.11.1”Released 07/07/2026
Features:
- Object detail metadata sections now expand and collapse with a subtle slide-and-fade animation. Sections that mount already open (the auto-expanded first section or a
skipExpandsection) appear instantly without sliding, and collapsed sections are hidden from keyboard focus and screen readers. - List tiles now expose
--tile-borderand--tile-border-widthCSS variables, so a tile’s border (default: a bottom divider using--ymt-outline-variant) can be customized or removed via theming.
Bugfixes:
- Organization property renderers no longer show duplicate user chips. The cached user list is now deduplicated by id when read and when written, and any cache already polluted by duplicates heals itself the next time it is read, so duplicates disappear across the app.
- Expanding a metadata section no longer briefly flashes the red “invalid” styling before the form’s values are patched in. Invalid styling now appears only after a field has actually been edited.
3.11.0
Section titled “3.11.0”Released 07/06/2026
Features:
- Object detail metadata sections now support two new inputs,
skipExpandandskipTitle.skipExpandremoves the collapse/expand behavior so the section content is always visible and its toggle arrow is hidden;skipTitlehides the section header entirely. Combined, they render a title-less, permanently open section.
Bugfixes:
- Decorative icons inside object detail section accordions (the section icon and the expand/collapse arrow) are now marked
aria-hidden, so screen readers no longer announce them. - Tile lists no longer flicker or repeatedly reload their tiles when an applied object flavor is recomputed to an equivalent value — the flavor is now re-applied only when it actually changes.
3.10.0
Section titled “3.10.0”Released 07/03/2026
Features:
- Object detail sections can now be rendered with a fully custom UI instead of the schema-driven form via the new
yuvMetadataSotTemplatedirective. Custom renderers stay integrated with the form’s save, reset, and validation state, and one template can be registered for a single secondary object type or several at once. - Custom metadata field templates (
yuvMetadataElementTemplate) can now access the object they are rendered for — its id, object type, and initial data — via the newOBJECT_CONTEXTprovider, enabling context-aware field rendering.
Bugfixes:
- Interface translations are now loaded once, for the user’s saved locale, instead of first loading the browser/default language and reloading after user settings arrive — removing a brief flash of the wrong language on startup (TUK-8987)
- Locked objects now resolve their editable state correctly in the object preview, so files locked by the current user remain editable (CASEM-3259)
- Buttons using
ymtButtonnow preserve classes set on the host element — creating the underlying Material button no longer overwrites them.
Released 06/30/2026
Deprecations:
TileExtensionServiceis deprecated. Tile-extension registration has moved toShellService; the old service now only delegates to it and will be removed in a future release.
Features:
- Tile extensions can now be registered against an object flavor’s secondary object type. When a flavor is applied to a tile, its extension takes precedence over the one registered for the base object type, and all registrations are managed through a single registry on
ShellService.
Bugfixes:
- Non-required single-select catalog fields can be cleared again — a “none” option restores setting the value back to empty.
- Catalog-backed string fields now resolve to the correct dynamic-catalog form element when read from the schema, instead of falling back to a plain text input.
- Smart Search now re-derives whether a type restriction targets a secondary object type from the current schema when loading a saved or externally-built query, so the condition is emitted against the correct field even for legacy saved searches.
Released 06/29/2026
Bugfixes:
- Object preview now correctly shows the selected version when navigating managed versions of email documents; previously the wrong version’s content was displayed when binary content was shared across versions (HAR-4159)
Dependency Updates:
- Updated
@yuuvis/media-viewerto 3.0.6
Released 06/24/2026
Bugfixes:
- Session-expiry warning now shows a blocking countdown dialog with the seconds remaining and an “Extend session” action, replacing the easily-missed snackbar (HAR-3954)
- Saving a document after removing one of its flavors no longer fails; stale data from the removed flavor was being submitted and rejected by the backend (TUK-9381)
- The inline “Save changes” button in workspace edit mode is now only enabled when the grid layout or label has actually changed, instead of being active without any edits (HAR-3904)
- The document-view action menu now closes explicitly when an item is clicked, so it no longer stays open behind overlays such as the bookmark form popup (HAR-3933)
- The global loading indicator no longer stays stuck on screen; it now tracks user actions and route changes and clears reliably on navigation (HAR-4089)
- Fixed metadata fields (text, catalog, and others) not rendering correctly in default metadata forms
Released 06/23/2026
Features:
- Smart Search: any committed condition can now be marked as dynamic, enabling a new
supportDynamicConditionsmode. - Smart Search: added an “Essentials” view that swaps the full builder for a compact fill-out form of the dynamic conditions, so their values can be supplied or overridden at run time without rebuilding the query.
- Smart Search: conditions can now be committed without a value, acting as reusable fill-in templates. Such unset placeholders are kept in saved queries but contribute nothing to the emitted CMIS query.
Bugfixes:
- Fixed a stale “invalid value” error lingering on the host form control of a dynamic catalog field after its options finished loading.
- Fixed the Smart Search full-text term input not reflecting the restored value when loading a saved search.
Released 06/18/2026
Features:
- Added Smart Search, a new visual query builder in
@yuuvis/client-framework/smart-search. Instead of typing query syntax, users pick object types, fields, operators and values through an inline, chip-based autocomplete. The component assembles a valid, injection-safe CMISSELECT … WHERE …statement and emits it on every change.
Bugfixes:
- Fixed typo in lock-tag property key (
LockField.LOCK_TAG).
Released 06/12/2026
Bugfixes:
- Fixed shift-click range selection not working when starting from the first list item (TUK-9183)
- Fixed persisted color scheme not being applied on app startup
Dependency Updates:
- Updated
@yuuvis/media-viewerfrom 3.0.2 to 3.0.4
Released 06/10/2026
Features:
- Lock and unlock operations can now optionally return the full updated object instead of only the raw tag response, simplifying state updates after locking (HAR-3925)
- Added an expand/collapse toggle for child nodes in the object-relationship graph (HAR-3965)
Bugfixes:
- Fixed an issue where discarding changes while editing a dashboard removed the entire dashboard; edits are now isolated from the saved configuration until persisted (HAR-4098)
- Fixed the search clear button incorrectly navigating to the dashboard instead of resetting the current query (TUK-9118)
- Prevented a visible light-to-dark flash during theme initialization by resolving the stored or preferred color scheme before the first paint
- Fixed the tile-list busy indicator not reflecting the activity of its inner query list
- Fixed
uploadFileandmultipartUploadreturning an untransformed response when used with the silent option, causing downstream errors - Corrected translation typos, stray spacing, and inconsistent wording, and aligned terminology with the project termbase (German/English)
Released 06/05/2026
Features:
@yuuvis/client-framework/renderernow ships a pluggable audit-entry renderer layer. ExtendAbstractAuditRendererComponent, register your renderer withAuditRendererServicescoped to an action or action+subaction pair, and[yuvAuditRenderer]renders it automatically insideObjectAuditComponent. The built-inDefaultAuditRendererComponentremains the fallback for all standard audit labels. (HAR-3922)
Released 06/02/2026
Features:
- Apps now detect new service worker versions on a configurable interval and prompt the user to reload. Configure via the new
providePwaUpdate()provider withPwaUpdateConfig(check interval, prompt behavior) (HAR-3678)
Bugfixes:
SystemServicenow populates theclassificationsproperty on schema field definitions; previously it was left undefined, so consumers reading classifications saw no values- Object audit view no longer breaks when an audit entry is missing expected fields; the audit service and
ObjectAuditComponentwere hardened against partial entries (HAR-3953) - Organization renderer now shows the raw user ID for unresolved users, making missing lookups visible instead of hidden (HAR-3891)
ObjectPreviewServicenow evaluatesisEditableagainstlockedByCurrentUser, so documents locked by the current user are correctly treated as editable in the preview (HAR-3955)- Tightened spacing in the datepicker input by removing the 0.1em flex gap between input segments (HAR-3111)
Dependency Updates:
- Updated
@yuuvis/media-viewerfrom 3.0.1 to 3.0.2
Released 05/28/2026
Bugfixes:
- Fixed
OrganizationRendererComponentdropping users when a value mixed user IDs and role names, and prevented stale labels from briefly rendering while the user/role lookup is still in flight
Released 05/27/2026
Bugfixes:
- Prevented unresolved users from being written into the users cache in
OrganizationRendererComponent, so failed user lookups no longer poison the cache for later renders (TUK-9187)
Released 05/27/2026
Features:
- Document lock state is now respected across the object preview and form layer: the media viewer opens in read-only mode for locked documents, object type definitions can override the
requiredflag perpropertyReference, andDynamicCatalogComponentnow mirrors its parentFormControl’s validators (HAR-3421)
Bugfixes:
- Fixed stale drop-in tiles remaining visible after document deletion; the tile list now auto-removes items when a
DMS_OBJECT_DELETEDevent fires (HAR-3859) TileListComponent.removeDropItems()— new method for explicitly removing drop-in tiles by ID, useful for deletions that bypass the event service (HAR-3859)
Released 05/20/2026
Deprecations:
SearchQuery.includePermissionsis deprecated — useSearchQuery.options.includePermissionsinstead (HAR-3787)
Features:
- New
WidgetPickerComponentfor selecting widgets when adding them to a grid, plus an overhauledWidgetGridWorkspacesComponentwith cleaner state handling. The package’s internal layout was reorganized intocomponents,models, andservicessubfolders; all root-level exports are unchanged (HAR-3762) SearchQuerynow accepts a nestedoptionsobject, starting withoptions.includePermissions(HAR-3787)QueryListComponentandTileListComponentnow derive an effective pagination size when none is provided as input, so embedded query lists render with sane defaults (HAR-3863)- Catalog management in shell-admin now supports validity dates (valid-from / valid-to) on catalog entries, with updated localization across en/de/ar
CatalogServiceentries now expose the raw value alongside the localized label
Bugfixes:
ymtIconButtondirective no longer strips existing CSS classes from the element it is attached to (TUK-9123)- Drive simple-search overlay now also clears the visible input when reset — previously only internal state was cleared, leaving stale text visible (TUK-9118)
- Tile actions menu now closes when clicking outside — the disabled backdrop on
mat-menuwas suppressing the default close-on-outside-click behavior
Released 05/15/2026
Bugfixes:
- Fixed missing public exports in
@yuuvis/client-core: all service classes and their interfaces are now re-exported from the package root, so consumers no longer have to fall back to deep imports intolib/service/*subpaths
Released 05/13/2026
Deprecations:
ActionsValidationServicein@yuuvis/client-framework/actionsis now deprecated — callObjectLockingService.getLockState()from@yuuvis/client-coredirectly and resolve the lock owner viaIdmServiceinstead
Dependency Updates:
@yuuvis/client-frameworknow declares@yuuvis/materialas^3.0.0instead of pinned3.0.0, so installs pick up compatible patches
Released 05/12/2026
Features:
- Added new
@yuuvis/client-framework/badgessecondary entry point — a provider-based badge system for rendering contextual object indicators, withBadgeRegistryService,BadgeChipComponent,BadgeSelectComponent, andTileBadgesComponentcomponents, plus built-in lock and retention badges (HAR-3802) - New
ObjectLockingServiceand model in@yuuvis/client-corefor querying object lock state (HAR-3802) SessionServicenow listens for the globalLOGOUTevent so logout broadcasts and cleanup also fire on auth paths that bypassperformLogout(e.g. 401 interceptor or directAuthService.logout()calls) (HAR-3861)- Exported
ObjectMetadataSectionComponentfrom@yuuvis/client-framework/object-detailsso it can be reused in custom object-details layouts
Bugfixes:
- HTTP activity tracking no longer stops after the first session extension — user-initiated extends always hit the backend, and the debounce-suppression flag no longer skips the backend call (HAR-3861)
yuvIconButtonnow renders the correct size — the size class is applied after the underlyingMatIconButtonis created inngAfterViewInit, fixing cases where the initial size was lost (HAR-3858)
Released 05/11/2026
Features:
- New
DynamicCatalogComponentintegrates dynamic catalogs into metadata forms; includes OData backend API reference and developer documentation. Using this feature requires yuuvis MOMENTUM backend 2026 Spring or later (HAR-3818) - Added new
TableGridandChartscomponents to@yuuvis/client-componentsfor tabular data and chart rendering (HAR-3590, HAR-3819) - When a configured object type has no translation, the type name from the schema is now used as a fallback (TUK-8726)
Bugfixes:
- Navigation arrows are no longer disabled in readonly form fields with classification
id:organization(HAR-3788) - Sequence list now scrolls to a newly added element so it stays visible after insertion (TUK-8905)
- Object summary no longer breaks when configured fields are missing from the loaded object (TUK-8711)
Released 05/05/2026
Bugfixes:
- Switching back to the default theme now correctly persists the selection (HAR-3720)
- Migrated tile actions menu to the updated
rxResourceAPI (params/streamreplace deprecatedrequest/loader) (HAR-3768) - Fixed several English UI labels — refresh tooltips, confirmation dialogs, theme selector labels, and object relationship strings corrected for clarity
- Fixed several German UI labels — object relationship terminology, theme selector labels, and session expiry message corrected
Dependency Updates:
- Updated
@yuuvis/media-viewerfrom 3.0.0 to 3.0.1
2.21.1
Section titled “2.21.1”Released 05/05/2026
Bugfixes:
- Fixed theme persistence: selecting the default theme now correctly resets custom theme state so the application reflects the change immediately (HAR-3720)
- Corrected and improved translations (EN/DE) across relationship, theme, session, navigation, and e-invoice viewer components
Dependency Updates:
- Updated
@yuuvis/media-viewerfrom2.2.0to2.2.1
Released 04/30/2026
Breaking Changes:
- BREAKING: Upgraded Angular from v19 to v21 — all
@angular/*packages and Angular-compatible dependencies updated; consuming applications must target Angular 21 - BREAKING:
@ngx-translate/coreupdated from v15 to v17 — provider setup inprovideClientCore()and translation injection patterns have changed accordingly
For step-by-step upgrade instructions, see the Migration Guide v2 → v3.
Features:
- UI components relocated from
@yuuvis/client-framework/*to the new canonical package@yuuvis/client-components/*— update import paths forautocomplete,widget-grid,overflow-menu,overflow-hidden,master-details,split-view,popout,list, andcommon;@yuuvis/client-framework/*entry points continue to re-export for backwards compatibility (HAR-3728)
Dependency Updates:
- Updated
media-viewerto v3.0.0 - Updated
angular-gridster2for Angular 21 compatibility
2.21.0
Section titled “2.21.0”Released 04/29/2026
Features:
- Introduced multilevel/nested actions menu for tile list components (
TileActionsMenuComponent) with support for hierarchical action submenus, tooltip disabled states, and nested action execution; exportedTileActionsMenuComponentfrom the@yuuvis/client-framework/tile-listpublic API (HAR-3563) SnackBarServicenow supports dynamic language changes: snack bars automatically dismiss on language switch, and messages/actions accept translation key objects ({ key, params }) in addition to plain strings (HAR-3754)
Performance:
- Enhanced
IdmServicewith an improved caching strategy and richer model documentation for user and organization data
Bugfixes:
- Fixed overflow styling in relationship components (
AddRelationshipComponentandRelationshipTargetSearchComponent) (HAR-3709)
Deprecations:
- Deprecated the
disabledproperty on theContextMenuActioninterface — use theActioninterface’s standard pattern going forward
2.20.1
Section titled “2.20.1”Released 04/14/2026
Bugfixes:
- Fixed TileList internal state management: selection indices now shift correctly after dropping items,
updateListItemsproperly patches the internal items signal, andupdateTileListresolves actions for updated items - Fixed deep-link redirect after authentication — URLs with query parameters are now properly preserved and restored after login (HAR-3517)
- Fixed TileList preselection behavior — manual selection now properly clears the preselect state, preventing unexpected re-selection (HAR-3627)
- Fixed null handling in TileConfig — returns null instead of undefined for unresolvable fields, ensuring proper form control behavior (TUK-8811)
- Fixed audit history version label to use proper i18n interpolation instead of string concatenation (TUK-8783)
2.20.0
Section titled “2.20.0”Released 04/10/2026
Features:
- Added breadcrumb navigation component for hierarchical object navigation in case/document views (HAR-3543)
- Added badge template support to object-details components, allowing custom badges in the header subtitle row
Performance:
- Optimized data flow between QueryList, TileList, and List components (HAR-3560)
Bugfixes:
- Fixed badge severity styles (success, danger, warning) not rendering correctly
- Fixed pane header content overflowing when the title text is too long
2.19.0
Section titled “2.19.0”Released 04/09/2026
Breaking Changes:
- BREAKING: Moved
LevelTypetype export from@yuuvis/materialto@yuuvis/client-framework/common. Update:import { LevelType } from '@yuuvis/client-framework/common'(HAR-3375)
Features:
- Confirmation dialog supports severity levels (success, warning, error, info) for contextual styling (HAR-3375)
- Enhanced pane component with badge support in headers, improved responsive behavior, and CSS variable customization for footers
- Added RTL (right-to-left) direction support across the framework and Drive app, including Arabic language translations
- Object relationship component mode can now be set via input binding (HAR-3532)
- Users can now edit flavor data before applying a new object flavor (TUK-8671)
Bugfixes:
- Fixed navigation popstate guard to properly handle pending changes (HAR-3419)
- Distinguished dialog title between add and edit mode for table data editing (HAR-3374)
- Fixed missing default sort option when no sort is configured (HAR-3524)
- Moved action tooltip position to the right for better visibility (HAR-3555)
- Fixed renderer directive to clear container when input becomes undefined (TUK-8786)
2.18.0
Section titled “2.18.0”Released 04/01/2026
Features:
- Added browser zoom level tracking (
pageZoomPercentage$) and small-screen layout support toDeviceServicevia newsupportsSmallScreensoption inprovideYmtMaterial()(HAR-2874) - Added animated busy/loading border indicator for pane component with customizable color via
--busy-border-colorCSS variable (HAR-3553) - Added fade-in enter animation to pane component with customizable duration and delay via
--enter-animation-durationand--enter-animation-delayCSS variables - Added danger button variant (
ymtButton="danger") with dedicated color theming (HAR-3554) - Added CSS custom properties to customize object metadata footer border, padding, and corner radius
- Added Material expansion panel theming with design token integration and button toggle group overrides (HAR-2787)
Bugfixes:
- Fixed deep link redirection not working after login (HAR-3517)
2.17.0
Section titled “2.17.0”Released 03/31/2026
Features:
- Enhanced sidebar navigation with overflow menu integration and SVG icon support (HAR-3548)
- Added smart search and token search components for building CMIS queries with type-aware field suggestions, operators, date presets, and secondary object type support
- Added extra-small icon button size variant for
ymtIconButtondirective
Bugfixes:
- Fixed object metadata sections losing user-edited form values when collapsed and re-expanded (HAR-2711)
- Fixed
gridTypeproperty inWidgetGridConfigbeing incorrectly required instead of optional
2.16.0
Section titled “2.16.0”Released 03/30/2026
Features:
- Added fullscreen toggle and pane visibility controls to master-details layout — individual panes can now enter fullscreen mode or be shown/hidden programmatically
Bugfixes:
- Fixed widget grid not reflecting configuration changes until the next interaction (HAR-2870)
2.15.0
Section titled “2.15.0”Released 03/27/2026
Features:
- Chip fields in autocomplete and string form elements now show left/right scroll buttons when selected chips overflow horizontally (
ScrollButtonsComponent/ScrollButtonsDirectivein@yuuvis/client-framework/common) (HAR-2950) - Add
gridTypeproperty toWidgetGridConfigto allow configuring the gridster2 grid layout type from outside the component - Split-view panels are now collapsible: each side can be collapsed and re-expanded individually
- Panes now support native fullscreen via a new
FullscreenDirectiveavailable in both@yuuvis/material/panes(forPaneComponent.toggleFullscreen()) and@yuuvis/client-framework/popout(for popout contexts)
Dependency Updates:
- Updated
@yuuvis/media-viewerfrom 2.1.1 to 2.2.0 (adds support for reading.msgemail files)
2.15.0
Section titled “2.15.0”Released 03/27/2026
Features:
- Chip fields in autocomplete and string form elements now show left/right scroll buttons when selected chips overflow horizontally (
ScrollButtonsComponent/ScrollButtonsDirectivein@yuuvis/client-framework/common) (HAR-2950) - Add
gridTypeproperty toWidgetGridConfigto allow configuring the gridster2 grid layout type from outside the component - Split-view panels are now collapsible: each side can be collapsed and re-expanded individually
- Panes now support native fullscreen via a new
FullscreenDirectiveavailable in both@yuuvis/material/panes(forPaneComponent.toggleFullscreen()) and@yuuvis/client-framework/popout(for popout contexts)
Dependency Updates:
- Updated
@yuuvis/media-viewerfrom 2.1.1 to 2.2.0 (adds support for reading.msgemail files)
2.14.0
Section titled “2.14.0”Released 03/24/2026
Features:
- Introduce
FileUploadOptionsinterface with support for scoped upload progress visibility; adduploadFileContent()onDmsServiceas the typed, scope-aware replacement for the deprecateduploadContent()method (HAR-3334)
Bugfixes:
- Force i18n resource cache refresh using the build version to prevent stale translation files from being served (HAR-3326)
- Add missing title and confirm button labels to the flavor removal dialog (TUK-8020)
2.13.0
Section titled “2.13.0”Released 03/18/2026
Features:
- Added
setActiveItem(index)toListComponentfor programmatic focus control;QueryListComponent.queryResultnow also emits the resultitemsalongsidetotalCount; synchronized selection state across list, query-list, and tile-list components (HAR-3095) - Halo focus ring now clips to the visible portion of elements inside scrollable containers, preventing the ring from rendering outside the scrollable area (HAR-3364)
Bugfixes:
- Renamed “reference” to “link” throughout the object-relationship UI for consistent terminology; updated all related labels, tooltips, and error messages accordingly (HAR-3414)
- Fixed
AppsServiceAPI calls to useApiBase.noneenum instead of an empty string; madedescription,updatability, andqueryablefields optional in_ObjectTypeFieldBaseinterface
2.12.4
Section titled “2.12.4”Released 03/09/2026
Bugfixes:
- Fixed missing confirmation button label in the “Manage Flavors” remove flavor dialog (TUK-8020)
Dependency Updates:
- Updated
@yuuvis/media-viewerfrom 2.1.0 to 2.1.1
2.12.3
Section titled “2.12.3”Released 03/09/2026
Bugfixes:
- Fixed tooltip not showing on the “Select Workspace” button by adding missing
MatTooltipModuleimport and correcting template reference typos (HAR-3330) - Fixed
ObjectPreviewComponentto correctly return viewer details when the object has not changed; improved type safety usingWritableSignal<ViewerDetails | null>(HAR-3363) - Fixed add/remove button states not updating correctly in the
SequenceListcomponent; corrected connector line alignment in the layout
Dependency Updates:
- Updated
@yuuvis/media-viewerfrom 2.0.13 to 2.1.0
2.12.2
Section titled “2.12.2”Released 03/04/2026
Dependency Updates:
- Updated
@yuuvis/media-viewerfrom 2.0.12 to 2.0.13
2.12.1
Section titled “2.12.1”Released 03/04/2026
Bugfixes:
- Fixed tile list context menu triggering the wrong action when multiple items are selected
- Fixed popout component height so embedded content (e.g. PDF viewer) fills the container correctly (HAR-3358)
2.12.0
Section titled “2.12.0”Released 03/03/2026
Features:
- Added PopoutTriggerComponent for external control of popout windows, allowing trigger placement outside the popout content area
- Added configurable trigger position option
noneto hide the built-in popout trigger button
Bugfixes:
- Fixed tile list actions executing only on the clicked item instead of the entire selection, and improved selection consistency across all lists
- Fixed popout component to use correct icons and theme-aware colors for the trigger button
- Fixed layout and styles of modeled form groups to properly render grouped fields (HAR-2782)
- Fixed add-relationship component submit button not correctly connected to the form (HAR-3350)
- Fixed add-relationship component trigger not firing correctly
- Fixed drag-and-drop split behavior when dashlets with iframes are shown in master-details layout (HAR-2877)
- Improved object metadata rendering with cleaner section layout (HAR-3340)
- Added missing tooltips to tile-actions-menu items for improved accessibility (HAR-3208)
- Improved string form element styles for classification links (HAR-3140)
- Made action description optional, simplifying action definitions for consumers without descriptions
2.11.3
Section titled “2.11.3”Released 02/26/2026
Bugfixes:
- Fixed relationship list component not handling missing related objects correctly (HAR-3270)
- Fixed missing translations from root-level libraries in production builds
2.11.2
Section titled “2.11.2”Released 02/26/2026
Bugfixes:
- Fixed missing UI translations in production builds
2.11.1
Section titled “2.11.1”Released 02/26/2026
Bugfixes:
- Fixed DateTime range component not correctly switching between date-only and date+time display based on the selected search operator (HAR-3007)
- Fixed missing UI translations for components and shell pages in production builds
2.11.0
Section titled “2.11.0”Released 02/26/2026
Features:
- Added high contrast accessibility theme with full support for forced-colors media query, configurable in the application Settings (HAR-3160, HAR-3285)
- Improved session management with HTTP activity tracking — users now receive a warning notification before their session expires based on actual usage activity (HAR-2975)
- Added drop-in support for TileList component, allowing items to be dragged and dropped directly into the list
- Redesigned the relationship add dialog with improved layout and accessibility
Bugfixes:
- Fixed version indicator not refreshing correctly after restoring a previous document version (HAR-3198)
- Fixed snackbar notification duration configuration not being applied correctly (HAR-3320)
- Fixed pointer events on read-only classification icons so they respond correctly to hover and cursor interactions (HAR-3140)
- Improved color contrast for status colors and added additional badge style variations for better visual differentiation (HAR-3205)
- Fixed missing type attribute on the organization metadata string input field (TUK-7929)
- Fixed date/time picker component and calendar display issues
2.10.3
Section titled “2.10.3”Released 02/16/2026
Bugfixes:
- Fixed TileList component not refreshing tiles when the tile configuration was updated (HAR-3214)
2.10.2
Section titled “2.10.2”Released 02/16/2026
Bugfixes:
- Fixed QueryList component to allow transformer functions to be re-run on existing items without triggering a full data reload
2.10.1
Section titled “2.10.1”Released 02/11/2026
Bugfixes:
- Fixed
SequenceListComponentinterface to support multiple assignees for multi-organization usage by changingnextAssigneetype from single assignee to array (TUK-8225) - Fixed missing tooltip for add widget button in
WidgetGridComponent(HAR-2737) - Fixed an issue in
DatepickerComponentwherewriteValuedid not properly handle null values, preventing the component from being reset after receiving a value (HAR-3197) - Fixed window event validation logic in
EventServiceto properly handle event source and type checking (HAR-2858) - Fixed missing tooltips for add row button and actions menu in
DataGridcomponent (HAR-3122)
2.10.0
Section titled “2.10.0”Released 02/10/2026
Features:
- BREAKING: Default actions (delete, copy, cut, download) must now be explicitly registered by calling
actionsService.registerDefaultActions(). These actions are no longer registered automatically by the framework (HAR-3179) - Added
includePermissionsparameter to CMIS search allowing permissions to be included in search results
Bugfixes:
- Fixed an issue where organization field in sequence list displayed duplicate focus styling (TUK-8335)
- Fixed organization fields with metadata to properly stringify values as JSON (TUK-7929)
- Fixed state reset issue in
ObjectMetadataComponentand added visual indicators for dirty and invalid states to metadata form sections (HAR-3102) - Fixed missing tooltip for action menu button in tile list items (HAR-2932)
- Fixed an issue in list components where autoselect was triggered before items were fully initialized (HAR-2836)
- Fixed an issue where
indexDataSavedoutput of object-metadata component emitted the original instead of the updated object
Released 02/05/2026
Bugfixes:
- Fixed an issue where feature requirements in some circumstances were not being properly validated (HAR-3155)
- Fixed missing default halo focus offset for logo component (HAR-3116)
Released 02/04/2026
Bugfixes:
- Fixed an issue where form controls emitted unwanted value change events during initialization, causing unintended side effects when setting initial values
- Fixed disabled state handling in catalog components to properly reflect the disabled status in Material form fields
- Fixed
DataGridcomponent to properly handle table properties by correctly mappingcolumnDefinitionsfromObjectTypeField
Released 02/03/2026
Features:
- Added drag and drop support to
QueryList, allowing items to be dropped into the list - Added optimistic update support to
QueryListandTileListfor immediate UI feedback when modifying list items. Updates are automatically cleared when navigating between pages.
Released 02/02/2026
Bugfixes:
- Provided error message if
TileListis lacking object type ID (HAR-3135) - Fixed an issue in
TileListwhere context menus did not close automatically after selecting an action (HAR-3107) - Fixed
DataGridcomponent to properly handle table properties by correctly mappingcolumnDefinitionsfromObjectTypeField
Released 02/02/2026
Bugfixes:
- Fixed an issue in
TileListwhere double-clicking an item could cause redundant selection actions - Improved form element mapping for table properties by correctly transforming
columnDefinitionstoelements - Updated
SequenceListform layout with proper Material form fields for better user experience - Improved organization selector in
SequenceListto use organization sets with multiselect and required validation
Released 01/30/2026
Bugfixes
- Fixed an issue where apps with backend application requirements were not filtered correctly during initialization
Released 01/30/2026
Features
- Added support for conditional app activation based on backend application availability (HAR-1081). Client apps can specify required backend applications and will only load if those backend applications are available. See the documentation on Conditional App Activation guide for details.
Bugfixes
- Fixed an issue where under certain circumstances the time could not be changed in the datetime picker component (HAR-2973)
Released 01/29/2026
Features:
- Implement halo focus exclusion for Angular Material form fields (HAR-3109)
- Add tabindex for keyboard navigation on tree nodes (HAR-2899)
- Implement Halo Focus feature for enhanced keyboard navigation accessibility (HAR-3042)
- Shell provides generic query list component
Bugfixes:
- Fixed resolving table row values (HAR-3105)
- add translation key description for copy and cut actions (TUK-8279)
Released 01/21/2026
Bugfixes
- improve focus visibility handling based on user interaction type
Released 01/20/2026
Bugfixes:
- enable metadata on organization component for multifields (TUK-8235)
Released 01/20/2026
Bugfixes:
- Alphabetically sort the contextmenu list (TUK-8245)
Released 01/20/2026
Features:
- Add badge component (HAR-3024)
Bugfixes:
- enable writing metadata value to organization component (TUK-8235)
- Prevent iframes in split-view from messing with split-views drag events (HAR-2790)
- use
Situation.CREATEfor object flavor form loading (TUK-8010) - provide proper disabled state for form controls
- Implemented proper disabled state for advanced datetime component
Released 01/13/2026
Bugfixes:
- prevent stale file drop covers (HAR-2659)
- fix string input length validation (HAR-2961)
- improve restore version functionality (HAR-2967)
- improve file drop management (HAR-2659)
Released 01/07/2026
Bugfixes:
- fetch recent config object (HAR-2946)
- refactored organization component
Released 12/19/2025
Features:
- event service supports strongly typed events and event payloads
- busy overlay component now supports error handling and has been updated in regards of accessibility
Bugfixes:
- fixed writing value to catalog and trim classification value (HAR-2921)
Released 12/10/2025
Bugfixes:
- remove duplicate error messages (HAR-2783)
- remove copy from table row (HAR-2814)
- rename documentConfig to freeDocumentConfig and adjust relationsConfig
- add margin to form fields for better spacing
Released 12/10/2025
Features:
- render organization items (HAR-2864)
Released 12/09/2025
Features:
- merge org and orgSet (HAR-2864)
Bugfixes:
- text in textarea needs padding-top (HAR-2868)
Released 12/08/2025
Released 12/06/2025
Features:
- Added relationship visualization components (HAR-2645)
- Enhance object relationship component with improved localization and UI updates
Bugfixes:
- text in textarea needs padding-top (HAR-2868)