All Versions
17
Latest Version
Avg Release Cycle
60 days
Latest Release
687 days ago
Changelog History
Page 1
Changelog History
Page 1
-
v3.4.5 Changes
July 10, 2020Fixes :
- 🛠 fixed: a problem with persistent images
-
v3.4.4 Changes
July 07, 2020News :
- ➕ added: schema options
$.successful(function(response) {})
- ➕ added:
options.reconnectserver {Boolean}
toWEBSOCKETCLIENT
- ➕ 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 toU.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
inCLONE()
method - 🛠 fixed:
schema.inherit()
by addingschema.middleware()
andschema.verify()
- 🛠 fixed: parsing messages in WebSocket
- 🛠 fixed: a problem in some commands pre-render in the view compiler
- 🛠 fixed: parsing of query strings
- ➕ added: schema options
-
v3.4.3 Changes
May 11, 2020News :
- ➕ added:
HASH(value, [type])
for creating hash like in jComponent - ➕ added:
SchemaOptions.repo
as alias toSchemaInstance.model.$$repository
- ➕ added: a new type
CONVERT syntax
toschema.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 forF.exists()
- ➕ added: own QueryParser
- ➕ added:
RESTBuilderInstance.convert('name:String,age:Number')
method - ➕ added:
RESTBuilder.upgrade(fn(restbuilder))
for upgrading ofRESTBuilder
- ➕ added:
RESTBuilder
parses Total.js Errors in responses as Error - ➕ added:
String.prototype.env()
replaces all values in the form[key]
forCONF.key
- ➕ added: WebSocket supports a new type - raw
buffer
- ➕ added:
Number.fixed(decimals)
⚡️ Updates :
- ⚡️ updated:
websocket.send2(message, comparer, replacer, [params])
by addingparams
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 addingnoarchive
argument - ⚡️ updated:
TEST()
method supports[subdomain]
keyword andMETHOD url
in URL address - ⚡️ updated:
MODIFY([filename], fn)
by addingfilename
argument - ⚡️ updated: background of schedulers by @fgnm
- ⚡️ updated:
U.download()
by addingparam
argument - ⚡️ updated:
U.request()
by addingparam
argument - ⚡️ updated:
schema.cl(name, [value])
method by addingvalue
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 spacesGET /*
- 🛠 fixed:
ACTION()
with json output - 🛠 fixed: controller in
$ACTION()
with usedget
andquery
actions - 🛠 fixed:
PATCH
method in$ACTION()
- 🛠 fixed:
schema.allow()
inPATCH
method - 🛠 fixed: image resizing in debug-mode
- ➕ added:
-
v3.4.2
May 11, 2020 -
v3.4.1 Changes
March 11, 2020News :
- ➕ 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
toFLOWSTREAM()
⚡️ Updates :
- ⚡️ updated:
HttpFile.fs()
by addingid
argument for updating of existing file - updated: default value for
allow_ssc_validation
totrue
🛠 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)
- ➕ added:
-
v3.4.0 Changes
February 11, 2020News :
- ➕ 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 theconfig
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 inFLOWSTREAM
- ➕ added:
DatabaseBuilder.autofill()
from DBMS - ➕ added:
HttpFile.extension
property - ➕ added:
HttpFile.size
property alias toHttpFile.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
andPATH.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()
andAUTH()
- ➕ 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 forU.encryptUID()
- ➕ added:
String.decryptUID()
as alias forU.decryptUID()
⚡️ Updates :
- ⚡️ updated:
WEBSOCKET()
supports+
,-
and🔒
as authorization flags - ⚡️ updated:
LOAD()
supportsservice
type - updated: cluster watches
restart
orrestart_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 addingcheckmeta
argument - updated:
$.done([user_instance])
method inAUTH()
, added a new argument calleduser_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 Schemaworkflows
,transformations
andoperations
- 🛠 fixed:
NOSQL()
joins with absolute paths - 🛠 fixed:
TABLE()
joins with absolute paths - 🛠 fixed:
(random)
subtype inconfig
files - 🛠 fixed:
(response)
phrase inROUTE()
for multipleOPERATIONS
- 🛠 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 forthemes
- 🛠 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 copyrequired
fields. - 🛠 fixed:
SUCCESS()
serialization withSUCCESS()
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()
andcontroller.done()
- ➕ added:
-
v3.3.2 Changes
November 12, 2019Fixes :
- 🛠 fixed: default time zone (
utc
is default time zone)
- 🛠 fixed: default time zone (
-
v3.3.1 Changes
November 07, 2019News :
- ➕ 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
- ➕ added:
-
v3.3.0 Changes
September 30, 2019🆕 News
- ➕ added:
NEWTASK(name, declaration)
for creating preddefinedTaskBuilder
- ➕ added:
TASK(name, taskname, callback, [controller/SchemaOptions/OperationOptions/ErrorBuilder])
for executing preddefinedTaskBuilder
- ➕ added: a new config key
directory_tasks
forTaskBuilder
- ➕ added: a global alias
MODIFY()
forF.modify()
- ➕ added: a global alias
VIEWCOMPILE()
forF.view_compile()
- ➕ added:
mail.type = 'html'
can behtml
(default) orplain
- ➕ added:
$.headers
into theSchemaOptions
,OperationOptions
andTaskBuilder
- ➕ added:
String.parseCSV([delimiter])
returnsObject 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 fromsecret
) or it can contain a customhex
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
and10
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 andCMD(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 toF
) - ➕ added:
PREF.set(name, [value])
(read+write) orPREF.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 ofRESTBuilder
for chaining - ➕ added:
restbuilder.keepalive()
enables a keepalive forRESTBuilder
instance - ➕ added:
SESSION()
management, more in docs - ➕ added:
controller.sessionid
with ID ofSESSION()
- ➕ added:
AUTH()
supports a new auth declaration with$
asAuthOptions
likeSchemaOptions
orOperationOptions
- ➕ added:
AuthOptions
to prototypes - ➕ added:
ErrorBuilder.length
property (alias for `instance.items.length) - ➕ added: Schemas
prepare
supportsreq
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 forF.validators
- ➕ added: usage of currency formatter
Number.currency(currency)
- ➕ added: new schema type
Number2
with default value isnull
, not zero0
- ➕ 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
forPATCH
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
andTaskOptions
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 forU.diffarr()
- ➕ added:
global.REQUIRE()
for local modules within app directory - ➕ added:
global.isWORKER
variable which containstrue
(when the process is executed as a worker) orfalse
- ➕ added:
ACTION(url, [data], callback)
can evaluate a route without request creation - ➕ added:
ROUTE('🔒 METHOD URL')
, it means that 🔒 addsauthorized
flag - ➕ added:
ROUTE('+METHOD URL')
, it means that++
or+
addsauthorized
flag - ➕ added:
ROUTE('-METHOD URL')
, it means that--
or-
addsauthorized
flag - ➕ added:
SchemaOptions
,OperationOptions
,TaskOptions
supports filtered query arguments via$.filter
- ➕ added:
controller.done([value])
- ➕ added:
SITEMAP()
as alias toF.sitemap()
- ➕ added: config key
allow_localize
enables a localization for allHTML
files - ➕ added:
controller.breadcrumb
returns all sitemap items - ➕ added:
PAUSESERVER(name, pause)
pauses web server (alias forF.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 toprocess.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 forF.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 functionfunction(err)
- ⚡️ updated: Mail
unsubscribe
appends new header which enablesunsubscribe
in e.g. iOS - ⚡️ updated:
MODIFY
, handler contains a new argumentcontroller
- ⚡️ updated:
headers
argument incontroller.proxy
supportsflags: []
for REQEUST method - ⚡️ updated:
.filefs()
and.filenosql()
supportsdownload
withtrue
or with(name, type) => 'new_name'
(filename
will be read from NoSQL binary file) - ⚡️ updated:
$.done(arg)
argument@arg
can beboolean
(response will be as a value) or object/primitive value (arg
will be as a value) - ⚡️ updated:
String.arg(obj, [encode], [def])
addedencode
(true
,json
,html
) anddef
arguments - ⚡️ updated:
AUTH(req, res, flags, next)
andnext
function can handlecallback(err, user)
- ⚡️ updated:
REQUEST()
supportskeepalive
flag - ⚡️ updated:
bundles
mechanism supports merging files--filename
betweenbundles
files - ⚡️ updated:
String.hash(true)
returns unsigned int - updated:
CONF:default_image_converter
supportsmagick
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 to0
- ⚡️ updated:
U.parseXML(str, [replace])
andString.parseXML([replace])
contains a new argument calledreplace
- ⚡️ updated:
LOAD()
added a callback function - ⚡️ updated: components support
encoding="utf8"
attribute for<file
tag (default:base64
) - ⚡️ updated:
EventEmitter2
supports a new argumentobj
, example:U.EventEmitter2(obj)
or supports.extend
method:U.EventEmitter2.extend(proto)
- ⚡️ updated:
UID()
generates new types ofUID
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
inREQUEST()
- 🛠 fixed:
cookies
inWEBSOCKETCLIENT
- 🛠 fixed:
REQUEST()
withjson
flag and withnull
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
toF.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()
tocontroller.view_compile()
- 📇 renamed: event
cache-set
tocache_set
: - renamed: event
controller-render-meta
tocontroller_render_meta
- 📇 renamed: event
request-end
torequest_end
- 📇 renamed: event
websocket-begin
towebsocket_begin
- 📇 renamed: event
websocket-end
towebsocket_end
- 📇 renamed: event
request-begin
torequest_begin
- 📇 renamed: event
upload-begin
toupload_begin
- 📇 renamed: event
upload-end
toupload_end
- 📇 renamed: event
cache-expire
tocache_expired
- ✂ removed: backward compatibility with older version of Node.js < 10
- ✂ removed:
F.hash()
, alternativeString.prototype.hash()
- ✂ removed:
controller.hash()
, alternativeString.prototype.hash()
- ➕ added:
-
v3.2.0 Changes
February 13, 2019News :
- ➕ added:
WORKER()
alias toF.worker()
- ➕ added:
WORKER2()
alias toF.worker2()
- ➕ added:
F.cluster.https()
- ➕ added:
TaskBuilder.done2([send_value])
returnsfunction
with wrapped.done()
- ➕ added:
TaskBuilder.success2([send_value])
returnsfunction
with wrapped.success()
- ➕ added:
TaskBuilder.next2(name)
returnsfunction
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 toschema.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 entirestdout
buffer in thecallback(err, buffer)
- ⚡️ updated:
$options()
by addingdisabled
key - ⚡️ updated:
String.ROOT()
by adding a support for jComponentAJAX()
calls - ⚡️ updated:
RESTBuilder.method(method, [data])
addeddata
argument - ⚡️ updated:
String.parseDate([format])
addedformat
argument - ⚡️ updated: SMTP settings contain
heloid
asheloidentifier
(manually can be definedHELO
orEHLO
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()
withGET
method by @khaledkhalil94 (it doesn't send JSON data ifdata
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'
- ➕ added: