ub-server #

Added #

5.19.6 2021-03-30 #
  • after UBA.passwordPolicy.maxInvalidAttempts invalid login attempts user account is TEMPORARY locked for ubConfig.security.lockOutTimeoutSec seconds (default is 300 sec = 5 min) instead of sets a uba_user.disabled=1. This simplify user management a lot. Old behavior (uba_user.disabled=1 in DB) can be turned on by sets ubConfig.security.lockOutInDB to true in the config.
  • addedreq.read_json() and used to implement a THTTPRequest.json() method - read a UTF8 encoded HTTP request body as JSON Object. Can be used as faster alternative to JSON.parse(req.read('utf8'))
  • added IncomingMessage.json() - a faster alternative to JSON.parse(resp.read()) for http client requests.
5.19.5 2021-03-17 #
  • appBinding.removeUserSessions added (visible in JS as App.removeUserSessions)
  • SECURITY maximum size of JSON for DataStore is limited on connection level. Default is 50Мб. In case a result set exceeds this limit exception is raised. This avoids unexpected OutOfMemory errors and server crash when incorrect statement what returns too many rows or too big content are executed.
5.19.4 2021-03-15 #
  • multitetatcy support:
    • ubConfig.security.multitenancy section added
    • added Session.tenantID
    • event enterConnectionContext emitted for the App object when user enter a DB context
  • critical section now available in http working threads:
 // example: prevent multiple threads to modify file content in the same time 
 const App = require('@unitybase/ub').App
 // critical sectin must be registered once in the moment modules are evaluated 
 const MY_CS = App.registerCriticalSection('SHARED_FILE_ACCESS')
 function concurrentFileAccess() {
   // protect simulatious file access from the different threads
   App.enterCriticalSection(FSSTORAGE_CS)
   try {
     const data = fs.readfileSync('/tmp/concurent', 'utf8')
     // do some operation what modify data
     fs.readfileSync('/tmp/concurent', data)
   } finally {
     // important to leave critical section in finally block to prevent forever lock 
     App.leaveCriticalSection(FSSTORAGE_CS)  
   }
 }
  • App.logEnter(enterText) / App.logLeave - allows increasing/decreasing logging recursion level (just like native methods do). Each logEnter call MUST have paired logLeave call, so better to use as such:
 wrapEnterLeave: function (enterText, originalMethod) {
    return function(ctx) {
      App.logEnter(enterText)
      try {
        originalMethod(ctx)
      } finally {
        App.logLeave()
      }
    }
  }
  • new methods EventEmitter.prototype.prependListener and EventEmitter.prototype.prependOnceListener. Adds a listener function for the event named eventName to the beginning of the listeners array
const myEE = new EventEmitter();
myEE.once('foo', () => console.log('a'));
myEE.prependOnceListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
//   b
//   a
5.19.3 2021-03-04 #
  • openssl >= 1.1 dependency added to both rpm and deb ub-server packages

Changed #

5.19.6 2021-03-30 #
  • default user lock out strategy changed from permanent lock in DB to temporary in-memory lock
  • SECURITY root session (session started from command line with -u root) now bypass an attributes restriction check (can update uba_user.uPasswordHashHexa for example)
  • SQLite3 upgraded to 3.35.3
5.19.5 2021-03-17 #
5.19.4 2021-03-15 #
  • implicitlyAddedMixins logic is moved from native to @unitybase/ub
5.19.3 2021-03-04 #
  • BREAKING http module default for strictSSL sets to true. In case requested resource uses invalid or self-signed certificate error Message: libcurl error 60 (SSL peer certificate or SSH remote key was not OK) can occur. We strongly recommend not sets a strictSSL to false to prevent possible attacks. If it is absolutely necessary (for debug purpose) strictSSL can be disabled on request level:
     const edrReq = http.request({
       URL: 'https://server.with.broken.ssl/',
       method: 'POST',
       strictSSL: false,
     })
    
    or globally
    http.setGlobalConnectionDefaults({strictSSL: false}) // NOT RECOMMENDED!!   
    
  • http module keepAlive default is changed to true (thanks to the curl global cache it allows reusing of TCP connection on next request)

Deprecated #

5.19.5 2021-03-17 #

Removed #

5.19.5 2021-03-17 #

Fixed #

5.19.7 2021-03-30 #
  • fix AV in case command line script, what executed with disabled cust1 log level (SQL query parameters logging) tries to execute an SQL with parameters. Happens with ubcli generateDDL and ubcli migrate if cust1 excluded from ubConfig.logging.levels array.
