======= 1.3.1 (HOTFIX)

- updated: angular.js version (v1.2.15)

- fixed: partial views rendering in the layout
- fixed: internally utils

======= 1.3.0

- added: supports CoffeeScript
- added: framework.isWindows (readonly, boolean)
- added: framework.isCoffee (readonly, boolean)
- added: framework.config['directory-source'], great for business logic
- added: framework.injectSource(name)
- added: framework.source(name), call a business logic
- added: new global methods include() and source() are linked into the config['directory-source']
- added: config['default-websocket-encodedecode'] - encodeURIComponent && decodeURIComponent (IMPORTANT: default: false)
- added: Builders.ErrorBuilder.resource(filename, prefix) - can change resource filename or prefix
- added: new global variables - Builders, Mail, Utils
- added: Builders.validate(schemaName, model) - returns ErrorBuilder from everywhere (uses framework.resource)
- added: allowed controllers in subdirectories
- added: utils.assign(obj, path, value/function) - read more in documentation

- updated: Builders.schema(name, obj, [defaults], [validator]) - validator is new
- updated: Builders.validation(name, [arr] or [function])
- updated: controller.find(id or function)
- updated: utils.copy(source, [target]);
- updated: WebSocket.close([id], [message], [code]);
- updated: WebSocketClient.close([message], [code]);

- fixed: Controller properties on the WebSocket connections
- fixed: binary
- fixed: utils.validation()
- fixed: multipart upload (problem with multiple values)
- fixed: layout in partial views (from the controller)
- fixed: Windows path

IMPORTANT:
rewritten: WebSocket + WebSocket supports: text, JSON, binary, ping + pong

- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/angularjs-bootstrap
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/bootstrap
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/framework-schema-validation
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/webrtc (unfinished but for an idea)
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/framework-business-logic-source
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/framework-inject-business-logic-source

======= 1.2.3-1 (HOTFIX)

IMPORTANT:
- fixed: [authorize] flag
- updated: utils.copy(source, target), previous: utils.copy(target, source);

======= 1.2.3

- added: view @{helper('name', [arg1], [arg2], ...)}
- added: controller.helper(name, [arg1], [arg2], ...)
- added: controller.change(message)
- added: new markup /*auto*/ for auto-vendor-prefixes
- added: [authorize] flag
- added: @{ng(name)}
- added: @{ngTemplate(name, [id])}
- added: @{ngController(name)}
- added: @{ngFilter(name)}
- added: @{ngService(name)}
- added: @{ngDirective(name)}
- added: @{ngResource(name)}
- added: @{ngCommon(name)}
- added: @{ngInclude(name)}
- added: @{ngStyle(name)}
- added: @{ngLocale(name)}
- added: @{helper(helperName, [param1], [param2], ...)}
- added: config['directory-angular']
- added: config['angular-version']
- added: config['angular-i18n-version']
- added: binary: total -angular [or] total -a
- added: framework.change(message, [name], [uri], [ip]);
- added: framework.changes;
- added: framework.on('change', message, [name], [uri], [ip]);

IMPORTANT:
- added: routing with asterix, example: framework.route('/subpage/*', ...);

IMPORTANT:
- updated: [logged] flag is obsolete, new flag: authorize
- updated: [unlogged] flag is obsolete (without flag)

- fixed: helpers
- fixed: static files caching in debug mode

- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/angularjs
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/angularjs-websocket
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/angularjs-common
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/angularjs-mongodb-rest-resources
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/angularjs-routing
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/changes
- EXAMPLE (UPD): https://github.com/totaljs/examples/tree/master/routing
- EXAMPLE (UPD): https://github.com/totaljs/examples/tree/master/problems

======= 1.2.1-1 (NPM problem)
======= 1.2.1   (NPM problem)
======= 1.2.0

- new: NEW TEMPLATE ENGINE 2.0

