All Versions
17
Latest Version
Avg Release Cycle
60 days
Latest Release
1409 days ago

Changelog History
Page 2

  • v3.1.0 Changes

    December 07, 2018

    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
  • v3.0.0 Changes

    August 01, 2018

    News :

    • ➕ added: (IMPORTANT) bundles
    • ➕ added: (IMPORTANT) Total.js components can have async delegate
    • ➕ added: (IMPORTANT) Total.js components support nested public files encoded in base64
    • ➕ added: (IMPORTANT) NoSQL worker
    • ➕ added: (IMPORTANT) NoSQL embedded storage for smaller big data / IoT
    • ➕ added: debugging supports live reloading
    • ➕ added: new schema operations: schema.setInsert() and schema.setUpdate()
    • ➕ added: RESTBuilder.patch([data])
    • ➕ added: RESTBuilder.type(new-content-type)
    • ➕ added: CONVERT(obj, schema) for quick converting values like Schema (more in docs.)
    • ➕ added: Capitalize2 schema type which converts only the first char
    • ➕ added: MailMessage.high() sets high priority of the email messsage
    • ➕ added: MailMessage.low() sets low priority of the email messsage
    • ➕ added: MailMessage.confidential() sets Sensitivity header with confidential value
    • ➕ added: MailMessage.attachmentnosql(db, id, [name]) sends a file from NoSQL embedded database
    • ➕ added: MailMessage.attachmentfs(storage_name, id, [name]) sends a file from FileStorage
    • ➕ added: SchemaBuilderEntity.$stop() stops the async list
    • ➕ added: SchemaOptions.stop() alias to $.model.$stop()
    • ➕ added: SchemaOptions.next() alias to $.model.$next()
    • ➕ added: SchemaOptions.output() alias to $.model.$output()
    • ➕ added: SchemaOptions.clean() alias to $.model.$clean()
    • ➕ added: SchemaOptions.response() alias to $.model.$response([index])
    • ➕ added: SchemaOptions.$async(callback, [index]) alias to $.model.$async()
    • ➕ added: SchemaOptions.$get([options], [callback]) alias to $.model.$get()
    • ➕ added: SchemaOptions.$insert([options], [callback]) alias to $.model.$insert()
    • ➕ added: SchemaOptions.$query([options], [callback]) alias to $.model.$query()
    • ➕ added: SchemaOptions.$remove([options], [callback]) alias to $.model.$remove()
    • ➕ added: SchemaOptions.$save([options], [callback]) alias to $.model.$save()
    • ➕ added: SchemaOptions.$update([options], [callback]) alias to $.model.$update()
    • ➕ added: SchemaOptions.$workflow(name, [options], [callback]) alias to $.model.$workflow()
    • ➕ added: SchemaOptions.$transform(name, [options], [callback]) alias to $.model.$transform()
    • ➕ added: SchemaOptions.$operation(name, [options], [callback]) alias to $.model.$operation()
    • ➕ added: SchemaOptions.$hook(name, [options], [callback]) alias to $.model.$hook()
    • ➕ added: SchemaOptions.stop() alias to $.model.$stop()
    • ➕ added: a new route flag type &group something like roles but groups aren't evaluated
    • ➕ added: route.groups with defined groups
    • ➕ added: NoSQL database.listing([view]) which generates a listing response
    • ➕ added: DatabaseBuilder.insert(fn(doc)) can modify a document after update or modify has insert mode
    • ➕ added: DatabaseBuilder.query(code) can contain a raw JS condition in the form e.g. doc.age > 18 && doc.age < 33
    • ➕ added: DatabaseBuilder.regexp(name, regexp) RegExp search in strings
    • ➕ added: DatabaseBuilder.fulltext(name, regexp, [weight]) full text search in strings, more info in docs.
    • ➕ added: DatabaseBuilder.hour(name, [compare], value) creates a condition for hours
    • ➕ added: DatabaseBuilder.minute(name, [compare], value) creates a condition for minutes
    • ➕ added: Database.find2() performs faster and reverse reading of documents (from end to begin of the file)
    • ➕ added: Database.stream(fn, [repository], [callback(err, repository, count)]) for streaming documents
    • ➕ added: Database.lock(callback(next)) locks all internal DB operations
    • ➕ added: Database.ready(callback) executes a callback when DB is ready to use (only for special cases if you use indexes)
    • ➕ added: new directory schemas with a new configuration item `directory-schemas'
    • ➕ added: new directory operations with a new configuration item `directory-operations'
    • ➕ added: String.crc32([unsigned])
    • ➕ added: U.hash('crc32') and U.hash('crc32unsigned')
    • ➕ added: config nosql-worker' for enabling worker for NoSQL embedded database (default:false`)
    • ➕ added: config nosql-inmemory' can contain name of databases e.g. (users, products`) or String Array
    • ➕ added: config nosql-cleaner for cleaning databases from removed documents (default: 1440 === 24 hours)
    • ➕ added: config nosql-logger (default true) enables simple logs when re-indexing and cleaning
    • ➕ added: config security.txt for auto-generating security.txt content (more in docs)
    • ➕ added: config default-proxy for default web proxy server
    • ➕ added: config allow-cache-cluster (default true) allow/disallow cache synchronization
    • ➕ added: GUID() a global alias for U.GUID()
    • ➕ added: VIEW() a global alias for F.view()
    • ➕ added: SchemaBuilderEntity.$response([index]) returns a specific response from an operation in async queue
    • ➕ added: $SAVE(schema, model, [options], [callback], [controller]) performs schema.save()
    • ➕ added: $INSERT(schema, model, [options], [callback], [controller]) performs schema.insert()
    • ➕ added: $UPDATE(schema, model, [options], [callback], [controller]) performs schema.update()
    • ➕ added: $REMOVE(schema, [options], [callback], [controller]) performs schema.remove()
    • ➕ added: U.streamer2() same functionality as U.streamer() but it returns Buffer instead of String
    • ➕ added: Number.round([precision])
    • ➕ added: UID([type]) supports custom types, e.g. UID('users') or UID('orders')
    • ➕ added: REQUEST() global method, it's alias to U.request()
    • ➕ added: NOW global property, it's alias to F.datetime
    • ➕ added: DatabaseBuilder.promise()
    • ➕ added: RESTBuilder.promise()
    • ➕ added: RESTBuilder.plain() it returns a raw string from the response body
    • ➕ added: versions file supports auto value for generating auto-checksum of files
    • ➕ added: F.load() supports test
    • ➕ added: NoSQL binary supports custom small data attributes
    • ➕ added: CSS and JS supports a simple View Engine markup (config + resources + F.global)
    • ➕ added: controller.split alias to controller.req.split
    • ➕ added: nicer error response messages
    • ➕ added: RESTBuilder.proxy(proxy) for HTTP proxy
    • ➕ added: U.request() supports a new flag proxy, for example proxy 127.0.0.1:8080
    • ➕ added: NoSQL database a new event change, more in docs
    • 0️⃣ added: schema.define()(DEFAULT_VALUE) added DEFAULT_VALUE
    • ➕ added: TESTUSER([user]) for faking of F.onAuthorize delegate, targeted for unit-testing only
    • ➕ added: G as a global alias for F.global
    • ➕ added: ERROR([name]) is an improved F.error() without arguments
    • ➕ added: a simple support for .heic and .heif image format
    • ➕ added: controller.sitemap_url2()
    • ➕ added: controller.sitemap_name2()
    • ➕ added: @{sitemap_url2()}
    • ➕ added: @{sitemap_name2()}
    • ➕ added: F.syshash contains a simple MD5 hash with OS info
    • ➕ added: SchemaEntity.clear() for removing all current definition
    • ➕ added: new view engine markup @{#} for simulating of root URL
    • ➕ added: new view engine command @{root} for getting sub-root path
    • ➕ added: String.ROOT() for replacing @{#} markup in strings
    • ➕ added: U.decryptUID(value, key) for encrypting number/string values
    • ➕ added: U.encryptUID(value, key) for decrypting of number/string values
    • ➕ added: F.config['secret-uid'] as a hidden secret for encrypting/decrypting values
    • ➕ added: F.dir(path) for changing of root directory
    • ➕ added: NOSQL()/TABLE().memory(count, [size]) for memory consumption, more in docs
    • ➕ added: HttpFile.fs(storage_name, [custom], [callback]) saves a file into the FileStorage
    • ➕ added: HttpFile.nosql(db_name, [custom], [callback]) saves a file into the FileStorage
    • ➕ added: res.filefs(storage_name, id, [download], [headers], [callback]) returns file from FileStorage
    • ➕ added: res.filenosql(db_name, id, [download], [headers], [callback]) returns file from NoSQL binary
    • added: res.imagefs(storage_name, id, image_make_fn, [headers], [callback]) returns file from FileStorage
    • added: res.imagenosql(db_name, id, image_make_fn, [headers], [callback]) returns file from NoSQL binary
    • ➕ added: new stats F.stats.performance contains count of request and file per minute
    • ➕ added: new method controller.operation(name, value, [callback], [options]) for evaluating of operation

    ⚡️ Updates :

    • ⚡️ updated: (IMPORTANT) NoSQL binary divides files to independent directories for 1000 files per directory
    • ⚡️ updated: GROUP() by adding a new argument url_prefix
    • ⚡️ updated: NEWSCHEMA() supports NEWSCHEMA('group/name')
    • ⚡️ updated: ROUTE(), extended syntax for schemas, for example: Schema --> @name (more in docs.)
    • ⚡️ updated: ROUTE() supports a new HTTP method definition ROUTE('GET /api/users/'), ROUTE('POST /api/users/'), etc.
    • ⚡️ updated: ROUTE() supports a schema definition directly in the URL ROUTE('GET /api/users/ *User --> @save'), etc.
    • ⚡️ updated: tpm supports a new command called bundle, for example: tpm bundle cms
    • ⚡️ updated: F.restore() filter can return a new filename (for files only)
    • ⚡️ updated: @{import('livereload')} or @{import('livereload wss://mywebsite.com')} supports livereload value and it's rendered in debug mode only
    • ⚡️ updated: information after the framework is started
    • ⚡️ updated: schema.define('name', null) removes a schema field
    • ⚡️ updated: Chunker supports compression, default true
    • ⚡️ updated: Chunker supports autoremove processed files in each() or read() method, default true
    • ⚡️ updated: String.parseConfig(def, [onError]) can handle errors better
    • ⚡️ updated: middleware, now Total.js supports new declaration F.middleware(function($) {})
    • ⚡️ updated: F.wait() HTML template
    • ⚡️ updated: JavaScript compressor, now optimizes multiple var declarations
    • ⚡️ updated: CORS() without arguments for all routes, methods and origins
    • ⚡️ updated: CORS() tries to join multiple same preferences to one
    • ⚡️ updated: CORS(path) without additional arguments allows all HTTP methods
    • ⚡️ updated: U.keywords() for Chinese/Japan characters
    • ⚡️ updated: @{import()} by adding manifest value linked to /manifest.json
    • ⚡️ updated: F.use() supports function instead of middleware name
    • ⚡️ updated: improved crypto algorithm
    • ⚡️ updated: decreased a maximum count of keys to 33 from 69 when the query string is parsing
    • ⚡️ updated: extended schema.required(name, (model, workflow) => workflow.update), more in docs.
    • ⚡️ updated: $MAKE(schema, model, [filter/workflows], ...) supports workflows (array or object) instead of filter for schema.required()
    • ⚡️ updated: OPERATION() by adding controller

    🛠 Fixes :

    • 🛠 fixed: mail attachments
    • 🛠 fixed: mail message.manually()
    • 🛠 fixed: WebSocket comparing of origin header
    • 🛠 fixed: uninstalling CORS routes
    • 🛠 fixed: cache for favicon
    • 🛠 fixed: Date.extend()
    • 🛠 fixed: String.isJSON() validator
    • 🛠 fixed: String.parseDate() now it parses date to UTC correctly
    • 🛠 fixed: Date.format() now it formats a date as UTC correctly
    • 🛠 fixed: HTML compressor with \r\n (Windows line endings)
    • 🛠 fixed: schema validation
    • 🛠 fixed: U.atob()
    • 🛠 fixed: U.btoa()
    • 🛠 fixed: schema field can be changed dynamically
    • 🛠 fixed: String.arg()
    • 🛠 fixed: controller.href() with Array values
    • 🛠 fixed: U.get() a problem with path with -
    • 🛠 fixed: U.set() a problem with path with -
    • 🛠 fixed: F.path.mkdir() in Windows and Linux

    🔄 Changes :

    • replaced: config disable-clear-temporary-directory to allow-clear-temp : true|false
    • replaced: config disable-strict-server-certificate-validation to allow-ssc-validation : true|false
    • 0️⃣ replaced: config default-websocket-request-length to default-websocket-maxlength
    • 0️⃣ replaced: config default-request-length to default-request-maxlength
    • 0️⃣ replaced: config default-maximum-file-descriptors to default-maxopenfiles
    • replaced: controller.proxy() functionality (the name remains) via controller.proxy2() functionality

    Removed :

    • ✂ removed: F.responseFile()
    • ✂ removed: F.responsePipe()
    • ✂ removed: F.responseImage()
    • ✂ removed: F.responseImageWithoutCache()
    • ✂ removed: F.responseStream()
    • ✂ removed: F.responseBinary()
    • ✂ removed: F.responseContent()
    • ✂ removed: F.responseRedirect()
    • ✂ removed: F.response400()
    • ✂ removed: F.response401()
    • ✂ removed: F.response404()
    • ✂ removed: F.response408()
    • ✂ removed: F.response431()
    • ✂ removed: F.response500()
    • ✂ removed: F.response501()
    • ✂ removed: F.responseStatic()
    • ✂ removed: F.setModified()
    • ✂ removed: F.notModified()
    • ✂ removed: F.responseCode()
    • ✂ removed: F.noCache()
    • ✂ removed: controller.$modified()
    • ✂ removed: controller.$etag()

    👌 Improvements :

    • 👌 improved: debug mode timing with improved consumption
    • 👌 improved: performance (+20%) NoSQL embedded database
    • 👌 improved: reading performance (+5%) in U.streamer()
    • 👌 improved: CSS compressor
    • 👌 improved: CORS processing
    • 👌 improved: internal encryption/decryption mechanism
  • v2.9.4 Changes

    February 24, 2018

    Fixes :

    • 🛠 fixed: mail attachments
    • 🛠 fixed: comparing origin header in WebSocket
    • 🛠 fixed: unit-testing
  • v2.9.3 Changes

    February 05, 2018

    News :

    • ➕ added: String.arg(obj) for a simple templating Hello {variable}!
    • ➕ added: new event ON('@controllername', function() {}) -> is executed if the controller is evaluated

    ⚡️ Updates :

    • ⚡️ updated: RESTBuilder default headers are lower-case
    • ⚡️ updated: content-disposition header by adding utf-8 according to RFC 5987

    🛠 Fixes :

    • 🛠 fixed: a missing property controller.params in WebSocket controller
    • 🛠 fixed: $ASYNC() execution in some cases
    • 🛠 fixed: SCRIPT() code with comments
    • 🛠 fixed: a callback reference in OPERATION()
    • 🛠 fixed: cache after route is removed
    • 🛠 fixed: 409 system route
    • 🛠 fixed: requests with range header and bad values
    • 🛠 fixed: clearSchedule()
    • 🛠 fixed: Date.extend() problem with months
    • 🛠 fixed: NoSQL counter reading stats
  • v2.9.2 Changes

    January 18, 2018

    News :

    • ➕ added: controller.html(body, [headers])
    • ➕ added: F.cluster.master(name, [data]) - for child processes, this method emits an event in master process
    • ➕ added: F.cluster.on(name, callback(data)) - master event listener
    • ➕ added: LOGMAIL() global alias for F.logmail()
    • ➕ added: MAIL() global alias for F.mail()
    • ➕ added: own implementation of onFinished
    • ➕ added: RESTBuilder.cookies(obj) can set cookies as raw object
    • ➕ added: RESTBuilder.cook([true/false]) enables persistent cookies
    • ➕ added: SchemaOptions.params which returns dynamic params from the controller's action
    • ➕ added: SchemaOptions.done([arg]) as a callback (contains wrapped SUCCESS())
    • ➕ added: SchemaOptions.DB() which returns DB(this.error) instance (for SQL Agent)
    • ➕ added: OperationOptions.done([arg]) as a callback (contains wrapped SUCCESS())
    • ➕ added: OperationOptions.DB() which returns DB(this.error) instance (for SQL Agent)
    • ➕ added: static method Image.measure(type, buffer) for measuring width/height of image
    • ➕ added: EACHOPERATION(function(name) {}) for obtaining all registered operations
    • ➕ added: controller.params which returns dynamic params from the action

    ⚡️ Updates :

    • 🚀 updated: F.load(), now supports string for debug or release mode
    • ⚡️ updated: F.cluster.request() can be executed from master process
    • ⚡️ updated: Image.miniature() change a default filter from Box to Hamming
    • ⚡️ updated: U.request() supports a new flag cookies which enables a parsing cookies from response

    🛠 Fixes :

    • 🛠 fixed: schema validation (problem with Arrays)
    • 🛠 fixed: determines x-forwarded-proto
    • 🛠 fixed: nested schema validation
    • 🛠 fixed: themes static routing
    • 🛠 fixed: NoSQL reader
    • 🛠 fixed: NoSQL counter (sorting while reading stats)
    • 🛠 fixed: loading dependencies
    • 🛠 fixed: uninstalling middleware
    • 🛠 fixed: reading/updating sitemap in controller

    Removal :

    • ✂ removed: max. sort string length
    • ✂ removed: auto appending .css and .js extension in view engine
    • ✂ removed: experimental defer feature

    👌 Improvements :

    • 👌 improved: GZIP compression
    • 👌 improved: code
  • v2.9.1 Changes

    November 26, 2017

    News :

    • ➕ added: controller.throw409(), req.throw409()
    • ➕ added: new view aliases: @{R.something} for repository, @{M.something} for model and @{G.something} for global

    ⚡️ Updates :

    • updated: ErrorBuilder.push() supports .push(name, status_code) or .push(name, error, status_code)

    🛠 Fixes :

    • 🛠 fixed: sitemap language auto-setting
    • 🛠 fixed: NoSQL: builder.paginate() a problem with zero limit (default limit will be maxlimit)
    • 🛠 fixed: NoSQL number filtering
    • 🛠 fixed: localization of ErrorBuilder in controllers
  • v2.9.0 Changes

    November 16, 2017

    News :

    • ➕ added: WebSocketClient
    • ➕ added: $ASYNC(schema, callback, [index], [controlller]) alias to SchemaBuilderEntity.$async()
    • ➕ added: ArrayBuffer.prototype.toBuffer()
    • ➕ added: AUTH(fn) is an alias to F.onAuthorize = fn
    • ➕ added: controller.success() alias to controller.json(SUCCESS(value))
    • ➕ added: CORS() alias to F.cors()
    • ➕ added: DatabaseBuilder.paginate(page, limit)
    • ➕ added: F.config['allow-compile'] can disable the whole compilation of static files
    • ➕ added: F.config['default-dependency-timeout'] it's a timeout for module dependencies
    • ➕ added: F.path.rmdir(directory/directories, callback)
    • ➕ added: F.path.unlink(file/files, callback)
    • ➕ added: LOCALIZE() a new global alias to F.localize()
    • ➕ added: MAP() a new global alias to F.map()
    • ➕ added: MERGE() a new global alias to F.merge()
    • ➕ added: MIDDLEWARE() a new global alias to F.middleware()
    • ➕ added: NOSQL('users').backups([filter(doc)], callback(err, response)) returns all backups
    • ➕ added: SchemaOptions.invalid(name, [value], [path], [index]) alias to $.errors.push() + callback()
    • ➕ added: SchemaOptions.success() alias to callback(SUCCESS(value))
    • ➕ added: controller.sitemapid contains a sitemap identificator
    • ➕ added: controller.sitemap_add(parent, name, url) appends a new item into the sitemap per request
    • ➕ added: @{sitemap_add(parent, name, url)} appends a new item into the sitemap per request
    • ➕ added: SchemaEntity.required('fieldname', boolean/function(model)) which can disable/enable validation for this field

    ⚡️ Updates :

    • ⚡️ updated: sitemap routing can contain an additional path, e.g. #sitemapid/path/
    • ⚡️ updated: F.localize() supports sitemap routing
    • ⚡️ updated: F.merge() supports sitemap routing
    • ⚡️ updated: F.map() supports sitemap routing
    • ⚡️ updated: F.http(mode, [options], [middleware(listen)]) added a new argument middleware
    • ⚡️ updated: debug.js now reads directories according to the config (author: @luoage)
    • ⚡️ updated: config parser supports config sub-type
    • ⚡️ updated: controller.$exec() --> callback is by default controller.callback()
    • ⚡️ updated: F.localize() has enabled compression by default
    • ⚡️ updated: HTTP server is listening after the framework is completely loaded
    • ⚡️ updated: (IMPORTANT) HTTP cache in dynamic content and static files
    • ⚡️ updated: F.prototypes() by adding OperationOptions
    • ⚡️ updated: ErrorHandling in schemas (supports inline validation and advanced conditions)
    • ⚡️ updated: F.noCache() is obsolete
    • 📇 renamed: allow-handle-static-files to allow-static-files

    🛠 Fixes :

    • 🛠 fixed: (IMPORTANT) DatabaseBuilder.in()
    • 🛠 fixed: (IMPORTANT) U.ls2()
    • 🛠 fixed: (IMPORTANT) WebSocket implementation (author: @JozefGula)
    • 🛠 fixed: ArrayBuffer in webosocket
    • 🛠 fixed: F.path.mkdir() on Windows (author: @molda)
    • 🛠 fixed: F.restore() on Windows (author: @molda)
    • 🛠 fixed: F.rmdir removes all files and directories
    • 🛠 fixed: JSON type in Total.js schemas
    • 🛠 fixed: MODEL(), MODULE(), INCLUDE() now are direct aliases
    • 🛠 fixed: a check for maximum length of request data
    • 🛠 fixed: Date formatting with a value
    • 🛠 fixed: empty localization in view engine e.g. @()
    • 🛠 fixed: external static routing in view engine on Windows
    • 🛠 fixed: NoSQL filtering with or
    • 🛠 fixed: NoSQL multiple updates
    • 🛠 fixed: NoSQL sorting of boolean values in larger dataset
    • 🛠 fixed: responding on range header
    • 🛠 fixed: unit testing (author: @ckpiggy)
    • 🛠 fixed: schema.setPrefix() in nested schemas
    • 🛠 fixed: sitemap localization
    • 🛠 fixed: CORS custom headers
    • 🛠 fixed: NoSQL date filtering

    👌 Improvements :

    • 👌 improved: performance and security