@unitybase/adminui-vue #

Added #

5.24.12 2024-04-23 #
  • new icons:
    • u-icon-code
    • u-icon-deploy
    • u-icon-curly-braces
5.24.11 2024-04-16 #
  • added check that pasted text contains only printable characters. For <textarea> \n is also allowed. For CodeMirror - \n and \t. Attempt to paste non-printable characters throws ERR_UNPRINTABLE_CHARS exception
5.24.10 2024-04-10 #
  • new icon: u-icon-upload
5.24.9 2024-04-05 #
  • new icons:
    • u-icon-stamp
    • u-icon-file-import
    • u-icon-barcode
    • u-icon-qrcode
    • u-icon-compress
    • u-icon-file-zip
    • u-icon-file-zip2
    • u-icon-email
    • u-icon-email-profile
    • u-icon-email-settings

Fixed #

5.24.12 2024-04-23 #
  • allow paste text what contains \r (in addition to \n) for <textarea>
5.24.8 2024-04-01 #
  • UTableEntity fixed webDav.getURI method call - added await

@unitybase/adminui-pub #

Changed #

5.24.80 2024-04-10 #
  • PDFComponent: added fallback to @unitybase/pdf-viewer on Ext.form

@unitybase/base #

Added #

5.24.5 2024-04-23 #
  • added an example of using the call App.dbConnections.execParsed method to execute a stored procedure with output parameters (ODBC driver, UB 5.24.11)

@unitybase/cs-shared #

Fixed #

5.24.3 2024-04-16 #
  • LocalDataStore doFiltration method instantly returns empty array, when input is an empty array
5.24.2 2024-04-05 #
  • LocalDataStore.whereListToFunctions: do not fail for 1=1 and 0=1 custom conditions for cached entities They likely were assigned as always negative or always positive ones inside the CustomRepository.where()

@unitybase/ub-pub #

Added #

5.24.9 2024-04-23 #
  • Localization for server error ERR_SET_REFERENCE_ERROR, which means insert / update a record, which contains reference to a non-existing entity
5.24.7 2024-04-10 #
  • added 502 Bad gateway server-side error response handling - now instead of unhandled exception client throws ERR_WAITING_SERVER_TO_START message and global error handler translate it as The server is undergoing short routine maintenance. After 1-2 minutes, you will be able to continue working without losing data and reloading the page. If the error occurs again, reload the page
  • for index page and in case nginx is used as a reverse proxy - HTTP 502 error will be redirected to /models/cust/502.html or /models/ub-pub/502.html page (if 502.html not found in cust model)
  • added i18n for requireDigitalSignature (used in pki interface for Ukrainian cryptography)
  • UbPkiInterface: added setAllowPrivateKeyCache method, added parameter clearCache for closePrivateKey method For a while, implemented in @ub-d/iit-web-crypto only

Changed #

5.24.8 2024-04-16 #
  • Improvements in LocalRepository class:
    • Now it is not required to pass rowCount, which may be implied from the data array length
    • Added support of the #maxdate macro in LocalRepository class for mi_deleteDate attributes, for example:
      return UB.LocalRepository(
        {
          data: attributes.map(({value, label}) => [value, label, '#maxdate']),
          fields: ['code', 'name', 'mi_deleteDate']
        },
        'frm_Attribute'
      )
        .attrs('code', 'name', 'mi_deleteDate')
        .orderBy('name')
      
      This will return the value mi_deleteDate, which corresponds to the not deleted rows.
    • Added support for initializing from array of objects, for example:
      const data = [
        {code: '1', name: 'One'},
        {code: '2', name: 'Two'}
      ]
      return UB.LocalRepository(data, 'frm_Attribute')
        .attrs('code', 'name')
        .orderBy('name')
      
      If entity contains mi_deleteDate and data objects do not contain this attribute, the data store will be extended with the mi_deleteDate attribute with the value #maxdate.

@unitybase/ub #

Added #

5.25.22 2024-04-05 #
  • metadata loader will throw on server startup in case metafile with localization contains mapping for either an entity or any attribute

Changed #

5.25.24 2024-04-23 #
  • App.*Cache* functions family signature changed - last parameter ignoreTenants of type boolean replaced by options Object. This should not break an existed applications, since ignoreTenants is used only by ubq model af far as we know. The new options object allows us to be more flexible in the future. For a while a most important additions are:
    • options.nx - if true only set the key if it does not already exist. Can be used to atomically set value
    • options.px - REDIS backend only. Set the specified expire time, in milliseconds (a positive integer); 0 - not expired Example:
// old code
if (App.globalCacheGet(GLOBAL_CACHE_KEY) === '1') {
  console.warn('SCHEDULER: task %s is already running', taskName)
  return false
App.globalCachePut(GLOBAL_CACHE_KEY, '1')
try {
// run a sceduler
} finally {
  App.globalCachePut(GLOBAL_CACHE_KEY, '0')
// new code
// use nx option (Put if Not Exists) instead of get + put to atomically validate what task is not running
// in case of Redis backend px option prevent key to be stored forever if server crashes
if (!App.globalCachePut(GLOBAL_CACHE_KEY, '1', { nx: true, px: ONE_HOUR_MS })) {
  console.warn('SCHEDULER: task %s is already running', taskName)
  return false
try {
  // run a scheduler
} finally {
  App.globalCachePut(GLOBAL_CACHE_KEY, null) // remove key
5.25.21 2024-04-01 #
  • multi-tenancy: new parameter ignoreTenants added to App.globalCacheGet, App.globalCachePut, App.memCachePut and App.memCacheGet. By default, it's false, so in case of multi-tenancy environment both global and in-mem cache will be separated by tenantID (keys will be appended by ':tid'+tenantID). In case ignoreTenants=true keys are global (:tid not added). Require UB@5.24.9

@unitybase/uba #

Added #

5.24.6 2024-04-16 #
  • new system role ServiceAccount. For a while user with ServiceAccount role will ignore 2FA and not allowed to use UI. In future some other rules can be applied to ServiceAccount role

@unitybase/ubcli #

Added #

5.25.27 2024-04-16 #
  • DDL generator: for Oracle database VARCHAR2(4000) column will not be altered to NVARCHAR2(2000) - first one is used to store Document attributes in some old projects
5.25.26 2024-04-10 #
  • ubcli generateNginxCfg will add redirection to custom "Maintenance" page in case server is down (502 Bad Gateway). Default page can be replaced by 502.html in cust model.
5.25.25 2024-04-05 #
  • new command ubcli crypt certParse path/to/file.cer - parse binary certificate and output it content as JSON into stdout. Can accept folder ubcli crypt certParse path/to/folder/ - in this case will parse all files on folder
5.25.24 2024-04-01 #
  • ubcli generateNginxCfg now can accept -r, -l, -sslkey, -sslcert and -maxDocBody command line parameters as environment variables UB_SSLREDIRECT, UB_LB, UB_SSLKEY,UB_SSLCERT and UB_MAXDOCBODY. This allows to avoid writing custom lifecycle/ub-app-upgrade.sh script. Example:
UB_SSLREDIRECT=true \
UB_LB=true \
UB_SSLKEY="/etc/letsencrypt/live/myapp.mydomain.com/privkey.pem" \
UB_SSLCERT="/etc/letsencrypt/live/myapp.mydomain.com/fullchain.pem" \
UB_MAXDOCBODY=70m
ubcli generateNginxCfg
ubcli generateNginxCfg -r -l -optimistic \
 -sslkey /etc/letsencrypt/live/myapp.mydomain.com/privkey.pem \
 -sslcert /etc/letsencrypt/live/myapp.mydomain.com/fullchain.pem \
 -maxDocBody 70m 
  • ubcli migrate now can accept -optimistic command line parameter as environment variable UB_OPTIMISTIC. This allows to avoid writing custom lifecycle/ub-app-upgrade.sh script. Example:
UB_OPTIMISTIC=true ubcli migrate -u root
ubcli migrate -u root -optimistic

@unitybase/ubq #

Changed #

5.24.5 2024-04-01 #
  • adopt scheduler to changes in memCacheGet|Put for multi-tenancy environment

Fixed #

5.24.8 2024-04-23 #
  • fixed possible suspension of execution of a schedulers task what marked as singleton in case redis is used as a globalCache backend and server crashed during task execution. Now model sets a globalCache mark that indicates the task is being performed with a one hour TTL, so even server cash, the mark will disappear instead of staying in redis forever
5.24.5 2024-04-01 #
  • ubs_numcounter.getRegnumLoosely: fix possible range intersection for loosely counter in case of several server instance (either load balancing or separate scheduler)

@unitybase/ubs #

Added #

5.24.7 2024-04-05 #
  • ubs_settings.loadKey now internally uses globalCache (cache is flushed after value is edited, so restart do not required). This can dramatically reduce DB queries count in some existed scenarios (we saw 25 DB query per second into ubs_settings). For a multi-instance deployment what require edition of ubs_settings in runtime redis must be configured as a globalCache storage

Fixed #

5.24.8 2024-04-10 #
  • ubs_setting cache flush happens now even if fieldList on insert/update does not contain "settingKey"
5.24.7 2024-04-05 #
  • softLock mixin: on before update - renew lock if it is not exists instead of throwing an error, because in long transaction lock can expire
  • fixed ubs_numcounter.getRegnumLoosely if called without startNum parameter and key not exists (added default startNum=0)