5.19.6 2021-03-30 #
  • fix adding of multitenancy mixin to the implicitlyAddedMixins section in case security is defined in the partial config of some model
  • DDL generator 'DROP COLUMN' statement now works for SQLite3 database, thanks to SQLite 3.35.3 release
5.19.5 2021-03-17 #
  • server halts on allocation size overflow error. Such error is raised when SpiderMonkey can't allocate a huge string
5.19.3 2021-03-04 #
  • prevent AV on a server shutdown in case there are initialization errors
  • throws a <<<ubErrElsInvalidUserOrPwd>>> instead of <<<Access deny>>> in case of invalid username or password during login
  • uba_audit will contain a target username for LOGIN_FAILS action instead of empty string (retrieved from new property Session.pendingUserName)
  • uba_audit SECURITY_VIOLATION will contain a target username even in case login is in pending state (before this fix it was empty)
  • redis client wait until redis loads a database on a startup (prevents possible "LOADING Redis is loading the dataset in memory" error)

@unitybase/adminui-vue #

Added #

5.20.0 2021-03-25 #
  • UTableEntity: icon for "No sorting" option in the column sorting menu added
5.19.8 2021-03-23 #
  • default authentication form (ub-auth.html) handle a uiSettings.adminUI.forgotPasswordURL parameter from config. In case parameter is empty or not exists (default) then forgot password link do not displayed on the authentication form. Otherwise, a link to the specified URL is displayed
5.19.6 2021-03-15 #
  • UTableEntity. Added label localization in card view (UCardView)
  • UButtonGroup. Added the new prop direction with two options horizontal by default and the new vertical one
  • UDropdown. Added the new prop refElement for used to position the popper
5.19.5 2021-03-03 #
  • Checking uiSettings.adminUI.disableScanner config property in UFile and UNavbarUserButton. If true, then scan buttons are hidden in toolbars
  • UCrop: new component for edit images: crop, rotate, flip
  • UFileWebcamButton: drop down menu for choose the working regime: scan to PDF or scan to Picture, scan to PDF: save one or more images to the PDF file, also added ability to edit images after shoot by UCrop editor

Changed #

5.20.1 2021-03-29 #
  • AutoForm is renamed to UAutoForm
5.20.0 2021-03-25 #
  • migrate build to webpack5
5.19.6 2021-03-15 #
  • UTableEntity: click on column now show a sorting direction popup under cursor (not under toolbar sort button as before this changes); in this regime sorting direction popup is simplified (column name is removed, buttons aligneg verticaly)
5.19.5 2021-03-03 #
  • client-side locales reformatted to use a json. Auth page now inject /models/ub-pub/locale/lang-${conn.preferredLocale}.json instead of js.
  • replaceShowList: pass hideActions property to UTableEntity instead of build scopedSlots with empty div for it
  • UTableEntity showSummary action changes:
    • column.attribute.id used instead of column.attribute.code - this allows calc a summary for attributes with dots, like itemID.price
    • allow specifying aggregation function for columns using column.summaryAggregationOperator property - one of 'SUM'|'MIN'|'MAX'|'AVG'|null. By default SUM type is specified for Number columns
    • exporting table to Excel takes into account summaryAggregationOperator for columns
    • summary can be explicitly disabled by sets column.summaryAggregationOperator to null. Example:
<template>
<u-table-entity
  entity-name="shop_OrderItem"
  :columns="columns"
</template>
<script>
export default {
  data () {
    return {
      columns: [
        'ID',
        {
          id: 'price',
          summaryAggregationOperator: 'MIN'
        },
        {
          id: 'orderID.version',
          summaryAggregationOperator: null
        }
      ]
    }
  }
</script>

Removed #

5.20.1 2021-03-29 #
  • usage of @babel/plugin-proposal-object-rest-spread is removed from production build. Constructions like
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 }

is supported by all modern browsers.

Fixed #

5.20.1 2021-03-29 #
  • USelectEntity: In case value-attribute is specified for u-select-entity an attempt to edit selected entry: old behavior - causes an error because of invalid instanceID; new behavior - opens edit form correctly
5.20.0 2021-03-25 #
  • USelectEntity: In case value-attribute is specified for u-select-entity (e.g. :value-attribute="code") and the desired value is selected from dictionary then display attribute cannot be found and: old behavior - ID is shown; new behavior - value is shown corectly
  • use SystemJS.import('@unitybase/pdf') instead of System.import('@unitybase/pdf') to prevent webpack including a pdf package into adminui-vue bundle
  • UFileWebcamButton: computed property isDisabled must return value of type boolean to prevent a console warnings in dev mode
  • lookups: the loading of lookups entries waits for another loading of entries for the same entity if it is not completed yet. This prevents parallelism bug, which happens when several UTableEntity controls load lookups for the same entity and only the first one awaits the subscribe method and displays columns using lookups correctly
  • added a cleanup of a dist folder before create a production build to remove unnecessary artifacts of previous build from resulting package
5.19.8 2021-03-23 #
  • UNavbar: fix scrollIntoView in case several navbars are added by apps (as reported by protoka devs)
5.19.7 2021-03-16 #
  • Fix utils/Form/helpers.js date value comparison
5.19.6 2021-03-15 #
  • use the same field list for ubm_form and ubm_enum in adminui-pub and adminui-vue
  • UTableEntity showSummary action now works for cached entities [LDOC-1168]. Fixed by adding a .misc({__mip_disablecache: true}) to the summary repository (LocalDataStorage can't calculate SUM etc.)
  • UTableEntity: for cached entities filter by startWith/notStartWith now case-insensitive (as for non cached one). Actual fix is in @unitybase/cs-shared.LocalDataStorage.
5.19.5 2021-03-03 #
  • UTableEntity - fix logic for alternate names for hide-actions property for copy and link
  • replaceShowList: pass object properties to a column only if it is defined. Its prevent a bug when column sortable and filters properties is not defined in UTable
  • UTableEntity: allow refreshing an edited row for tables what based on the UBQL with sub-queries
  • USelectEntity: loading display value waits for another loading display value operation for the same control, if it not completed yet, this prevents parallelism bugs, which happens if value of the same control change several times fast enough
  • prevent exception in case client localisation of ub-pub model not found for user preferred language.
  • replaceShowList: fixed incorrect display of the UTableEntity columns header received from the cache
  • "@popperjs/core" version locked to "~2.8.6" - there is unexpected behavior in 2.9.0 (in dev mode)
  • UFile: disable webcam capture button if control is disabled or webcam not available

@unitybase/adminui-pub #

Added #

5.19.5 2021-03-03 #
  • Checking uiSettings.adminUI.disableScanner config property in BasePanel. If it's set as true, then scan button would not show in form

Changed #

5.20.0 2021-03-25 #
  • migrate build to webpack5
  • loading of TinyMCE in production build implemented using webpack5 dynamic import feature
5.19.5 2021-03-03 #
  • client-side locales reformatted to use a json

Fixed #

5.19.9 2021-03-17 #
  • UB.core.UBUtil.getNameMd5 uses JSON.stringify for tail parameters before calculation of MD5 sum. This fix ExtJS grid configuration save/load in case columns config is an array of object
5.19.6 2021-03-15 #
  • use the same field list for ubm_form and ubm_enum in adminui-pub and adminui-vue

@unitybase/blob-stores #

Added #

5.20.1 2021-03-29 #
  • new method blobStores.internalWriteDocumentToResp - writes a BLOB content to the response without verifying an ALS (but RLS is verified) or return an error without modifying a response. Exposed as App.blobStores.internalWriteDocumentToResp

    SECURITY - method can be used inside endpoint or rest entity method, which already checks the access rights to the document.

5.19.6 2021-03-23 #
  • history rotation adds entity and createdAt values into ub_blobHistory. This allows implement a BLOB FTS indexing using external tools (like ElasticSearch etc.)
5.19.5 2021-03-15 #
  • SECURITY: for untity-entity based getDocument requests check user have access to the record in both base entity and unity-entity (instead unity-entity only)

Fixed #

5.20.1 2021-03-29 #
  • App.blobStores.putContent documentation fixed - content can also be a THTTPRequest (since UB@5.9.3)
5.19.6 2021-03-23 #
  • UB4 regression: if BLOB info stored in the DB not contains a revision (UB < 5) getDocument don't try to get a revision from history and returns an actual content
5.19.5 2021-03-15 #
  • SECURITY filesystem based blob stores checks file name is valid before storing content into the file system

@unitybase/cdn #

Changed #

5.20.0 2021-03-25 #
  • cdn_classifier entity uses the ubm_query as unity entity
5.19.6 2021-03-15 #
  • CDN forms, reports and er-diagrams are converted to ubrow format
5.19.5 2021-03-03 #
  • client side locales reformatted into JSON

Fixed #

5.19.5 2021-03-03 #
  • copy classifier item on the form of classifier

@unitybase/codemirror-full #

Changed #

1.3.0 2021-03-25 #
  • migrate build to webpack5

@unitybase/cs-shared #

Added #

5.5.19 2021-03-03 #
  • LocalDataStore.doFiltration accept a 3d optional argument skipSubQueries. If explicitly set to true, then subquery conditions are skipped (instead of throws)

Changed #

5.5.20 2021-03-15 #
  • LocalDataStorage - improve debugging experience by avoid using of anonymous functions and replacing _.forEach -> for .. in

Fixed #

5.6.0 2021-03-25 #
  • CustomRepository.fromUbql: prevents overriding of a default method in case Repository is created from JSON without method property UB.Repository({entity: 'my_entity', fieldList: ['a', 'b']}). A better fix for !1048
5.5.20 2021-03-15 #
  • LocalDataStorage: filter by startWith/notStartWith now case-insensitive (as in DB with _CI locales)

@unitybase/mailer #

Changed #

5.5.3 2021-03-15 #
  • ubm_desktop-scanerSettings-fm increased the maximum value of page margins for the barcode configuration to 999 pixels instead of 100 pixels [CUBDF-823]

@unitybase/org #

Changed #

5.19.6 2021-03-15 #
  • ORG forms, reports and er-diagrams are converted to ubrow format
5.19.5 2021-03-03 #
  • client side locales reformatted into JSON
  • server-side locales reformatted into JSON

@unitybase/pdf #

Changed #

5.1.0 2021-03-25 #
  • migrate build to a webpack5

[@unitybase/systemjs-plugin-vue-ub]([object Object]) #

Changed #

1.4.0 2021-03-25 #
  • migrate build to webpack5

@unitybase/ub-pub #

Added #

5.8.4 2021-03-15 #
  • @unitybase/cs-shared formatByPattern module exposed as ub-pub formatter. So Dates and Numbers formatting can be done using:
// inside Vue instance
this.$UB.formatter.formatDate('2020-05-23', 'date', 'uk')
// in any module
const UB = require('@unitybase/ub-pub')
UB.formatter.formatNumber(1234.5, 'sum', 'en')
  • new methods EventEmitter.prototype.prependListener and EventEmitter.prototype.prependOnceListener. Adds a listener function for the event named eventName to the beginning of the listeners array
const myEE = new EventEmitter();
myEE.once('foo', () => console.log('a'));
myEE.prependOnceListener('foo', () => console.log('b'));
myEE.emit('foo');
// Prints:
//   b
//   a
5.8.3 2021-03-03 #
  • UB.xhr.defaults property added - direct access to the default HTTP parameters for xhr. Can be used, for example, to change http request timeout globally:
const UB = require('@unitybase/ub-pub')
UB.xhr.defaults.timeout = 300000 // set all ajax requests timeout to 5 minutes

Changed #

5.9.0 2021-03-25 #
  • migrate build to webpack5
5.8.3 2021-03-03 #
  • client side locales reformatted into JSON
  • BREAKING - for custom authentication pages what use ub-pub localization lang-??.json must be injected instead of lang-??.js
UB.get(`/models/ub-pub/locale/lang-${conn.preferredLocale}.json`).then(resp => {
  UB.i18nExtend(resp.data)
}).catch(e => {console.error(e)})

Fixed #

5.8.4 2021-03-15 #
  • ClientRepository bypass addAttrsForCachedEntity for repositories with __mip_disablecache: true in misc.

@unitybase/ub #

Added #

5.20.1 2021-03-29 #
  • new method App.blobStores.internalWriteDocumentToResp - writes a BLOB content to the response without verifying an ALS (but RLS is verified) or return an error without modifying a response. SECURITY - method can be used inside endpoint or rest entity method, which already checks the access rights to the document.
5.19.7 2021-03-23 #
  • new ubConfig parameter uiSettings.adminUI.forgotPasswordURL. If sets, then "Forgot password" link is displayed on the login form
  • added THTTPRequest.json() method - read a UTF8 encoded HTTP request body as JSON Object. Can be used as faster alternative to JSON.parse(req.read('utf8'))
  • added IncomingMessage.json() - a faster alternative to JSON.parse(resp.read()) for http client requests
  • ub_blobHistory entity extended by entity and createdAt attributes
5.19.6 2021-03-17 #
  • App.launchEndpoint emits 2 addition events:

    • launchEndpoint:before with parameters: (req, resp, endpointName)
    • launchEndpoint:after with parameters: (req, resp, endpointName, defaultPrevented) Can be used to do something on before/after any endpoint execution
  • App.removeUserSessions(userID) a method to logout a user completely

5.19.5 2021-03-15 #
  • UB.registerMixinModule(mixinName, mixinModule) - a way to add a pure JS mixin implementation. See detailed mixins tutorial for details

  • Sesson.tenantID property added - contains a number >0 for multitenancy app. 0 on case multitenancy not enabled

  • implicitly disable multitenancy mixin for ub_version and ub_miration

  • fsStorage mixin: implements a CRUID operation for entity, whose data is stored in the file system. Used as data storage implementation for ubm_form, ubs_reports and ubm_diagrams - see File system storage tutorial for details.

    BREAKING diagrams, reports and forms MUST be converted:

    • ubcli convertDefFiles -u root
    • *.ubrow and modified files added to git (git add *.ubrow && git add *.def && git add *.template)
    • files, reported by convertDefFiles should be deleted from project (removal script is outputted to the stdout by convertDefFiles)
  • critical section now available in http working threads:

 const App = require('@unitybase/ub').App
 // critical sectin must be registered once in the moment modules are evaluated 
 const MY_CS = App.registerCriticalSection('SHARED_FILE_ACCESS')
 function concurrentFileAccess() {
   // prevents mutual access to the same file from the different threads
   App.enterCriticalSection(FSSTORAGE_CS)
   try {
     const data = fs.readfileSync('/tmp/concurrent.txt', 'utf8')
     // do some operation what modify data
     fs.writefileSync('/tmp/concurrent.txt', data)
   } finally {
     // important to leave critical section in finally block to prevent forever lock 
     App.leaveCriticalSection(FSSTORAGE_CS)  
   }
 }
  • App.logEnter(enterText) / App.logLeave - allows increasing/decreasing logging recursion level (just like native methods do). Each logEnter call MUST have paired logLeave call, so better to use as such:
 wrapEnterLeave: function (enterText, originalMethod) {
    return function(ctx) {
      App.logEnter(enterText)
      try {
        originalMethod(ctx)
      } finally {
        App.logLeave()
      }
    }
  }
5.19.4 2021-03-03 #
  • new ubConfig property uiSettings.adminUI.disableScanner- disable a scanner related functionality if true.
  • new property Session.pendingUserName - a username for authentication in pending state. Used for security audit to log a username in case session is not created yet

Changed #

5.19.6 2021-03-17 #
  • fsStorage mixin can use a simplified BLOB info (only origName is stored instead of JSON) for mdb based BLOB attributes
5.19.5 2021-03-15 #
  • implicitlyAddedMixins logic is moved from native to @unitybase/ub model (into _hookMetadataTransformation.js hook)
5.19.4 2021-03-03 #
  • allLocales endpoint (client-side localization download) supports JSON files in /public/lang-??.json. Content of such files are wrapped into UB.i18nExtend(....) before passing to client.

This allows using automation tools for preparing other language's localization.

  • server-side localization automatically loads a JSON files from models serverLocale folder. Naming convention is - *-??.json where ?? is a language code. Such convention allows creating of a model with serverLocale folder contains localization to the new language for all other models, for example model for zz language zz-locale with serverLocale/cdn-zz.json, serverLocale/org-zz.json etc.

    It's recommended to split existed serverLocale/*.js into several JSON and remove a require('./serverLocale/*.js') form model initialization using instruction below (remove locales you do not need from touch, replace modelName by lowercased name of your model ):

    cd serverLocale
    touch modelName_sl-en.json modelName_sl-ru.json modelName_sl-uk.json modelName_sl-az.json modelName_sl-id.json modelName_sl-ka.json modelName_sl-tg.json modelName_sl-ky.json
    git add ./*.json
    // for each language move content of the js locale for individual language into modelName-??.json (without language identifier)
    // Use WebStorm 'Fix all JSON problems' action to add a double quoters in new lang files  
    // remove require('./serverLocale/nameOfLocaleFile.js') from initModel.js
    git rm ./serverLocale/nameOfLocaleFile.js
    

Removed #

5.19.5 2021-03-15 #
  • UB.mixins.mStorage removed (obsolete)

Fixed #

5.19.6 2021-03-17 #
  • multitenancy: prevent recreation of default constraint for mi_tenantID on Postgres

@unitybase/uba #

Added #

5.19.6 2021-03-17 #
  • SECURITY user will be logged out immediately if:
    • roles or groups for user is changed
    • certificate is removed or updated
    • uba_user.disabled is sets to true
5.19.5 2021-03-15 #
  • implicitly disable multitenancy mixin for uba_role, uba_rls and uba_els
5.19.4 2021-03-03 #
  • advanced security check failures will be logged into uba_audit (throws UB.ESecurityException instead of Error)

Changed #

5.19.5 2021-03-15 #
  • UBA forms, reports and er-diagrams are converted to ubrow format
5.19.4 2021-03-03 #
  • client side locales reformatted into JSON

Fixed #

5.19.5 2021-03-15 #
  • display actionTime for uba_auditTrail (both grid and form) and uba_audit (grid only, form TBD) with seconds resolution

@unitybase/ubcli #

Added #

5.20.2 2021-03-30 #
  • ubcli migrate: new parameter -ddlfor model1,model2,... - allows to specify a model list DDL generator is limited for. For legacy apps Option value is passed as a --models to ubcli generateDDL
5.19.6 2021-03-15 #
  • added multitenancy support for generateDDL
  • implemented generateDDL multitenancy support for Postgres
  • ubcli generateNginxCfg support multitenancy (by adding a *. for server_name directive)

Changed #

5.19.7 2021-03-17 #
  • ubcli convertDefFiles produce simplified BLOB info (only origName is stored instead of JSON)

Fixed #

5.20.3 2021-03-30 #
  • ubcli migrate: fix for parameter -ddlfor
5.19.6 2021-03-15 #
  • ubcli generateNginxCfg consider default for serverConfig.metrics.enabled is true, so correctly adds allow rules for metrics endpoint as configured in serverConfig.metrics.allowedFrom

@unitybase/ubm #

Added #

5.20.0 2021-03-25 #
  • ubm_sysdictionary entity, navigation shortcut for the entity (the auto form is used). This entity is a copy of the old ubm_query entity that contains information about system dictionaries.
5.19.5 2021-03-15 #
  • implicitly disable multitenancy mixin for ubm_desktop, ubm_enum and ubm_navshortcut

Changed #

5.20.0 2021-03-25 #
  • BREAKING ubm_query entity is used only as a unity entity for others now. Adding to ubm_sysdictionary now is equivalent to adding to ubm_query table. So if you add entries using ub-migrate for example, it should be tweaked as described below:
$context:
  type: ubm_query
region:
  name: {en: Regions, ru: Регионы, uk: Регіони}
  ...

to:

$context:
  type: ubm_sysdictionary
region:
  name: {en: Regions, ru: Регионы, uk: Регіони}
  ...
  • UBM model now uses ub-migrate for adding/updating enums, navigation items and roles
  • 'UBM_READ_USERS' & 'UBM_READ_EVERYONE' ELS rules removed in flavor of UBM_READ_USER added by ub-migrate
5.19.5 2021-03-15 #
  • UBM forms, reports and er-diagrams are converted to ubrow format
5.19.4 2021-03-03 #
  • client side locales reformatted into JSON

Removed #

5.19.4 2021-03-03 #
  • i18n for FR related scanner (recognition) settings is remover (FR not used anymore)

Fixed #

5.19.7 2021-03-16 #
  • Cleaned up ubm_diagram and ubm_form localization (ru, ka, tg) from non-existing attribute
5.19.5 2021-03-15 #
  • scanner settings form - Multiple page checkbox becomes disabled in case JPEG format is selected
  • ubm_navhortcut form:
    • attributes tree is filled for both JSON and JS shortcut code type ("entity": ".." and entityName: '...'). Before this fix only double quotes is recognized
    • form layout changed do be more compact (internally rewritten to u-grid + u-auto-field)

@unitybase/ubs #

Added #

5.19.5 2021-03-15 #
  • ubcli convertDefFiles utility to convert a reports, forms and diagrams to new storage format (.ubrow)

Changed #

5.20.0 2021-03-25 #
  • migrate build to webpack5
5.19.4 2021-03-03 #
  • client side locales reformatted into JSON

Fixed #

5.19.7 2021-03-16 #
  • Cleaned up ubs_report localization (ru, ka, tg) from non-existing attribute mi_modifyDate
5.19.6 2021-03-15 #
  • server-sire report rendering fixed (bug in ubs@5.19.5)

@unitybase/udisk #

Changed #

5.19.4 2021-03-03 #
  • client side locales reformatted into JSON
  • server-side locales reformatted into JSON

@unitybase/xlsx #

Changed #

5.20.0 2021-03-25 #
  • migrate build to webpack5