CHANGELOG
0.7 (2013)
0.7.0 (2013/03/31)
NOTE: This version is not compatible with version 0.5.x
- Documentation
- Introduce
Klass- lightweight Javascript OO implementation - Introduce
Core- the plugin/middleware system - Introduce
Site- to avoid global shared object in
lib/genji.js - setting management namespaced by environment
- coporate with
Coreand map routes to apps
- to avoid global shared object in
- Replace
HandlerwithContext, convert some handlers to plugins - Refactor
router- allow routing without middleware
- overwrite routes which has same url pattern and http method
- Rewrite
App- use
Klass - separate routing from App logic
- remove support of static properties
- use
- Rewrite
Model- use
Klass - remove support of static properties
- use
- Remove
Role - Remove
Base - Remove file plugin and lib/mime.js
- Refactor
view
0.5 (2012)
0.5.10 (2012/12/15)
Appclone routes object before useHandlerkeep parsed and raw http request data
0.5.9 (2012/12/15)
View#minifyjson,html,textshortcuts forApp#routeResults
0.5.8 (2012/11/24)
handler#sendAsFile- allow customize response headers
- detect Buffer when calculate data length
0.5.7 (2012/11/06)
util#exposeexport sub modules- remove
client.js ModeltoDataandtoDocaccept array as argument to indicate the fields you need to get.App#routePreHooksupport bulk set prehook for array of routes
0.5.6 (2012/10/31)
crypto#decipherhandle exception 'TypeError: DecipherFinal fail' when decipher string with different key ciphered
0.5.5 (2012/10/26)
controldefer().defer(otherDeferrable)defer().callback(cb)
0.5.4 (2012/09/14)
- set default context for layout
- batch attache prehook to routes
- allow set cookie during redirection
- default options for
Role
0.5.3 (2012/08/17)
- node 0.8.x compatibility
0.5.2-2 (2012/07/21)
- Bug fix for
Model
0.5.2-1 (2012/07/18)
- Bug fix for
App
0.5.2 (2012/07/05)
Model- new field type and type validator:
array,regexp,date,bool - dynamic fields validation status
- instance function accepts callback function as last argument,
call
this.emit()as usual will call the callback and event won't be emitted. - use
toDoc()instead oftoData('alias') - bug fix for type validation
- new field type and type validator:
App- bug fix for instance function not return result
0.5.1 (2012/06/16)
View- add script loader support (head.js)
- change
addViewPathtosetViewPath - add support for default context (e.g. var view = new View(engine, {context: {title: 'Title'}});)
- merge
BaseViewwithViewWithCompiler - basic
layoutmanager
Modelmodel.attr([key1, key2])get group of attributes as hash object- Bi-direction aliased field name
Appsupport application level and route levelroutePreHook- Introduce
Role
0.5.0 (2012/06/05)
- external app loader
- New
Appmodule genji.apprenamed togenji.route
0.3.3 (2012/05/19)
- expose submodules by default,
genji.shortandgenji.requireare deprecated - rewrite
lib/model.js, added test - support multi-root path for view template (with namespace)
- add
Model#changed, return object which contains changed fields/values after initialized. - add
util#byteLength
0.3.2 (2012/05/08)
- improve
viewandmodel
0.3.1 (2012/03/12)
- improve
viewpartial - introduce
model
0.3.0 (2012/01/05)
- introduce
viewfor working with template engine like hogan.js- render files
- simple caching support
- preregister partial files in the
rootViewPath
0.2.4 (2012/01/02)
- add
send,sendJSONandsendHTMLto thebase#BaseHandler - introduce
eventincontrol#defer
0.2.3 (2011/12/15)
- Upgraded
expressofor node 0.6.x support
0.2.2 (2011/08/29)
- Cleaned code follow default jshint rules
- Rewrited
client.js#Clientand added some tests
0.2.1 (2011/08/11)
- Add timeout support for
control#parallel - bug fix for handler#Simple#sendJson
- new event for handler with method
POST/PUT:datafor raw dataparamsfor http query string, parsed as plain javascript objectjsonfor json string, parsed as plain javascript object
0.2.0 (2011/07/10)
- Changed the way how we define sub url for
App#[get, post, put, del, head] control#defer- put flow control object as the first argument of
andcallback - callbacks of
and,thennow will be called in registered orderdefer(fs.readFile, fs).and(fn1, fn2, fn3).then(fn4, fn5).and(fn6, fn7)functions will be called in the following order: fn1->fn2->fn3->(fn4&fn5)->fn6->fn7
- put flow control object as the first argument of
util#extendtakes unlimited argumentsextend(obj, props1, props2, ..., propsN)- Add
crypto#hmac handler#Simpleparses url parameters by default- Add context for
control#parallel
0.1.0 (2011/06/29)
- Remove a lots of functionalities, keep small and focus.
- Introduce
App control#parallelset done/fail callbacks byparallel.done(fn)andparallel.fail(fn)- add
genji.short: extends thegenjinamespace withutilbasecontrolsubmodules - Simplified
handler,- the default handler is
genji.require('handler').Handlerwhich can handle normal http request, parse cookies and send files - you can use
genji.require('handler').BaseHandlerto include features you only need
- the default handler is
0.0.3 (2011/06/13)
- etag for sending file-like contents
- util
- crypto
- new shorthand functions for cipher/decipher
- enable to select the digest encoding for
md5,sha1,hmac_sha1
- crypto
- web
- middleware
- now the middleware does not care about application settings
- new style middleware config format
secure-cookienew middleware to encrypt/decrypt cookie
- router, new url routing system, supports declarative and programmatic style of defining url rules.
- move
createServer/startServerinto submoduleweb.server,web/index.jsonly use to export submodules
- middleware
- pattern
- control
- promise: call the original async function in next tick
- math, new pattern group, add
random
- control