- added: route to website, route to file and route to websocket is possible everywhere
- added: node harmony functions (see example)
- added: gc() into framework.on('service')
- added: config['allow-performance'] true/false (default, false)
- added: config['default-image-converter'] (default "gm" - GraphicsMagick, another possibility: "im" - ImageMagick)
- added: new views/templates/contents cache
- added: framework.problem(message, [name], [uri], [ip]);
- added: framework.on('problem', message, [name], [uri], [ip])
- added: framework.problems;
- added: req.language;
- added: controller.title()
- added: controller.description()
- added: controller.keywords()
- added: controller.problem(message)
- added: controller.memorize(key, expire, fnTo, [fnFrom]) - cache for controller.view(), controller.json(), controller.plain()
- added: Array.prototype.trim()
- added: Array.prototype.wait()
- added: Array.prototype.async()
- added: String.prototype.hash([type])
- added: Pagination.next([format]), Pagination.prev([format])
- added: utils.isRegExp(obj)

- updated: license
- updated: parsing of configuration: # and // is a comment
- updated: auto-vendor-prefixes (updated linear-gradient prioraty according to w3schools.com)
- updated: websocket.send(message, [id], [blacklist]), id and blacklist can be a function
- updated: controller.view400([problem])
- updated: controller.view403([problem])
- updated: controller.view404([problem])
- updated: controller.view501([problem])
- updated: controller.plain(contentBody, [headers]) - added JSON serialized for objects
- updated: controller.json(obj, [header], [beaufity]);
- updated: framework.usage([detailed]) - returns OBJECT
- updated: FrameworkCache.removeAll(search or regexp-pattern)
- updated: @{sitemap} is currently: @{sitemap()}
- updated: PageBuilder
- updated: @{template()} and controller.template() - default repository is controller repository

- removed: border-radius and box-shadow from auto-vendor-prefixes

- obsolete: Array.prototype.waiting()

- fixed: controller.view500()
- fixed: controller.proxy(), utils.request(), utils.download() - problem with NGINX, missing Content-Length header
- fixed: WebSocket skips throwing error (socket close, EPIPE)
- fixed: mail (SPAM fixes)
- fixed: buffer.write (new node => 0.11.11)
- fixed: IP and heroku deploy

- rewritten: view engine
- rewritten: template engine (according to view engine)

- improvements: views
- improvements: templates
- improvements: partial routing

IMPORTANT: framework.usage() returns OBJECT
IMPORTANT: markup of template is OBSOLETE. Templates support only view markup.

- EXAMPLE (NEW): https://github.com/totaljs/demo
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/heroku
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/controller-memorize
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/generators
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/routing-inline
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/problems
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/mongoose
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/pagination
- EXAMPLE (UPD): https://github.com/totaljs/examples/tree/master/templates

======= 1.1.0

- added: new feature COMPONENTS
- added: new feature MODELS
- added: framework.id
- added: framework.isDebug
- added: framework.isTest
- added: framework.model(name)
- added: framework.controller(name, definition)
- added: framework.functions
- added: framework.assert(name, callback)
- added: framework.assert(name, url, callback, method, data, headers, xhr)
- added: framework.injectComponent(name, url)
- added: framework.injectModel(name, url)
- added: framework.path.components([filename])
- added: framework.path.models([filename])
- added: controller.model(name)
- added: controller.$model - (property contains current model)
- added: flag: OPTIONS

- updated: framework.usage([detailed])
- updated: BINARY
- updated: WebSocket skips throwing error (ECONNRESET)

- fixed: framework.controller(name)
- fixed: // char in views and templates
- fixed: assertion testing
- fixed: mail attachment (fixed: line too long)
- fixed: "@charset" keyword in CSS
- fixed: cache-control header
- fixed: HTML conditional comments in views
- fixed: controller.cors(), fixed problem with preflight
- fixed: controller.empty() -> added 204 http status code

improvements: views (in release mode)

- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/components
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/models
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/minimal
- EXAMPLE (NEW): https://github.com/totaljs/examples/tree/master/framework-functions
- EXAMPLE (UPD): https://github.com/totaljs/examples/tree/master/cors
- EXAMPLE (UPD): https://github.com/totaljs/examples/tree/master/cluster

======= 1.0.2 (HOTFIX)

- fixed: mail message (problem with diacritics in OUTLOOK)

======= 1.0.1 (HOTFIX)

- added: advanced template conditions

- fixed: builders.prepare()
- fixed: binary (command-line tools)
- fixed: views conditions