Skip to content

Releases: totaljs/framework

v3.4.5

10 Jul 09:05
Compare
Choose a tag to compare

Fixes:

  • fixed: a problem with persistent images

v3.4.4

07 Jul 18:29
Compare
Choose a tag to compare

News:

  • added: schema options $.successful(function(response) {})
  • added: options.reconnectserver {Boolean} to WEBSOCKETCLIENT
  • added: req.snapshot(callback(err, request_body))
  • added: a new command CMD('reload_preferences')
  • added: a new FILESTORAGE mechanism based on UID
  • added: sql extension to U.getContentType()
  • added: F.stats.performance.usage which contains percentual usage of the thread

Updates:

  • updated: SchemaOptions method $.response([index/operation_name]), e.g. $.response('workflow.NAME')
  • updated: snapshot startscript.js.json contains tabs instead of spaces
  • updated: DatabaseBuilder.rule(rule, [param]), supports string declaration of filter function
  • updated: URL validation

Fixes:

  • fixed: cleaning of NoSQL embedded databases
  • fixed: String.parseCSV(), now supports multiline strings
  • fixed: a bug when closing of websocket
  • fixed: DatabaseBuilder.search() method
  • fixed: Error in CLONE() method
  • fixed: schema.inherit() by adding schema.middleware() and schema.verify()
  • fixed: parsing messages in WebSocket
  • fixed: a problem in some commands pre-render in the view compiler
  • fixed: parsing of query strings

v3.4.3

11 May 07:51
Compare
Choose a tag to compare

News:

  • added: HASH(value, [type]) for creating hash like in jComponent
  • added: SchemaOptions.repo as alias to SchemaInstance.model.$$repository
  • added: a new type CONVERT syntax to schema.define() (more in docs)
  • added: SchemaEntity.verify(name, function($), [cache]) for async verification of values
  • added: TEMP variable as a new global variable (it's cleaned every 7 minutes)
  • added: CONF.allow_persistent_images: true which allows to reuse resized images in temp directory
  • added: req.filecache(callback) as alias for F.exists()
  • added: own QueryParser
  • added: RESTBuilderInstance.convert('name:String,age:Number') method
  • added: RESTBuilder.upgrade(fn(restbuilder)) for upgrading of RESTBuilder
  • added: RESTBuilder parses Total.js Errors in responses as Error
  • added: String.prototype.env() replaces all values in the form [key] for CONF.key
  • added: WebSocket supports a new type - raw buffer
  • added: Number.fixed(decimals)

Updates:

  • updated: websocket.send2(message, comparer, replacer, [params]) by adding params argument for comparer function
  • updated: Websocket.encodedecode can enable/disable easily encoding of messages
  • updated: bundling skips all bundles with -bk.bundle in filename
  • updated: bundle filenames are displayed in console
  • updated: UPDATE() method by adding noarchive argument
  • updated: TEST() method supports [subdomain] keyword and METHOD url in URL address
  • updated: MODIFY([filename], fn) by adding filename argument
  • updated: background of schedulers by @fgnm
  • updated: U.download() by adding param argument
  • updated: U.request() by adding param argument
  • updated: schema.cl(name, [value]) method by adding value argument for replacing of existing code-list
  • updated: Tangular version to v4.0.0

Improvements:

  • improved: filename in modificators (now filenames contain relative paths)
  • improved: performance of U.request() (around +10%)
  • improved: performance of U.download() (around +10%)
  • improved: performance of RESTBuilder
  • improved: CSS minifier by compressing single hex color from e.g. #000000 to #000

Fixes:

  • fixed: localization in totaljs executable script
  • fixed: phone validation
  • fixed: DOWNLOAD()
  • fixed: Number.VAT() by Tomas Novak
  • fixed: debugging mode in Node.js v14
  • fixed: allow_compile_html in static files
  • fixed: ROUTE() method, there was a problem with spaces GET /*
  • fixed: ACTION() with json output
  • fixed: controller in $ACTION() with used get and query actions
  • fixed: PATCH method in $ACTION()
  • fixed: schema.allow() in PATCH method
  • fixed: image resizing in debug-mode

v3.4.1

11 Mar 13:11
Compare
Choose a tag to compare

News:

  • added: SchemaOptions.parent returns a parent model
  • added: Tangular template engine (experimental)
  • added: String.makeid() for creating of unique identifier from string
  • added: a new property called message.ua to FLOWSTREAM()

Updates:

  • updated: HttpFile.fs() by adding id argument for updating of existing file
  • updated: default value for allow_ssc_validation to true

Fixes:

  • fixed: String.parseDate(format) with defined format
  • fixed: inheriting of controllers between schemas
  • fixed: MailMessage.attachments()
  • fixed: calling of F.snapshotstats in cache recycle
  • fixed: controller.success()
  • fixed: removing of unused files when a bundle is extracting
  • fixed: a processor function in F.backup()

Improvements:

  • improved: Date.format()
  • improved: Total.js translate (supports ErrorBuilder and DBMS)

v3.4.0

11 Feb 07:33
Compare
Choose a tag to compare

News:

  • added: date.setTimeZone(timezone)
  • added: `NOSQL('~absolute_path.nosql')' loads external NoSQL embedded database
  • added: `TABLE('~absolute_path.nosql')' loads external Table
  • added: (generate) subtype into the config files
  • added: String.isBase64()
  • added: new schema type Base64
  • added: SchemaEntity supports schema.addWorkflowExtension(name, fn($, [data]))
  • added: SchemaEntity supports schema.addTransformExtension(name, fn($, [data]))
  • added: SchemaEntity supports schema.addOperationExtension(name, fn($, [data]))
  • added: SchemaEntity supports schema.addHookExtension(name, fn($, [data]))
  • added: SchemaEntity supports schema.setSaveExtension(fn($, [data]))
  • added: SchemaEntity supports schema.setReadExtension(fn($, [data]))
  • added: SchemaEntity supports schema.setQueryExtension(fn($, [data]))
  • added: SchemaEntity supports schema.setRemoveExtension(fn($, [data]))
  • added: SchemaEntity supports schema.setInsertExtension(fn($, [data]))
  • added: SchemaEntity supports schema.setUpdateExtension(fn($, [data]))
  • added: SchemaEntity supports schema.setPatchExtension(fn($, [data]))
  • added: SchemaOptions supports $.extend([data]) for evaluating of all extensions for the current operation
  • added: WebSocket.keys property (it contains all keys with connections)
  • added: threads directory for server-less functionality
  • added: a global variable called THREAD with a name of current thread
  • added: require('total.js').http(..., { thread: 'thread_name' }) evaluates only specified thread
  • added: require('total.js').cluster.http(..., { thread: 'thread_name' }) evaluates only specified thread in cluster
  • added: framework creates a file with app stats in the form your_init_script_name.js.json
  • added: a new config key allow_stats_snapshot
  • added: view engine @{import()} supports auto-merging JS or CSS files: @{import('default.js + ui.js')}
  • added: exports.options delegate to component in FLOWSTREAM
  • added: DatabaseBuilder.autofill() from DBMS
  • added: HttpFile.extension property
  • added: HttpFile.size property alias to HttpFile.length
  • added: auto-session cleaner of unused sessions
  • added: allow_sessions_unused config key for cleaning of unused sessions
  • added: missing PATH.schemas, PATH.operations and PATH.tasks
  • added: a new method PATH.updates
  • added: easy updating of applications via UPDATE(versions, [callback], [pause_server_message])
  • added: NOSQL counter .reset([type], [id], [date], [callback]) method-
  • added: session.listlive(callback) returns all live items in session
  • added: controller.ua returns parsed User-Agent
  • added: $.ua returns parsed User-Agent in Schemas, Operations, TaskBuilder, MIDDLEWARE() and AUTH()
  • added: support for .mjs extensions
  • added: a simple support for DDOS protection allow_reqlimit : Number (max. concurent requests by IP just-in-time)
  • added: unit-testing supports colors, added by @dacrhu
  • added: String.encryptUID() as alias for U.encryptUID()
  • added: String.decryptUID() as alias for U.decryptUID()

Updates:

  • updated: WEBSOCKET() supports +, - and 🔒 as authorization flags
  • updated: LOAD() supports service type
  • updated: cluster watches restart or restart_NAME_of_THREAD files for restarting of existing threads
  • updated: cluster supports auto mode
  • updated: cluster supports watcher in debug mode
  • updated: *.filefs(), *.filenosql(), *.imagefs(), *.imagenosql() by adding checkmeta argument
  • updated: $.done([user_instance]) method in AUTH(), added a new argument called user_instance (optional)
  • updated: GZIP is enabled only for JSON bodies which have more than 4096 bytes
  • updated: .env parser supports parsing of .env-debug or .env-release files according to the mode
  • updated: list of user-agents in String.parseUA()

Fixes:

  • fixed: ON('error404') when the route doens't exist
  • fixed: filter in Schema workflows, transformations and operations
  • fixed: NOSQL() joins with absolute paths
  • fixed: TABLE() joins with absolute paths
  • fixed: (random) subtype in config files
  • fixed: (response) phrase in ROUTE() for multiple OPERATIONS
  • fixed: a response in ROUTE() with mulitple operations if the result contained some error
  • fixed: a security bug with a path traversal vulnerability
  • fixed: debug watcher for themes
  • fixed: generators in schemas with a new declaration
  • fixed: a problem with handling files in 404 action
  • fixed: startup directory in bundles
  • fixed: schema.inherit() didn't copy required fields.
  • fixed: SUCCESS() serialization with SUCCESS() argument
  • fixed: a critial bug with UID() generator
  • fixed: clearing of DNS cache

Improvements:

  • improved: LOGMAIL() mail format
  • improved: starting logs in console output (added IPv4 local address)
  • improved: performance with JSON serialization in controller.success() and controller.done()

v3.3.2

12 Nov 14:41
Compare
Choose a tag to compare

Fixes:

  • fixed: default time zone (utc is default time zone)

v3.3.1

07 Nov 17:49
Compare
Choose a tag to compare

News:

  • added: RESTBuilder.callback() which performs .exec() automatically
  • added: FLOWSTREAM()

Fixes:

  • fixed: AUDIT() method
  • fixed: error handling in controller.invalid()
  • fixed: req.authorize()
  • fixed: CSS auto-vendor-prefixes, fixed opacity with !important
  • fixed: CONVERT() a problem with arrays

v3.3.0

30 Sep 07:14
Compare
Choose a tag to compare

News

  • added: NEWTASK(name, declaration) for creating preddefined TaskBuilder
  • added: TASK(name, taskname, callback, [controller/SchemaOptions/OperationOptions/ErrorBuilder]) for executing preddefined TaskBuilder
  • added: a new config key directory_tasks for TaskBuilder
  • added: a global alias MODIFY() for F.modify()
  • added: a global alias VIEWCOMPILE() for F.view_compile()
  • added: mail.type = 'html' can be html (default) or plain
  • added: $.headers into the SchemaOptions, OperationOptions and TaskBuilder
  • added: String.parseCSV([delimiter]) returns Object Array
  • added: String.parseUA([structured]) a simple user-agent parser
  • added: req.useragent([structured]) returns parsed User-Agent
  • added: a new config key default_crypto it can rewrite Total.js crypto mechanism (default: undefined)
  • added: a new config key default_crypto_iv it's an initialization vector (default: generated from secret) or it can contain a custom hex value
  • added: a new config key allow_workers_silent can enable/disable silent workers (default: false)
  • added: a new config sub-type called random, example: secret_key (random) : 10 and 10 means a length of value
  • added: a new command clear_dnscache for clearing DNS cache
  • added: commands INSTALL('command', 'command_name', function) for registering commands and CMD(name, [a], [b], [c], [d]) for executing commands
  • added: ENCRYPTREQ(req, val, [key], [strict]) to encrypt value according to the request meta data
  • added: DECRYPTREQ(req, val, [key]) to decrypt value according to the request meta data
  • added: controller.nocache()
  • added: controller.nocontent()
  • added: REPO as a global variable
  • added: FUNC as a global variable
  • added: MAIN as a global variable
  • added: DEF as a global variable for defining of behaviour for some operations (alternative to F)
  • added: PREF.set(name, [value]) (read+write) or PREF.propname (only read) for reading/writing a persistent preferences
  • added: F.onPrefSave = function(obj) to write preferences
  • added: F.onPrefLoad = function(next(obj)) to read preferences
  • added: RESTBuilder.url(url) which returns a new instance of RESTBuilder for chaining
  • added: restbuilder.keepalive() enables a keepalive for RESTBuilder instance
  • added: SESSION() management, more in docs
  • added: controller.sessionid with ID of SESSION()
  • added: AUTH() supports a new auth declaration with $ as AuthOptions like SchemaOptions or OperationOptions
  • added: AuthOptions to prototypes
  • added: ErrorBuilder.length property (alias for `instance.items.length)
  • added: Schemas prepare supports req argument
  • added: DEF.currencies.eur = function(val) {} registers a currency formatter
  • added: DEF.helpers registers a new view engine helper (F.helpers is alias for for this object)
  • added: DEF.validators is alias for for F.validators
  • added: usage of currency formatter Number.currency(currency)
  • added: new schema type Number2 with default value is null, not zero 0
  • added: @{json2(model, elementID, key1, key2, key3)} can serialize data with keys defined into the <script type="application/json">
  • added: schemas supports PATCH and .setPatch(), only specified field are processed
  • added: SchemaOptions supports $.keys for PATCH method
  • added: schema.cl(name) ("cl" means codelist) returns {Array} a list of values from defined enum/keyvalue
  • added: schema.props() returns {Object} meta info about all defined properties
  • added: SchemaOptions, OperationOptions and TaskOptions supports $.req and $.res properties
  • added: AUDIT(name, $, [type], message) a method for audit logs
  • added: obsolete message to older declaration of middleware, schemas and operations
  • added: U.diffarr(prop, arr_A, arr_B) for comparing of two arrays
  • added: DIFFARR(prop, arr_A, arr_B) is a global alias for U.diffarr()
  • added: global.REQUIRE() for local modules within app directory
  • added: global.isWORKER variable which contains true (when the process is executed as a worker) or false
  • added: ACTION(url, [data], callback) can evaluate a route without request creation
  • added: ROUTE('🔒 METHOD URL'), it means that 🔒 adds authorized flag
  • added: ROUTE('+METHOD URL'), it means that ++ or + adds authorized flag
  • added: ROUTE('-METHOD URL'), it means that -- or - adds authorized flag
  • added: SchemaOptions, OperationOptions, TaskOptions supports filtered query arguments via $.filter
  • added: controller.done([value])
  • added: SITEMAP() as alias to F.sitemap()
  • added: config key allow_localize enables a localization for all HTML files
  • added: controller.breadcrumb returns all sitemap items
  • added: PAUSESERVER(name, pause) pauses web server (alias for F.wait())
  • added: PROXY(endpoint, hostname, [copypath], [before_fn(uri,req,res)], [after_fn(res)]) makes a direct proxy from webserver
  • added: schema.middleware(function($, next)) for creating simple middlewares for Schema operations
  • added: FILE404(fn(req, res)) performs a simple fallback for non-existing files
  • added: $PATCH(schema, model, [options], callback, [controller]) method
  • added: .env parser to process.env
  • added: String.parseENV() for parsing .env syntax
  • added: $.noop() for custom responses
  • added: $ACTION(schemaroute, [model], callback, [controller]) evaluates schema
  • added: process.send('total:restart') performs a restart of app when the app is in debug mode
  • added: NOSQLREADER(filename) for reading different files of NoSQL embedded databases
  • added: TABLEREADER(filename) for reading different files of Table embedded databases
  • added: Mail.use() an alias for F.useSMTP()
  • added: F.onAudit(name, data) delegate for handling audit logs
  • added: Components support a new features called Parts, more in docs

Updates

  • updated: $.invalid() without arguments can return a function function(err)
  • updated: Mail unsubscribe appends new header which enables unsubscribe in e.g. iOS
  • updated: MODIFY, handler contains a new argument controller
  • updated: headers argument in controller.proxy supports flags: [] for REQEUST method
  • updated: .filefs() and .filenosql() supports download with true or with (name, type) => 'new_name' (filename will be read from NoSQL binary file)
  • updated: $.done(arg) argument @arg can be boolean (response will be as a value) or object/primitive value (arg will be as a value)
  • updated: String.arg(obj, [encode], [def]) added encode (true, json, html) and def arguments
  • updated: AUTH(req, res, flags, next) and next function can handle callback(err, user)
  • updated: REQUEST() supports keepalive flag
  • updated: bundles mechanism supports merging files --filename between bundles files
  • updated: String.hash(true) returns unsigned int
  • updated: CONF:default_image_converter supports magick for new version of ImageMagick
  • updated: CONF.default_image_consumption can contain ZERO value which means disabled optimialization of CPU/memory consumption
  • updated: CONF.default_image_consumption has changed a default value to 0
  • updated: U.parseXML(str, [replace]) and String.parseXML([replace]) contains a new argument called replace
  • updated: LOAD() added a callback function
  • updated: components support encoding="utf8" attribute for <file tag (default: base64)
  • updated: EventEmitter2 supports a new argument obj, example: U.EventEmitter2(obj) or supports .extend method: U.EventEmitter2.extend(proto)
  • updated: UID() generates new types of UID with 100% backward compatibility
  • updated: FILESTORAGE() now it works in cluster mode

Fixes

  • fixed: schemas validation
  • fixed: error handling in dynamic schemas
  • fixed: CSS variables
  • fixed: CSS variables with additional !important clause
  • fixed: controller.proxy() with Gzip/Deflate compression
  • fixed: HTTP status code with 204 in REQUEST()
  • fixed: cookies in WEBSOCKETCLIENT
  • fixed: REQUEST() with json flag and with null and '' value
  • fixed: rendering components in layout
  • fixed: resources, there was a bug with reading of value from default.resource
  • fixed: too many open files in res.image()
  • fixed: too many open files in res.filefs()
  • fixed: Schema Boolean parser
  • fixed: renamed F.stats.request.path to F.stats.request.patch
  • fixed: SMTP sender (a problem with auth mechanism with some mail servers)
  • fixed: filter in F.backup()
  • fixed: paths for stored directories in F.backup()
  • fixed: uploading files
  • fixed: U.getExtension() by @molda

Improvements

  • improved Schemas and error handling
  • improved res.filefs() method for nonexistent files

Others

  • renamed: *.routeScript to *.public_js
  • renamed: *.routeStyle to *.public_css
  • renamed: *.routeFont to *.public_font
  • renamed: *.routeVideo to *.public_video
  • renamed: *.routeImage to *.public_image
  • renamed: *.routeDownload to *.public_download
  • renamed: *.routeStatic to *.public
  • renamed: controller.viewCompile() to controller.view_compile()
  • renamed: event cache-set to cache_set:
  • renamed: event controller-render-meta to controller_render_meta
  • renamed: event request-end to request_end
  • renamed: event websocket-begin to websocket_begin
  • renamed: event websocket-end to websocket_end
  • renamed: event request-begin to request_begin
  • renamed: event upload-begin to upload_begin
  • renamed: event upload-end to upload_end
  • renamed: event cache-expire to cache_expired
  • removed: backward compatibility with older version of Node.js < 10
  • removed: F.hash(), alte...
Read more

v3.2.0

13 Feb 20:54
ff3ec3d
Compare
Choose a tag to compare

News:

  • added: WORKER() alias to F.worker()
  • added: WORKER2() alias to F.worker2()
  • added: F.cluster.https()
  • added: TaskBuilder.done2([send_value]) returns function with wrapped .done()
  • added: TaskBuilder.success2([send_value]) returns function with wrapped .success()
  • added: TaskBuilder.next2(name) returns function with wrapped .next()
  • added: new RESTBuilder aliases .DELETE(), .PUT(), .POST(), .PATCH() and .GET()`
  • added: schema.before(key, (value, model, index) => value) is a simple and new alternative to schema.setPrepare()
  • added: SchemaInstance.$parent returns a parent schema (if the schema is nested schema)
  • added: SchemaOptions.redirect(url) can perform a redirect from the schema
  • added: OperationOptions.redirect(url) can perform a redirect from the operation
  • added: .ics extension as acceptable file for the web server

Updates:

  • updated: F.worker2() returns entire stdout buffer in the callback(err, buffer)
  • updated: $options() by adding disabled key
  • updated: String.ROOT() by adding a support for jComponent AJAX() calls
  • updated: RESTBuilder.method(method, [data]) added data argument
  • updated: String.parseDate([format]) added format argument
  • updated: SMTP settings contain heloid as heloidentifier (manually can be defined HELO or EHLO command)
  • updated: SMTP hostname is computed from email if SMTP is not specified

Fixes:

  • fixed: critical bug with security + improved security
  • fixed: system routing
  • fixed: NoSQL sorting, solved a strange problem
  • fixed: U.request() with GET method by @khaledkhalil94 (it doesn't send JSON data if data is null/undefined)
  • fixed: F.wait() in WebSocket
  • fixed: String.capitalize(true)
  • fixed: REQUEST() uploading of additional multipart/form-data (removed encoding)
  • fixed: view engine conditions defined in <script>
  • fixed: auto-redirects in U.download()
  • fixed: image streams resizing
  • fixed: @{'%config_key'} a problem with rendering a value with '

v3.1.0

07 Dec 10:27
fb18dc3
Compare
Choose a tag to compare

NEWS:

  • added: CSS variables support default values border-radius: $radius || 10px
  • added: NoSQL storage .find(beg, end, [threads]) + .count(beg, end, [threads]) + '.scalar(beg, end, type, field, [threads])' with multiple thread support
  • added: U.reader()
  • added: bundles supports merging files between bundle and project, project file must start with e.g. --name.js
  • added: .bundlesignore support with similiar functionality like .gitignore
  • added: support for SameSite cookie attribute
  • added: RUN() for executing multiple Total.js operations
  • added: a new global alias CONF (it's a reference to config) for F.config
  • added: a new global alias FUNC (it's a reference to functions) for F.functions
  • added: DatabaseBuilder.arg(key, value) for adding an dynamic argument
  • added: NOSQL/TABLE modify supports !field as boolean toggle
  • added: NOSQL/TABLE modify supports a new type $age: 'js_code' with some JS code
  • added: NOSQL/TABLE update supports a new type 'js_code' with some JS code
  • added: a new config item default-restbuilder-timeout : 10000
  • added: a new config item default-cors : https://www.totaljs.com, https://www.componentator.com which allows originators for CORS() method
  • added: a new config item default-request-maxkeys : 33 for restricting query max. keys
  • added: a new config item logger : false which enables logging for Middleware, Schemas and Operations
  • added: a new config item bundling : shallow which enables shallow bundling (if bundle.json exists then the bundles won't be extracted)
  • added: SchemaOptions and OperationOptions supports $.cancel() method
  • added: CACHE(name, [value], [expire], [persistent]) alias for F.cache.get2() and F.cache.set() or F.cache.set2()
  • added: encryption of config values
  • added: F.refresh() for refreshing of internal cache
  • added: DatabaseBuilder.each(fn) for browsing of evaluated records
  • added: Bundles can be downloaded from URL addresses
  • added: ONCE() alias to F.once()
  • added: image.define(value) performs convert -define 'value'
  • added: Total.js JS files (+ packages) tarted with . (dot) or ended with -bk won't be processed
  • added: A new builder called TaskBuilder for creating custom tasks in Schemas or Operations
  • added: WebSocket.send2(message, [comparer(client, message)], [replacer]) a new method for better sending frames
  • addde: PATH as a global alias for F.path

UPDATES:

  • updated: debug mode creates a start_name_script.pid instead of debug.pid
  • updated: NEWOPERATION() supports repeat, stop and binderror arguments (more in docs)
  • updated: routing, now it supports operations in the form ROUTE('.. * --> @save_operation @load_operation (response)')
  • updated: ROUTE() supports multiple HTTP method declaration ROUTE('GET,POST,PUT /something/', action)
  • updated: ROUTE() supports dynamic schemas
  • updated: REQUEST() can return binary data if the content-type is not text/* or application/*
  • updated: NoSQL joins support array values
  • updated: ROUTING(id:|search, [flags]) method
  • updated: F.path.mkdir(path, [cache]) can cache a current satte (default: false)
  • updated: controller.all() can return Array of all WebSocketClient
  • updated: startup info by adding user name
  • updated: LOCALIZE() now url arg can be a function which replaces F.onLocale

FIXES:

  • fixed: a critical bug with storing uploaded files via httpfile.fs() or httpfile.nosql()
  • fixed: a critical bug with JavaScript minificator
  • fixed: a critical bug with NoSQL counter and freezing app
  • fixed: a critical bug with rendering of multiple async components
  • fixed: a critical bug with GZIP compression (sometimes appeared in Safari)
  • fixed: nosql.update() and nosql.modify() methods if the first argument is a function
  • fixed: F.wait() in the test mode
  • fixed: LOCALIZE() for nested directories
  • fixed: sending of error handling when WebSocketClient is starting (for example: unauthorized)
  • fixed: versions and auto feature with enabled F.wait()
  • fixed: versions and auto feature with direct link to file
  • fixed: LOAD('release') a release mode
  • fixed: SchemaInstance.$clean() for nested schemas
  • fixed: extracting bundles (added /flow/ and /dashboard/)
  • fixed: subdomain routing for localhost
  • fixed: service for database cleaner
  • fixed: rendering group of components
  • fixed: RESTBuilder - JSON request without param sends an empty object
  • fixed: $MAKE() with callback
  • fixed: String.slug() for UTF - Chinese/Japan/Arabic/etc. chars
  • fixed: async rendering of components
  • fixed: RESTBuilder cache works only if the response status is 200
  • fixed: compressing CSS with \t tabs
  • fixed: controller.autoclear()
  • fixed: controller.proxy()
  • fixed: repeat mode in SCHEDULE()
  • fixed: --inspect argument for Workers by Tema Smirnov
  • fixed: TLS in SMTP mail sender
  • fixed: applying of versions
  • fixed: unit-tests reads only javascript files
  • fixed: controller.invalid() a problem with ErrorBuilder as a argument

REMOVED:

  • removed: F.config.debug
  • removed: controller.isDebug

IMPROVEMENTS:

  • improved: NoSQL reader
  • improved: UID() -> now it changes a random hash each minute
  • improved: CORS
  • improved: rendering of components