arnaucube
arnaucube/thoughtsPublic Self-hosted repository
thoughts/node_modules/express/History.md
node_modules/express/History.mdRaw
   14.14.0 / 2016-06-16
   2===================
   3
   4  * Add `acceptRanges` option to `res.sendFile`/`res.sendfile`
   5  * Add `cacheControl` option to `res.sendFile`/`res.sendfile`
   6  * Add `options` argument to `req.range`
   7    - Includes the `combine` option
   8  * Encode URL in `res.location`/`res.redirect` if not already encoded
   9  * Fix some redirect handling in `res.sendFile`/`res.sendfile`
  10  * Fix Windows absolute path check using forward slashes
  11  * Improve error with invalid arguments to `req.get()`
  12  * Improve performance for `res.json`/`res.jsonp` in most cases
  13  * Improve `Range` header handling in `res.sendFile`/`res.sendfile`
  14  * deps: accepts@~1.3.3
  15    - Fix including type extensions in parameters in `Accept` parsing
  16    - Fix parsing `Accept` parameters with quoted equals
  17    - Fix parsing `Accept` parameters with quoted semicolons
  18    - Many performance improvments
  19    - deps: mime-types@~2.1.11
  20    - deps: negotiator@0.6.1
  21  * deps: content-type@~1.0.2
  22    - perf: enable strict mode
  23  * deps: cookie@0.3.1
  24    - Add `sameSite` option
  25    - Fix cookie `Max-Age` to never be a floating point number
  26    - Improve error message when `encode` is not a function
  27    - Improve error message when `expires` is not a `Date`
  28    - Throw better error for invalid argument to parse
  29    - Throw on invalid values provided to `serialize`
  30    - perf: enable strict mode
  31    - perf: hoist regular expression
  32    - perf: use for loop in parse
  33    - perf: use string concatination for serialization
  34  * deps: finalhandler@0.5.0
  35    - Change invalid or non-numeric status code to 500
  36    - Overwrite status message to match set status code
  37    - Prefer `err.statusCode` if `err.status` is invalid
  38    - Set response headers from `err.headers` object
  39    - Use `statuses` instead of `http` module for status messages
  40  * deps: proxy-addr@~1.1.2
  41    - Fix accepting various invalid netmasks
  42    - Fix IPv6-mapped IPv4 validation edge cases
  43    - IPv4 netmasks must be contingous
  44    - IPv6 addresses cannot be used as a netmask
  45    - deps: ipaddr.js@1.1.1
  46  * deps: qs@6.2.0
  47    - Add `decoder` option in `parse` function
  48  * deps: range-parser@~1.2.0
  49    - Add `combine` option to combine overlapping ranges
  50    - Fix incorrectly returning -1 when there is at least one valid range
  51    - perf: remove internal function
  52  * deps: send@0.14.1
  53    - Add `acceptRanges` option
  54    - Add `cacheControl` option
  55    - Attempt to combine multiple ranges into single range
  56    - Correctly inherit from `Stream` class
  57    - Fix `Content-Range` header in 416 responses when using `start`/`end` options
  58    - Fix `Content-Range` header missing from default 416 responses
  59    - Fix redirect error when `path` contains raw non-URL characters
  60    - Fix redirect when `path` starts with multiple forward slashes
  61    - Ignore non-byte `Range` headers
  62    - deps: http-errors@~1.5.0
  63    - deps: range-parser@~1.2.0
  64    - deps: statuses@~1.3.0
  65    - perf: remove argument reassignment
  66  * deps: serve-static@~1.11.1
  67    - Add `acceptRanges` option
  68    - Add `cacheControl` option
  69    - Attempt to combine multiple ranges into single range
  70    - Fix redirect error when `req.url` contains raw non-URL characters
  71    - Ignore non-byte `Range` headers
  72    - Use status code 301 for redirects
  73    - deps: send@0.14.1
  74  * deps: type-is@~1.6.13
  75    - Fix type error when given invalid type to match against
  76    - deps: mime-types@~2.1.11
  77  * deps: vary@~1.1.0
  78    - Only accept valid field names in the `field` argument
  79  * perf: use strict equality when possible
  80
  814.13.4 / 2016-01-21
  82===================
  83
  84  * deps: content-disposition@0.5.1
  85    - perf: enable strict mode
  86  * deps: cookie@0.1.5
  87    - Throw on invalid values provided to `serialize`
  88  * deps: depd@~1.1.0
  89    - Support web browser loading
  90    - perf: enable strict mode
  91  * deps: escape-html@~1.0.3
  92    - perf: enable strict mode
  93    - perf: optimize string replacement
  94    - perf: use faster string coercion
  95  * deps: finalhandler@0.4.1
  96    - deps: escape-html@~1.0.3
  97  * deps: merge-descriptors@1.0.1
  98    - perf: enable strict mode
  99  * deps: methods@~1.1.2
 100    - perf: enable strict mode
 101  * deps: parseurl@~1.3.1
 102    - perf: enable strict mode
 103  * deps: proxy-addr@~1.0.10
 104    - deps: ipaddr.js@1.0.5
 105    - perf: enable strict mode
 106  * deps: range-parser@~1.0.3
 107    - perf: enable strict mode
 108  * deps: send@0.13.1
 109    - deps: depd@~1.1.0
 110    - deps: destroy@~1.0.4
 111    - deps: escape-html@~1.0.3
 112    - deps: range-parser@~1.0.3
 113  * deps: serve-static@~1.10.2
 114    - deps: escape-html@~1.0.3
 115    - deps: parseurl@~1.3.0
 116    - deps: send@0.13.1
 117
 1184.13.3 / 2015-08-02
 119===================
 120
 121  * Fix infinite loop condition using `mergeParams: true`
 122  * Fix inner numeric indices incorrectly altering parent `req.params`
 123
 1244.13.2 / 2015-07-31
 125===================
 126
 127  * deps: accepts@~1.2.12
 128    - deps: mime-types@~2.1.4
 129  * deps: array-flatten@1.1.1
 130    - perf: enable strict mode
 131  * deps: path-to-regexp@0.1.7
 132    - Fix regression with escaped round brackets and matching groups
 133  * deps: type-is@~1.6.6
 134    - deps: mime-types@~2.1.4
 135
 1364.13.1 / 2015-07-05
 137===================
 138
 139  * deps: accepts@~1.2.10
 140    - deps: mime-types@~2.1.2
 141  * deps: qs@4.0.0
 142    - Fix dropping parameters like `hasOwnProperty`
 143    - Fix various parsing edge cases
 144  * deps: type-is@~1.6.4
 145    - deps: mime-types@~2.1.2
 146    - perf: enable strict mode
 147    - perf: remove argument reassignment
 148
 1494.13.0 / 2015-06-20
 150===================
 151
 152  * Add settings to debug output
 153  * Fix `res.format` error when only `default` provided
 154  * Fix issue where `next('route')` in `app.param` would incorrectly skip values
 155  * Fix hiding platform issues with `decodeURIComponent`
 156    - Only `URIError`s are a 400
 157  * Fix using `*` before params in routes
 158  * Fix using capture groups before params in routes
 159  * Simplify `res.cookie` to call `res.append`
 160  * Use `array-flatten` module for flattening arrays
 161  * deps: accepts@~1.2.9
 162    - deps: mime-types@~2.1.1
 163    - perf: avoid argument reassignment & argument slice
 164    - perf: avoid negotiator recursive construction
 165    - perf: enable strict mode
 166    - perf: remove unnecessary bitwise operator
 167  * deps: cookie@0.1.3
 168    - perf: deduce the scope of try-catch deopt
 169    - perf: remove argument reassignments
 170  * deps: escape-html@1.0.2
 171  * deps: etag@~1.7.0
 172    - Always include entity length in ETags for hash length extensions
 173    - Generate non-Stats ETags using MD5 only (no longer CRC32)
 174    - Improve stat performance by removing hashing
 175    - Improve support for JXcore
 176    - Remove base64 padding in ETags to shorten
 177    - Support "fake" stats objects in environments without fs
 178    - Use MD5 instead of MD4 in weak ETags over 1KB
 179  * deps: finalhandler@0.4.0
 180    - Fix a false-positive when unpiping in Node.js 0.8
 181    - Support `statusCode` property on `Error` objects
 182    - Use `unpipe` module for unpiping requests
 183    - deps: escape-html@1.0.2
 184    - deps: on-finished@~2.3.0
 185    - perf: enable strict mode
 186    - perf: remove argument reassignment
 187  * deps: fresh@0.3.0
 188    - Add weak `ETag` matching support
 189  * deps: on-finished@~2.3.0
 190    - Add defined behavior for HTTP `CONNECT` requests
 191    - Add defined behavior for HTTP `Upgrade` requests
 192    - deps: ee-first@1.1.1
 193  * deps: path-to-regexp@0.1.6
 194  * deps: send@0.13.0
 195    - Allow Node.js HTTP server to set `Date` response header
 196    - Fix incorrectly removing `Content-Location` on 304 response
 197    - Improve the default redirect response headers
 198    - Send appropriate headers on default error response
 199    - Use `http-errors` for standard emitted errors
 200    - Use `statuses` instead of `http` module for status messages
 201    - deps: escape-html@1.0.2
 202    - deps: etag@~1.7.0
 203    - deps: fresh@0.3.0
 204    - deps: on-finished@~2.3.0
 205    - perf: enable strict mode
 206    - perf: remove unnecessary array allocations
 207  * deps: serve-static@~1.10.0
 208    - Add `fallthrough` option
 209    - Fix reading options from options prototype
 210    - Improve the default redirect response headers
 211    - Malformed URLs now `next()` instead of 400
 212    - deps: escape-html@1.0.2
 213    - deps: send@0.13.0
 214    - perf: enable strict mode
 215    - perf: remove argument reassignment
 216  * deps: type-is@~1.6.3
 217    - deps: mime-types@~2.1.1
 218    - perf: reduce try block size
 219    - perf: remove bitwise operations
 220  * perf: enable strict mode
 221  * perf: isolate `app.render` try block
 222  * perf: remove argument reassignments in application
 223  * perf: remove argument reassignments in request prototype
 224  * perf: remove argument reassignments in response prototype
 225  * perf: remove argument reassignments in routing
 226  * perf: remove argument reassignments in `View`
 227  * perf: skip attempting to decode zero length string
 228  * perf: use saved reference to `http.STATUS_CODES`
 229
 2304.12.4 / 2015-05-17
 231===================
 232
 233  * deps: accepts@~1.2.7
 234    - deps: mime-types@~2.0.11
 235    - deps: negotiator@0.5.3
 236  * deps: debug@~2.2.0
 237    - deps: ms@0.7.1
 238  * deps: depd@~1.0.1
 239  * deps: etag@~1.6.0
 240    - Improve support for JXcore
 241    - Support "fake" stats objects in environments without `fs`
 242  * deps: finalhandler@0.3.6
 243    - deps: debug@~2.2.0
 244    - deps: on-finished@~2.2.1
 245  * deps: on-finished@~2.2.1
 246    - Fix `isFinished(req)` when data buffered
 247  * deps: proxy-addr@~1.0.8
 248    - deps: ipaddr.js@1.0.1
 249  * deps: qs@2.4.2
 250   - Fix allowing parameters like `constructor`
 251  * deps: send@0.12.3
 252    - deps: debug@~2.2.0
 253    - deps: depd@~1.0.1
 254    - deps: etag@~1.6.0
 255    - deps: ms@0.7.1
 256    - deps: on-finished@~2.2.1
 257  * deps: serve-static@~1.9.3
 258    - deps: send@0.12.3
 259  * deps: type-is@~1.6.2
 260    - deps: mime-types@~2.0.11
 261
 2624.12.3 / 2015-03-17
 263===================
 264
 265  * deps: accepts@~1.2.5
 266    - deps: mime-types@~2.0.10
 267  * deps: debug@~2.1.3
 268    - Fix high intensity foreground color for bold
 269    - deps: ms@0.7.0
 270  * deps: finalhandler@0.3.4
 271    - deps: debug@~2.1.3
 272  * deps: proxy-addr@~1.0.7
 273    - deps: ipaddr.js@0.1.9
 274  * deps: qs@2.4.1
 275    - Fix error when parameter `hasOwnProperty` is present
 276  * deps: send@0.12.2
 277    - Throw errors early for invalid `extensions` or `index` options
 278    - deps: debug@~2.1.3
 279  * deps: serve-static@~1.9.2
 280    - deps: send@0.12.2
 281  * deps: type-is@~1.6.1
 282    - deps: mime-types@~2.0.10
 283
 2844.12.2 / 2015-03-02
 285===================
 286
 287  * Fix regression where `"Request aborted"` is logged using `res.sendFile`
 288
 2894.12.1 / 2015-03-01
 290===================
 291
 292  * Fix constructing application with non-configurable prototype properties
 293  * Fix `ECONNRESET` errors from `res.sendFile` usage
 294  * Fix `req.host` when using "trust proxy" hops count
 295  * Fix `req.protocol`/`req.secure` when using "trust proxy" hops count
 296  * Fix wrong `code` on aborted connections from `res.sendFile`
 297  * deps: merge-descriptors@1.0.0
 298
 2994.12.0 / 2015-02-23
 300===================
 301
 302  * Fix `"trust proxy"` setting to inherit when app is mounted
 303  * Generate `ETag`s for all request responses
 304    - No longer restricted to only responses for `GET` and `HEAD` requests
 305  * Use `content-type` to parse `Content-Type` headers
 306  * deps: accepts@~1.2.4
 307    - Fix preference sorting to be stable for long acceptable lists
 308    - deps: mime-types@~2.0.9
 309    - deps: negotiator@0.5.1
 310  * deps: cookie-signature@1.0.6
 311  * deps: send@0.12.1
 312    - Always read the stat size from the file
 313    - Fix mutating passed-in `options`
 314    - deps: mime@1.3.4
 315  * deps: serve-static@~1.9.1
 316    - deps: send@0.12.1
 317  * deps: type-is@~1.6.0
 318    - fix argument reassignment
 319    - fix false-positives in `hasBody` `Transfer-Encoding` check
 320    - support wildcard for both type and subtype (`*/*`)
 321    - deps: mime-types@~2.0.9
 322
 3234.11.2 / 2015-02-01
 324===================
 325
 326  * Fix `res.redirect` double-calling `res.end` for `HEAD` requests
 327  * deps: accepts@~1.2.3
 328    - deps: mime-types@~2.0.8
 329  * deps: proxy-addr@~1.0.6
 330    - deps: ipaddr.js@0.1.8
 331  * deps: type-is@~1.5.6
 332    - deps: mime-types@~2.0.8
 333
 3344.11.1 / 2015-01-20
 335===================
 336
 337  * deps: send@0.11.1
 338    - Fix root path disclosure
 339  * deps: serve-static@~1.8.1
 340    - Fix redirect loop in Node.js 0.11.14
 341    - Fix root path disclosure
 342    - deps: send@0.11.1
 343
 3444.11.0 / 2015-01-13
 345===================
 346
 347  * Add `res.append(field, val)` to append headers
 348  * Deprecate leading `:` in `name` for `app.param(name, fn)`
 349  * Deprecate `req.param()` -- use `req.params`, `req.body`, or `req.query` instead
 350  * Deprecate `app.param(fn)`
 351  * Fix `OPTIONS` responses to include the `HEAD` method properly
 352  * Fix `res.sendFile` not always detecting aborted connection
 353  * Match routes iteratively to prevent stack overflows
 354  * deps: accepts@~1.2.2
 355    - deps: mime-types@~2.0.7
 356    - deps: negotiator@0.5.0
 357  * deps: send@0.11.0
 358    - deps: debug@~2.1.1
 359    - deps: etag@~1.5.1
 360    - deps: ms@0.7.0
 361    - deps: on-finished@~2.2.0
 362  * deps: serve-static@~1.8.0
 363    - deps: send@0.11.0
 364
 3654.10.8 / 2015-01-13
 366===================
 367
 368  * Fix crash from error within `OPTIONS` response handler
 369  * deps: proxy-addr@~1.0.5
 370    - deps: ipaddr.js@0.1.6
 371
 3724.10.7 / 2015-01-04
 373===================
 374
 375  * Fix `Allow` header for `OPTIONS` to not contain duplicate methods
 376  * Fix incorrect "Request aborted" for `res.sendFile` when `HEAD` or 304
 377  * deps: debug@~2.1.1
 378  * deps: finalhandler@0.3.3
 379    - deps: debug@~2.1.1
 380    - deps: on-finished@~2.2.0
 381  * deps: methods@~1.1.1
 382  * deps: on-finished@~2.2.0
 383  * deps: serve-static@~1.7.2
 384    - Fix potential open redirect when mounted at root
 385  * deps: type-is@~1.5.5
 386    - deps: mime-types@~2.0.7
 387
 3884.10.6 / 2014-12-12
 389===================
 390
 391  * Fix exception in `req.fresh`/`req.stale` without response headers
 392
 3934.10.5 / 2014-12-10
 394===================
 395
 396  * Fix `res.send` double-calling `res.end` for `HEAD` requests
 397  * deps: accepts@~1.1.4
 398    - deps: mime-types@~2.0.4
 399  * deps: type-is@~1.5.4
 400    - deps: mime-types@~2.0.4
 401
 4024.10.4 / 2014-11-24
 403===================
 404
 405  * Fix `res.sendfile` logging standard write errors
 406
 4074.10.3 / 2014-11-23
 408===================
 409
 410  * Fix `res.sendFile` logging standard write errors
 411  * deps: etag@~1.5.1
 412  * deps: proxy-addr@~1.0.4
 413    - deps: ipaddr.js@0.1.5
 414  * deps: qs@2.3.3
 415    - Fix `arrayLimit` behavior
 416
 4174.10.2 / 2014-11-09
 418===================
 419
 420  * Correctly invoke async router callback asynchronously
 421  * deps: accepts@~1.1.3
 422    - deps: mime-types@~2.0.3
 423  * deps: type-is@~1.5.3
 424    - deps: mime-types@~2.0.3
 425
 4264.10.1 / 2014-10-28
 427===================
 428
 429  * Fix handling of URLs containing `://` in the path
 430  * deps: qs@2.3.2
 431    - Fix parsing of mixed objects and values
 432
 4334.10.0 / 2014-10-23
 434===================
 435
 436  * Add support for `app.set('views', array)`
 437    - Views are looked up in sequence in array of directories
 438  * Fix `res.send(status)` to mention `res.sendStatus(status)`
 439  * Fix handling of invalid empty URLs
 440  * Use `content-disposition` module for `res.attachment`/`res.download`
 441    - Sends standards-compliant `Content-Disposition` header
 442    - Full Unicode support
 443  * Use `path.resolve` in view lookup
 444  * deps: debug@~2.1.0
 445    - Implement `DEBUG_FD` env variable support
 446  * deps: depd@~1.0.0
 447  * deps: etag@~1.5.0
 448    - Improve string performance
 449    - Slightly improve speed for weak ETags over 1KB
 450  * deps: finalhandler@0.3.2
 451    - Terminate in progress response only on error
 452    - Use `on-finished` to determine request status
 453    - deps: debug@~2.1.0
 454    - deps: on-finished@~2.1.1
 455  * deps: on-finished@~2.1.1
 456    - Fix handling of pipelined requests
 457  * deps: qs@2.3.0
 458    - Fix parsing of mixed implicit and explicit arrays
 459  * deps: send@0.10.1
 460    - deps: debug@~2.1.0
 461    - deps: depd@~1.0.0
 462    - deps: etag@~1.5.0
 463    - deps: on-finished@~2.1.1
 464  * deps: serve-static@~1.7.1
 465    - deps: send@0.10.1
 466
 4674.9.8 / 2014-10-17
 468==================
 469
 470  * Fix `res.redirect` body when redirect status specified
 471  * deps: accepts@~1.1.2
 472    - Fix error when media type has invalid parameter
 473    - deps: negotiator@0.4.9
 474
 4754.9.7 / 2014-10-10
 476==================
 477
 478  * Fix using same param name in array of paths
 479
 4804.9.6 / 2014-10-08
 481==================
 482
 483  * deps: accepts@~1.1.1
 484    - deps: mime-types@~2.0.2
 485    - deps: negotiator@0.4.8
 486  * deps: serve-static@~1.6.4
 487    - Fix redirect loop when index file serving disabled
 488  * deps: type-is@~1.5.2
 489    - deps: mime-types@~2.0.2
 490
 4914.9.5 / 2014-09-24
 492==================
 493
 494  * deps: etag@~1.4.0
 495  * deps: proxy-addr@~1.0.3
 496    - Use `forwarded` npm module
 497  * deps: send@0.9.3
 498    - deps: etag@~1.4.0
 499  * deps: serve-static@~1.6.3
 500    - deps: send@0.9.3
 501
 5024.9.4 / 2014-09-19
 503==================
 504
 505  * deps: qs@2.2.4
 506    - Fix issue with object keys starting with numbers truncated
 507
 5084.9.3 / 2014-09-18
 509==================
 510
 511  * deps: proxy-addr@~1.0.2
 512    - Fix a global leak when multiple subnets are trusted
 513    - deps: ipaddr.js@0.1.3
 514
 5154.9.2 / 2014-09-17
 516==================
 517
 518  * Fix regression for empty string `path` in `app.use`
 519  * Fix `router.use` to accept array of middleware without path
 520  * Improve error message for bad `app.use` arguments
 521
 5224.9.1 / 2014-09-16
 523==================
 524
 525  * Fix `app.use` to accept array of middleware without path
 526  * deps: depd@0.4.5
 527  * deps: etag@~1.3.1
 528  * deps: send@0.9.2
 529    - deps: depd@0.4.5
 530    - deps: etag@~1.3.1
 531    - deps: range-parser@~1.0.2
 532  * deps: serve-static@~1.6.2
 533    - deps: send@0.9.2
 534
 5354.9.0 / 2014-09-08
 536==================
 537
 538  * Add `res.sendStatus`
 539  * Invoke callback for sendfile when client aborts
 540    - Applies to `res.sendFile`, `res.sendfile`, and `res.download`
 541    - `err` will be populated with request aborted error
 542  * Support IP address host in `req.subdomains`
 543  * Use `etag` to generate `ETag` headers
 544  * deps: accepts@~1.1.0
 545    - update `mime-types`
 546  * deps: cookie-signature@1.0.5
 547  * deps: debug@~2.0.0
 548  * deps: finalhandler@0.2.0
 549    - Set `X-Content-Type-Options: nosniff` header
 550    - deps: debug@~2.0.0
 551  * deps: fresh@0.2.4
 552  * deps: media-typer@0.3.0
 553    - Throw error when parameter format invalid on parse
 554  * deps: qs@2.2.3
 555    - Fix issue where first empty value in array is discarded
 556  * deps: range-parser@~1.0.2
 557  * deps: send@0.9.1
 558    - Add `lastModified` option
 559    - Use `etag` to generate `ETag` header
 560    - deps: debug@~2.0.0
 561    - deps: fresh@0.2.4
 562  * deps: serve-static@~1.6.1
 563    - Add `lastModified` option
 564    - deps: send@0.9.1
 565  * deps: type-is@~1.5.1
 566    - fix `hasbody` to be true for `content-length: 0`
 567    - deps: media-typer@0.3.0
 568    - deps: mime-types@~2.0.1
 569  * deps: vary@~1.0.0
 570    - Accept valid `Vary` header string as `field`
 571
 5724.8.8 / 2014-09-04
 573==================
 574
 575  * deps: send@0.8.5
 576    - Fix a path traversal issue when using `root`
 577    - Fix malicious path detection for empty string path
 578  * deps: serve-static@~1.5.4
 579    - deps: send@0.8.5
 580
 5814.8.7 / 2014-08-29
 582==================
 583
 584  * deps: qs@2.2.2
 585    - Remove unnecessary cloning
 586
 5874.8.6 / 2014-08-27
 588==================
 589
 590  * deps: qs@2.2.0
 591    - Array parsing fix
 592    - Performance improvements
 593
 5944.8.5 / 2014-08-18
 595==================
 596
 597  * deps: send@0.8.3
 598    - deps: destroy@1.0.3
 599    - deps: on-finished@2.1.0
 600  * deps: serve-static@~1.5.3
 601    - deps: send@0.8.3
 602
 6034.8.4 / 2014-08-14
 604==================
 605
 606  * deps: qs@1.2.2
 607  * deps: send@0.8.2
 608    - Work around `fd` leak in Node.js 0.10 for `fs.ReadStream`
 609  * deps: serve-static@~1.5.2
 610    - deps: send@0.8.2
 611
 6124.8.3 / 2014-08-10
 613==================
 614
 615  * deps: parseurl@~1.3.0
 616  * deps: qs@1.2.1
 617  * deps: serve-static@~1.5.1
 618    - Fix parsing of weird `req.originalUrl` values
 619    - deps: parseurl@~1.3.0
 620    - deps: utils-merge@1.0.0
 621
 6224.8.2 / 2014-08-07
 623==================
 624
 625  * deps: qs@1.2.0
 626    - Fix parsing array of objects
 627
 6284.8.1 / 2014-08-06
 629==================
 630
 631  * fix incorrect deprecation warnings on `res.download`
 632  * deps: qs@1.1.0
 633    - Accept urlencoded square brackets
 634    - Accept empty values in implicit array notation
 635
 6364.8.0 / 2014-08-05
 637==================
 638
 639  * add `res.sendFile`
 640    - accepts a file system path instead of a URL
 641    - requires an absolute path or `root` option specified
 642  * deprecate `res.sendfile` -- use `res.sendFile` instead
 643  * support mounted app as any argument to `app.use()`
 644  * deps: qs@1.0.2
 645    - Complete rewrite
 646    - Limits array length to 20
 647    - Limits object depth to 5
 648    - Limits parameters to 1,000
 649  * deps: send@0.8.1
 650    - Add `extensions` option
 651  * deps: serve-static@~1.5.0
 652    - Add `extensions` option
 653    - deps: send@0.8.1
 654
 6554.7.4 / 2014-08-04
 656==================
 657
 658  * fix `res.sendfile` regression for serving directory index files
 659  * deps: send@0.7.4
 660    - Fix incorrect 403 on Windows and Node.js 0.11
 661    - Fix serving index files without root dir
 662  * deps: serve-static@~1.4.4
 663    - deps: send@0.7.4
 664
 6654.7.3 / 2014-08-04
 666==================
 667
 668  * deps: send@0.7.3
 669    - Fix incorrect 403 on Windows and Node.js 0.11
 670  * deps: serve-static@~1.4.3
 671    - Fix incorrect 403 on Windows and Node.js 0.11
 672    - deps: send@0.7.3
 673
 6744.7.2 / 2014-07-27
 675==================
 676
 677  * deps: depd@0.4.4
 678    - Work-around v8 generating empty stack traces
 679  * deps: send@0.7.2
 680    - deps: depd@0.4.4
 681  * deps: serve-static@~1.4.2
 682
 6834.7.1 / 2014-07-26
 684==================
 685
 686  * deps: depd@0.4.3
 687    - Fix exception when global `Error.stackTraceLimit` is too low
 688  * deps: send@0.7.1
 689    - deps: depd@0.4.3
 690  * deps: serve-static@~1.4.1
 691
 6924.7.0 / 2014-07-25
 693==================
 694
 695  * fix `req.protocol` for proxy-direct connections
 696  * configurable query parser with `app.set('query parser', parser)`
 697    - `app.set('query parser', 'extended')` parse with "qs" module
 698    - `app.set('query parser', 'simple')` parse with "querystring" core module
 699    - `app.set('query parser', false)` disable query string parsing
 700    - `app.set('query parser', true)` enable simple parsing
 701  * deprecate `res.json(status, obj)` -- use `res.status(status).json(obj)` instead
 702  * deprecate `res.jsonp(status, obj)` -- use `res.status(status).jsonp(obj)` instead
 703  * deprecate `res.send(status, body)` -- use `res.status(status).send(body)` instead
 704  * deps: debug@1.0.4
 705  * deps: depd@0.4.2
 706    - Add `TRACE_DEPRECATION` environment variable
 707    - Remove non-standard grey color from color output
 708    - Support `--no-deprecation` argument
 709    - Support `--trace-deprecation` argument
 710  * deps: finalhandler@0.1.0
 711    - Respond after request fully read
 712    - deps: debug@1.0.4
 713  * deps: parseurl@~1.2.0
 714    - Cache URLs based on original value
 715    - Remove no-longer-needed URL mis-parse work-around
 716    - Simplify the "fast-path" `RegExp`
 717  * deps: send@0.7.0
 718    - Add `dotfiles` option
 719    - Cap `maxAge` value to 1 year
 720    - deps: debug@1.0.4
 721    - deps: depd@0.4.2
 722  * deps: serve-static@~1.4.0
 723    - deps: parseurl@~1.2.0
 724    - deps: send@0.7.0
 725  * perf: prevent multiple `Buffer` creation in `res.send`
 726
 7274.6.1 / 2014-07-12
 728==================
 729
 730  * fix `subapp.mountpath` regression for `app.use(subapp)`
 731
 7324.6.0 / 2014-07-11
 733==================
 734
 735  * accept multiple callbacks to `app.use()`
 736  * add explicit "Rosetta Flash JSONP abuse" protection
 737    - previous versions are not vulnerable; this is just explicit protection
 738  * catch errors in multiple `req.param(name, fn)` handlers
 739  * deprecate `res.redirect(url, status)` -- use `res.redirect(status, url)` instead
 740  * fix `res.send(status, num)` to send `num` as json (not error)
 741  * remove unnecessary escaping when `res.jsonp` returns JSON response
 742  * support non-string `path` in `app.use(path, fn)`
 743    - supports array of paths
 744    - supports `RegExp`
 745  * router: fix optimization on router exit
 746  * router: refactor location of `try` blocks
 747  * router: speed up standard `app.use(fn)`
 748  * deps: debug@1.0.3
 749    - Add support for multiple wildcards in namespaces
 750  * deps: finalhandler@0.0.3
 751    - deps: debug@1.0.3
 752  * deps: methods@1.1.0
 753    - add `CONNECT`
 754  * deps: parseurl@~1.1.3
 755    - faster parsing of href-only URLs
 756  * deps: path-to-regexp@0.1.3
 757  * deps: send@0.6.0
 758    - deps: debug@1.0.3
 759  * deps: serve-static@~1.3.2
 760    - deps: parseurl@~1.1.3
 761    - deps: send@0.6.0
 762  * perf: fix arguments reassign deopt in some `res` methods
 763
 7644.5.1 / 2014-07-06
 765==================
 766
 767 * fix routing regression when altering `req.method`
 768
 7694.5.0 / 2014-07-04
 770==================
 771
 772 * add deprecation message to non-plural `req.accepts*`
 773 * add deprecation message to `res.send(body, status)`
 774 * add deprecation message to `res.vary()`
 775 * add `headers` option to `res.sendfile`
 776   - use to set headers on successful file transfer
 777 * add `mergeParams` option to `Router`
 778   - merges `req.params` from parent routes
 779 * add `req.hostname` -- correct name for what `req.host` returns
 780 * deprecate things with `depd` module
 781 * deprecate `req.host` -- use `req.hostname` instead
 782 * fix behavior when handling request without routes
 783 * fix handling when `route.all` is only route
 784 * invoke `router.param()` only when route matches
 785 * restore `req.params` after invoking router
 786 * use `finalhandler` for final response handling
 787 * use `media-typer` to alter content-type charset
 788 * deps: accepts@~1.0.7
 789 * deps: send@0.5.0
 790   - Accept string for `maxage` (converted by `ms`)
 791   - Include link in default redirect response
 792 * deps: serve-static@~1.3.0
 793   - Accept string for `maxAge` (converted by `ms`)
 794   - Add `setHeaders` option
 795   - Include HTML link in redirect response
 796   - deps: send@0.5.0
 797 * deps: type-is@~1.3.2
 798
 7994.4.5 / 2014-06-26
 800==================
 801
 802 * deps: cookie-signature@1.0.4
 803   - fix for timing attacks
 804
 8054.4.4 / 2014-06-20
 806==================
 807
 808 * fix `res.attachment` Unicode filenames in Safari
 809 * fix "trim prefix" debug message in `express:router`
 810 * deps: accepts@~1.0.5
 811 * deps: buffer-crc32@0.2.3
 812
 8134.4.3 / 2014-06-11
 814==================
 815
 816 * fix persistence of modified `req.params[name]` from `app.param()`
 817 * deps: accepts@1.0.3
 818   - deps: negotiator@0.4.6
 819 * deps: debug@1.0.2
 820 * deps: send@0.4.3
 821   - Do not throw un-catchable error on file open race condition
 822   - Use `escape-html` for HTML escaping
 823   - deps: debug@1.0.2
 824   - deps: finished@1.2.2
 825   - deps: fresh@0.2.2
 826 * deps: serve-static@1.2.3
 827   - Do not throw un-catchable error on file open race condition
 828   - deps: send@0.4.3
 829
 8304.4.2 / 2014-06-09
 831==================
 832
 833 * fix catching errors from top-level handlers
 834 * use `vary` module for `res.vary`
 835 * deps: debug@1.0.1
 836 * deps: proxy-addr@1.0.1
 837 * deps: send@0.4.2
 838   - fix "event emitter leak" warnings
 839   - deps: debug@1.0.1
 840   - deps: finished@1.2.1
 841 * deps: serve-static@1.2.2
 842   - fix "event emitter leak" warnings
 843   - deps: send@0.4.2
 844 * deps: type-is@1.2.1
 845
 8464.4.1 / 2014-06-02
 847==================
 848
 849 * deps: methods@1.0.1
 850 * deps: send@0.4.1
 851   - Send `max-age` in `Cache-Control` in correct format
 852 * deps: serve-static@1.2.1
 853   - use `escape-html` for escaping
 854   - deps: send@0.4.1
 855
 8564.4.0 / 2014-05-30
 857==================
 858
 859 * custom etag control with `app.set('etag', val)`
 860   - `app.set('etag', function(body, encoding){ return '"etag"' })` custom etag generation
 861   - `app.set('etag', 'weak')` weak tag
 862   - `app.set('etag', 'strong')` strong etag
 863   - `app.set('etag', false)` turn off
 864   - `app.set('etag', true)` standard etag
 865 * mark `res.send` ETag as weak and reduce collisions
 866 * update accepts to 1.0.2
 867   - Fix interpretation when header not in request
 868 * update send to 0.4.0
 869   - Calculate ETag with md5 for reduced collisions
 870   - Ignore stream errors after request ends
 871   - deps: debug@0.8.1
 872 * update serve-static to 1.2.0
 873   - Calculate ETag with md5 for reduced collisions
 874   - Ignore stream errors after request ends
 875   - deps: send@0.4.0
 876
 8774.3.2 / 2014-05-28
 878==================
 879
 880 * fix handling of errors from `router.param()` callbacks
 881
 8824.3.1 / 2014-05-23
 883==================
 884
 885 * revert "fix behavior of multiple `app.VERB` for the same path"
 886   - this caused a regression in the order of route execution
 887
 8884.3.0 / 2014-05-21
 889==================
 890
 891 * add `req.baseUrl` to access the path stripped from `req.url` in routes
 892 * fix behavior of multiple `app.VERB` for the same path
 893 * fix issue routing requests among sub routers
 894 * invoke `router.param()` only when necessary instead of every match
 895 * proper proxy trust with `app.set('trust proxy', trust)`
 896   - `app.set('trust proxy', 1)` trust first hop
 897   - `app.set('trust proxy', 'loopback')` trust loopback addresses
 898   - `app.set('trust proxy', '10.0.0.1')` trust single IP
 899   - `app.set('trust proxy', '10.0.0.1/16')` trust subnet
 900   - `app.set('trust proxy', '10.0.0.1, 10.0.0.2')` trust list
 901   - `app.set('trust proxy', false)` turn off
 902   - `app.set('trust proxy', true)` trust everything
 903 * set proper `charset` in `Content-Type` for `res.send`
 904 * update type-is to 1.2.0
 905   - support suffix matching
 906
 9074.2.0 / 2014-05-11
 908==================
 909
 910 * deprecate `app.del()` -- use `app.delete()` instead
 911 * deprecate `res.json(obj, status)` -- use `res.json(status, obj)` instead
 912   - the edge-case `res.json(status, num)` requires `res.status(status).json(num)`
 913 * deprecate `res.jsonp(obj, status)` -- use `res.jsonp(status, obj)` instead
 914   - the edge-case `res.jsonp(status, num)` requires `res.status(status).jsonp(num)`
 915 * fix `req.next` when inside router instance
 916 * include `ETag` header in `HEAD` requests
 917 * keep previous `Content-Type` for `res.jsonp`
 918 * support PURGE method
 919   - add `app.purge`
 920   - add `router.purge`
 921   - include PURGE in `app.all`
 922 * update debug to 0.8.0
 923   - add `enable()` method
 924   - change from stderr to stdout
 925 * update methods to 1.0.0
 926   - add PURGE
 927
 9284.1.2 / 2014-05-08
 929==================
 930
 931 * fix `req.host` for IPv6 literals
 932 * fix `res.jsonp` error if callback param is object
 933
 9344.1.1 / 2014-04-27
 935==================
 936
 937 * fix package.json to reflect supported node version
 938
 9394.1.0 / 2014-04-24
 940==================
 941
 942 * pass options from `res.sendfile` to `send`
 943 * preserve casing of headers in `res.header` and `res.set`
 944 * support unicode file names in `res.attachment` and `res.download`
 945 * update accepts to 1.0.1
 946   - deps: negotiator@0.4.0
 947 * update cookie to 0.1.2
 948   - Fix for maxAge == 0
 949   - made compat with expires field
 950 * update send to 0.3.0
 951   - Accept API options in options object
 952   - Coerce option types
 953   - Control whether to generate etags
 954   - Default directory access to 403 when index disabled
 955   - Fix sending files with dots without root set
 956   - Include file path in etag
 957   - Make "Can't set headers after they are sent." catchable
 958   - Send full entity-body for multi range requests
 959   - Set etags to "weak"
 960   - Support "If-Range" header
 961   - Support multiple index paths
 962   - deps: mime@1.2.11
 963 * update serve-static to 1.1.0
 964   - Accept options directly to `send` module
 965   - Resolve relative paths at middleware setup
 966   - Use parseurl to parse the URL from request
 967   - deps: send@0.3.0
 968 * update type-is to 1.1.0
 969   - add non-array values support
 970   - add `multipart` as a shorthand
 971
 9724.0.0 / 2014-04-09
 973==================
 974
 975 * remove:
 976   - node 0.8 support
 977   - connect and connect's patches except for charset handling
 978   - express(1) - moved to [express-generator](https://github.com/expressjs/generator)
 979   - `express.createServer()` - it has been deprecated for a long time. Use `express()`
 980   - `app.configure` - use logic in your own app code
 981   - `app.router` - is removed
 982   - `req.auth` - use `basic-auth` instead
 983   - `req.accepted*` - use `req.accepts*()` instead
 984   - `res.location` - relative URL resolution is removed
 985   - `res.charset` - include the charset in the content type when using `res.set()`
 986   - all bundled middleware except `static`
 987 * change:
 988   - `app.route` -> `app.mountpath` when mounting an express app in another express app
 989   - `json spaces` no longer enabled by default in development
 990   - `req.accepts*` -> `req.accepts*s` - i.e. `req.acceptsEncoding` -> `req.acceptsEncodings`
 991   - `req.params` is now an object instead of an array
 992   - `res.locals` is no longer a function. It is a plain js object. Treat it as such.
 993   - `res.headerSent` -> `res.headersSent` to match node.js ServerResponse object
 994 * refactor:
 995   - `req.accepts*` with [accepts](https://github.com/expressjs/accepts)
 996   - `req.is` with [type-is](https://github.com/expressjs/type-is)
 997   - [path-to-regexp](https://github.com/component/path-to-regexp)
 998 * add:
 999   - `app.router()` - returns the app Router instance
1000   - `app.route()` - Proxy to the app's `Router#route()` method to create a new route
1001   - Router & Route - public API
1002
10033.21.2 / 2015-07-31
1004===================
1005
1006  * deps: connect@2.30.2
1007    - deps: body-parser@~1.13.3
1008    - deps: compression@~1.5.2
1009    - deps: errorhandler@~1.4.2
1010    - deps: method-override@~2.3.5
1011    - deps: serve-index@~1.7.2
1012    - deps: type-is@~1.6.6
1013    - deps: vhost@~3.0.1
1014  * deps: vary@~1.0.1
1015    - Fix setting empty header from empty `field`
1016    - perf: enable strict mode
1017    - perf: remove argument reassignments
1018
10193.21.1 / 2015-07-05
1020===================
1021
1022  * deps: basic-auth@~1.0.3
1023  * deps: connect@2.30.1
1024    - deps: body-parser@~1.13.2
1025    - deps: compression@~1.5.1
1026    - deps: errorhandler@~1.4.1
1027    - deps: morgan@~1.6.1
1028    - deps: pause@0.1.0
1029    - deps: qs@4.0.0
1030    - deps: serve-index@~1.7.1
1031    - deps: type-is@~1.6.4
1032
10333.21.0 / 2015-06-18
1034===================
1035
1036  * deps: basic-auth@1.0.2
1037    - perf: enable strict mode
1038    - perf: hoist regular expression
1039    - perf: parse with regular expressions
1040    - perf: remove argument reassignment
1041  * deps: connect@2.30.0
1042    - deps: body-parser@~1.13.1
1043    - deps: bytes@2.1.0
1044    - deps: compression@~1.5.0
1045    - deps: cookie@0.1.3
1046    - deps: cookie-parser@~1.3.5
1047    - deps: csurf@~1.8.3
1048    - deps: errorhandler@~1.4.0
1049    - deps: express-session@~1.11.3
1050    - deps: finalhandler@0.4.0
1051    - deps: fresh@0.3.0
1052    - deps: morgan@~1.6.0
1053    - deps: serve-favicon@~2.3.0
1054    - deps: serve-index@~1.7.0
1055    - deps: serve-static@~1.10.0
1056    - deps: type-is@~1.6.3
1057  * deps: cookie@0.1.3
1058    - perf: deduce the scope of try-catch deopt
1059    - perf: remove argument reassignments
1060  * deps: escape-html@1.0.2
1061  * deps: etag@~1.7.0
1062    - Always include entity length in ETags for hash length extensions
1063    - Generate non-Stats ETags using MD5 only (no longer CRC32)
1064    - Improve stat performance by removing hashing
1065    - Improve support for JXcore
1066    - Remove base64 padding in ETags to shorten
1067    - Support "fake" stats objects in environments without fs
1068    - Use MD5 instead of MD4 in weak ETags over 1KB
1069  * deps: fresh@0.3.0
1070    - Add weak `ETag` matching support
1071  * deps: mkdirp@0.5.1
1072    - Work in global strict mode
1073  * deps: send@0.13.0
1074    - Allow Node.js HTTP server to set `Date` response header
1075    - Fix incorrectly removing `Content-Location` on 304 response
1076    - Improve the default redirect response headers
1077    - Send appropriate headers on default error response
1078    - Use `http-errors` for standard emitted errors
1079    - Use `statuses` instead of `http` module for status messages
1080    - deps: escape-html@1.0.2
1081    - deps: etag@~1.7.0
1082    - deps: fresh@0.3.0
1083    - deps: on-finished@~2.3.0
1084    - perf: enable strict mode
1085    - perf: remove unnecessary array allocations
1086
10873.20.3 / 2015-05-17
1088===================
1089
1090  * deps: connect@2.29.2
1091    - deps: body-parser@~1.12.4
1092    - deps: compression@~1.4.4
1093    - deps: connect-timeout@~1.6.2
1094    - deps: debug@~2.2.0
1095    - deps: depd@~1.0.1
1096    - deps: errorhandler@~1.3.6
1097    - deps: finalhandler@0.3.6
1098    - deps: method-override@~2.3.3
1099    - deps: morgan@~1.5.3
1100    - deps: qs@2.4.2
1101    - deps: response-time@~2.3.1
1102    - deps: serve-favicon@~2.2.1
1103    - deps: serve-index@~1.6.4
1104    - deps: serve-static@~1.9.3
1105    - deps: type-is@~1.6.2
1106  * deps: debug@~2.2.0
1107    - deps: ms@0.7.1
1108  * deps: depd@~1.0.1
1109  * deps: proxy-addr@~1.0.8
1110    - deps: ipaddr.js@1.0.1
1111  * deps: send@0.12.3
1112    - deps: debug@~2.2.0
1113    - deps: depd@~1.0.1
1114    - deps: etag@~1.6.0
1115    - deps: ms@0.7.1
1116    - deps: on-finished@~2.2.1
1117
11183.20.2 / 2015-03-16
1119===================
1120
1121  * deps: connect@2.29.1
1122    - deps: body-parser@~1.12.2
1123    - deps: compression@~1.4.3
1124    - deps: connect-timeout@~1.6.1
1125    - deps: debug@~2.1.3
1126    - deps: errorhandler@~1.3.5
1127    - deps: express-session@~1.10.4
1128    - deps: finalhandler@0.3.4
1129    - deps: method-override@~2.3.2
1130    - deps: morgan@~1.5.2
1131    - deps: qs@2.4.1
1132    - deps: serve-index@~1.6.3
1133    - deps: serve-static@~1.9.2
1134    - deps: type-is@~1.6.1
1135  * deps: debug@~2.1.3
1136    - Fix high intensity foreground color for bold
1137    - deps: ms@0.7.0
1138  * deps: merge-descriptors@1.0.0
1139  * deps: proxy-addr@~1.0.7
1140    - deps: ipaddr.js@0.1.9
1141  * deps: send@0.12.2
1142    - Throw errors early for invalid `extensions` or `index` options
1143    - deps: debug@~2.1.3
1144
11453.20.1 / 2015-02-28
1146===================
1147
1148  * Fix `req.host` when using "trust proxy" hops count
1149  * Fix `req.protocol`/`req.secure` when using "trust proxy" hops count
1150
11513.20.0 / 2015-02-18
1152===================
1153
1154  * Fix `"trust proxy"` setting to inherit when app is mounted
1155  * Generate `ETag`s for all request responses
1156    - No longer restricted to only responses for `GET` and `HEAD` requests
1157  * Use `content-type` to parse `Content-Type` headers
1158  * deps: connect@2.29.0
1159    - Use `content-type` to parse `Content-Type` headers
1160    - deps: body-parser@~1.12.0
1161    - deps: compression@~1.4.1
1162    - deps: connect-timeout@~1.6.0
1163    - deps: cookie-parser@~1.3.4
1164    - deps: cookie-signature@1.0.6
1165    - deps: csurf@~1.7.0
1166    - deps: errorhandler@~1.3.4
1167    - deps: express-session@~1.10.3
1168    - deps: http-errors@~1.3.1
1169    - deps: response-time@~2.3.0
1170    - deps: serve-index@~1.6.2
1171    - deps: serve-static@~1.9.1
1172    - deps: type-is@~1.6.0
1173  * deps: cookie-signature@1.0.6
1174  * deps: send@0.12.1
1175    - Always read the stat size from the file
1176    - Fix mutating passed-in `options`
1177    - deps: mime@1.3.4
1178
11793.19.2 / 2015-02-01
1180===================
1181
1182  * deps: connect@2.28.3
1183    - deps: compression@~1.3.1
1184    - deps: csurf@~1.6.6
1185    - deps: errorhandler@~1.3.3
1186    - deps: express-session@~1.10.2
1187    - deps: serve-index@~1.6.1
1188    - deps: type-is@~1.5.6
1189  * deps: proxy-addr@~1.0.6
1190    - deps: ipaddr.js@0.1.8
1191
11923.19.1 / 2015-01-20
1193===================
1194
1195  * deps: connect@2.28.2
1196    - deps: body-parser@~1.10.2
1197    - deps: serve-static@~1.8.1
1198  * deps: send@0.11.1
1199    - Fix root path disclosure
1200
12013.19.0 / 2015-01-09
1202===================
1203
1204  * Fix `OPTIONS` responses to include the `HEAD` method property
1205  * Use `readline` for prompt in `express(1)`
1206  * deps: commander@2.6.0
1207  * deps: connect@2.28.1
1208    - deps: body-parser@~1.10.1
1209    - deps: compression@~1.3.0
1210    - deps: connect-timeout@~1.5.0
1211    - deps: csurf@~1.6.4
1212    - deps: debug@~2.1.1
1213    - deps: errorhandler@~1.3.2
1214    - deps: express-session@~1.10.1
1215    - deps: finalhandler@0.3.3
1216    - deps: method-override@~2.3.1
1217    - deps: morgan@~1.5.1
1218    - deps: serve-favicon@~2.2.0
1219    - deps: serve-index@~1.6.0
1220    - deps: serve-static@~1.8.0
1221    - deps: type-is@~1.5.5
1222  * deps: debug@~2.1.1
1223  * deps: methods@~1.1.1
1224  * deps: proxy-addr@~1.0.5
1225    - deps: ipaddr.js@0.1.6
1226  * deps: send@0.11.0
1227    - deps: debug@~2.1.1
1228    - deps: etag@~1.5.1
1229    - deps: ms@0.7.0
1230    - deps: on-finished@~2.2.0
1231
12323.18.6 / 2014-12-12
1233===================
1234
1235  * Fix exception in `req.fresh`/`req.stale` without response headers
1236
12373.18.5 / 2014-12-11
1238===================
1239
1240  * deps: connect@2.27.6
1241    - deps: compression@~1.2.2
1242    - deps: express-session@~1.9.3
1243    - deps: http-errors@~1.2.8
1244    - deps: serve-index@~1.5.3
1245    - deps: type-is@~1.5.4
1246
12473.18.4 / 2014-11-23
1248===================
1249
1250  * deps: connect@2.27.4
1251    - deps: body-parser@~1.9.3
1252    - deps: compression@~1.2.1
1253    - deps: errorhandler@~1.2.3
1254    - deps: express-session@~1.9.2
1255    - deps: qs@2.3.3
1256    - deps: serve-favicon@~2.1.7
1257    - deps: serve-static@~1.5.1
1258    - deps: type-is@~1.5.3
1259  * deps: etag@~1.5.1
1260  * deps: proxy-addr@~1.0.4
1261    - deps: ipaddr.js@0.1.5
1262
12633.18.3 / 2014-11-09
1264===================
1265
1266  * deps: connect@2.27.3
1267    - Correctly invoke async callback asynchronously
1268    - deps: csurf@~1.6.3
1269
12703.18.2 / 2014-10-28
1271===================
1272
1273  * deps: connect@2.27.2
1274    - Fix handling of URLs containing `://` in the path
1275    - deps: body-parser@~1.9.2
1276    - deps: qs@2.3.2
1277
12783.18.1 / 2014-10-22
1279===================
1280
1281  * Fix internal `utils.merge` deprecation warnings
1282  * deps: connect@2.27.1
1283    - deps: body-parser@~1.9.1
1284    - deps: express-session@~1.9.1
1285    - deps: finalhandler@0.3.2
1286    - deps: morgan@~1.4.1
1287    - deps: qs@2.3.0
1288    - deps: serve-static@~1.7.1
1289  * deps: send@0.10.1
1290    - deps: on-finished@~2.1.1
1291
12923.18.0 / 2014-10-17
1293===================
1294
1295  * Use `content-disposition` module for `res.attachment`/`res.download`
1296    - Sends standards-compliant `Content-Disposition` header
1297    - Full Unicode support
1298  * Use `etag` module to generate `ETag` headers
1299  * deps: connect@2.27.0
1300    - Use `http-errors` module for creating errors
1301    - Use `utils-merge` module for merging objects
1302    - deps: body-parser@~1.9.0
1303    - deps: compression@~1.2.0
1304    - deps: connect-timeout@~1.4.0
1305    - deps: debug@~2.1.0
1306    - deps: depd@~1.0.0
1307    - deps: express-session@~1.9.0
1308    - deps: finalhandler@0.3.1
1309    - deps: method-override@~2.3.0
1310    - deps: morgan@~1.4.0
1311    - deps: response-time@~2.2.0
1312    - deps: serve-favicon@~2.1.6
1313    - deps: serve-index@~1.5.0
1314    - deps: serve-static@~1.7.0
1315  * deps: debug@~2.1.0
1316    - Implement `DEBUG_FD` env variable support
1317  * deps: depd@~1.0.0
1318  * deps: send@0.10.0
1319    - deps: debug@~2.1.0
1320    - deps: depd@~1.0.0
1321    - deps: etag@~1.5.0
1322
13233.17.8 / 2014-10-15
1324===================
1325
1326  * deps: connect@2.26.6
1327    - deps: compression@~1.1.2
1328    - deps: csurf@~1.6.2
1329    - deps: errorhandler@~1.2.2
1330
13313.17.7 / 2014-10-08
1332===================
1333
1334  * deps: connect@2.26.5
1335    - Fix accepting non-object arguments to `logger`
1336    - deps: serve-static@~1.6.4
1337
13383.17.6 / 2014-10-02
1339===================
1340
1341  * deps: connect@2.26.4
1342    - deps: morgan@~1.3.2
1343    - deps: type-is@~1.5.2
1344
13453.17.5 / 2014-09-24
1346===================
1347
1348  * deps: connect@2.26.3
1349    - deps: body-parser@~1.8.4
1350    - deps: serve-favicon@~2.1.5
1351    - deps: serve-static@~1.6.3
1352  * deps: proxy-addr@~1.0.3
1353    - Use `forwarded` npm module
1354  * deps: send@0.9.3
1355    - deps: etag@~1.4.0
1356
13573.17.4 / 2014-09-19
1358===================
1359
1360  * deps: connect@2.26.2
1361    - deps: body-parser@~1.8.3
1362    - deps: qs@2.2.4
1363
13643.17.3 / 2014-09-18
1365===================
1366
1367  * deps: proxy-addr@~1.0.2
1368    - Fix a global leak when multiple subnets are trusted
1369    - deps: ipaddr.js@0.1.3
1370
13713.17.2 / 2014-09-15
1372===================
1373
1374  * Use `crc` instead of `buffer-crc32` for speed
1375  * deps: connect@2.26.1
1376    - deps: body-parser@~1.8.2
1377    - deps: depd@0.4.5
1378    - deps: express-session@~1.8.2
1379    - deps: morgan@~1.3.1
1380    - deps: serve-favicon@~2.1.3
1381    - deps: serve-static@~1.6.2
1382  * deps: depd@0.4.5
1383  * deps: send@0.9.2
1384    - deps: depd@0.4.5
1385    - deps: etag@~1.3.1
1386    - deps: range-parser@~1.0.2
1387
13883.17.1 / 2014-09-08
1389===================
1390
1391  * Fix error in `req.subdomains` on empty host
1392
13933.17.0 / 2014-09-08
1394===================
1395
1396  * Support `X-Forwarded-Host` in `req.subdomains`
1397  * Support IP address host in `req.subdomains`
1398  * deps: connect@2.26.0
1399    - deps: body-parser@~1.8.1
1400    - deps: compression@~1.1.0
1401    - deps: connect-timeout@~1.3.0
1402    - deps: cookie-parser@~1.3.3
1403    - deps: cookie-signature@1.0.5
1404    - deps: csurf@~1.6.1
1405    - deps: debug@~2.0.0
1406    - deps: errorhandler@~1.2.0
1407    - deps: express-session@~1.8.1
1408    - deps: finalhandler@0.2.0
1409    - deps: fresh@0.2.4
1410    - deps: media-typer@0.3.0
1411    - deps: method-override@~2.2.0
1412    - deps: morgan@~1.3.0
1413    - deps: qs@2.2.3
1414    - deps: serve-favicon@~2.1.3
1415    - deps: serve-index@~1.2.1
1416    - deps: serve-static@~1.6.1
1417    - deps: type-is@~1.5.1
1418    - deps: vhost@~3.0.0
1419  * deps: cookie-signature@1.0.5
1420  * deps: debug@~2.0.0
1421  * deps: fresh@0.2.4
1422  * deps: media-typer@0.3.0
1423    - Throw error when parameter format invalid on parse
1424  * deps: range-parser@~1.0.2
1425  * deps: send@0.9.1
1426    - Add `lastModified` option
1427    - Use `etag` to generate `ETag` header
1428    - deps: debug@~2.0.0
1429    - deps: fresh@0.2.4
1430  * deps: vary@~1.0.0
1431    - Accept valid `Vary` header string as `field`
1432
14333.16.10 / 2014-09-04
1434====================
1435
1436  * deps: connect@2.25.10
1437    - deps: serve-static@~1.5.4
1438  * deps: send@0.8.5
1439    - Fix a path traversal issue when using `root`
1440    - Fix malicious path detection for empty string path
1441
14423.16.9 / 2014-08-29
1443===================
1444
1445  * deps: connect@2.25.9
1446    - deps: body-parser@~1.6.7
1447    - deps: qs@2.2.2
1448
14493.16.8 / 2014-08-27
1450===================
1451
1452  * deps: connect@2.25.8
1453    - deps: body-parser@~1.6.6
1454    - deps: csurf@~1.4.1
1455    - deps: qs@2.2.0
1456
14573.16.7 / 2014-08-18
1458===================
1459
1460  * deps: connect@2.25.7
1461    - deps: body-parser@~1.6.5
1462    - deps: express-session@~1.7.6
1463    - deps: morgan@~1.2.3
1464    - deps: serve-static@~1.5.3
1465  * deps: send@0.8.3
1466    - deps: destroy@1.0.3
1467    - deps: on-finished@2.1.0
1468
14693.16.6 / 2014-08-14
1470===================
1471
1472  * deps: connect@2.25.6
1473    - deps: body-parser@~1.6.4
1474    - deps: qs@1.2.2
1475    - deps: serve-static@~1.5.2
1476  * deps: send@0.8.2
1477    - Work around `fd` leak in Node.js 0.10 for `fs.ReadStream`
1478
14793.16.5 / 2014-08-11
1480===================
1481
1482  * deps: connect@2.25.5
1483    - Fix backwards compatibility in `logger`
1484
14853.16.4 / 2014-08-10
1486===================
1487
1488  * Fix original URL parsing in `res.location`
1489  * deps: connect@2.25.4
1490    - Fix `query` middleware breaking with argument
1491    - deps: body-parser@~1.6.3
1492    - deps: compression@~1.0.11
1493    - deps: connect-timeout@~1.2.2
1494    - deps: express-session@~1.7.5
1495    - deps: method-override@~2.1.3
1496    - deps: on-headers@~1.0.0
1497    - deps: parseurl@~1.3.0
1498    - deps: qs@1.2.1
1499    - deps: response-time@~2.0.1
1500    - deps: serve-index@~1.1.6
1501    - deps: serve-static@~1.5.1
1502  * deps: parseurl@~1.3.0
1503
15043.16.3 / 2014-08-07
1505===================
1506
1507  * deps: connect@2.25.3
1508    - deps: multiparty@3.3.2
1509
15103.16.2 / 2014-08-07
1511===================
1512
1513  * deps: connect@2.25.2
1514    - deps: body-parser@~1.6.2
1515    - deps: qs@1.2.0
1516
15173.16.1 / 2014-08-06
1518===================
1519
1520  * deps: connect@2.25.1
1521    - deps: body-parser@~1.6.1
1522    - deps: qs@1.1.0
1523
15243.16.0 / 2014-08-05
1525===================
1526
1527  * deps: connect@2.25.0
1528    - deps: body-parser@~1.6.0
1529    - deps: compression@~1.0.10
1530    - deps: csurf@~1.4.0
1531    - deps: express-session@~1.7.4
1532    - deps: qs@1.0.2
1533    - deps: serve-static@~1.5.0
1534  * deps: send@0.8.1
1535    - Add `extensions` option
1536
15373.15.3 / 2014-08-04
1538===================
1539
1540  * fix `res.sendfile` regression for serving directory index files
1541  * deps: connect@2.24.3
1542    - deps: serve-index@~1.1.5
1543    - deps: serve-static@~1.4.4
1544  * deps: send@0.7.4
1545    - Fix incorrect 403 on Windows and Node.js 0.11
1546    - Fix serving index files without root dir
1547
15483.15.2 / 2014-07-27
1549===================
1550
1551  * deps: connect@2.24.2
1552    - deps: body-parser@~1.5.2
1553    - deps: depd@0.4.4
1554    - deps: express-session@~1.7.2
1555    - deps: morgan@~1.2.2
1556    - deps: serve-static@~1.4.2
1557  * deps: depd@0.4.4
1558    - Work-around v8 generating empty stack traces
1559  * deps: send@0.7.2
1560    - deps: depd@0.4.4
1561
15623.15.1 / 2014-07-26
1563===================
1564
1565  * deps: connect@2.24.1
1566    - deps: body-parser@~1.5.1
1567    - deps: depd@0.4.3
1568    - deps: express-session@~1.7.1
1569    - deps: morgan@~1.2.1
1570    - deps: serve-index@~1.1.4
1571    - deps: serve-static@~1.4.1
1572  * deps: depd@0.4.3
1573    - Fix exception when global `Error.stackTraceLimit` is too low
1574  * deps: send@0.7.1
1575    - deps: depd@0.4.3
1576
15773.15.0 / 2014-07-22
1578===================
1579
1580  * Fix `req.protocol` for proxy-direct connections
1581  * Pass options from `res.sendfile` to `send`
1582  * deps: connect@2.24.0
1583    - deps: body-parser@~1.5.0
1584    - deps: compression@~1.0.9
1585    - deps: connect-timeout@~1.2.1
1586    - deps: debug@1.0.4
1587    - deps: depd@0.4.2
1588    - deps: express-session@~1.7.0
1589    - deps: finalhandler@0.1.0
1590    - deps: method-override@~2.1.2
1591    - deps: morgan@~1.2.0
1592    - deps: multiparty@3.3.1
1593    - deps: parseurl@~1.2.0
1594    - deps: serve-static@~1.4.0
1595  * deps: debug@1.0.4
1596  * deps: depd@0.4.2
1597    - Add `TRACE_DEPRECATION` environment variable
1598    - Remove non-standard grey color from color output
1599    - Support `--no-deprecation` argument
1600    - Support `--trace-deprecation` argument
1601  * deps: parseurl@~1.2.0
1602    - Cache URLs based on original value
1603    - Remove no-longer-needed URL mis-parse work-around
1604    - Simplify the "fast-path" `RegExp`
1605  * deps: send@0.7.0
1606    - Add `dotfiles` option
1607    - Cap `maxAge` value to 1 year
1608    - deps: debug@1.0.4
1609    - deps: depd@0.4.2
1610
16113.14.0 / 2014-07-11
1612===================
1613
1614 * add explicit "Rosetta Flash JSONP abuse" protection
1615   - previous versions are not vulnerable; this is just explicit protection
1616 * deprecate `res.redirect(url, status)` -- use `res.redirect(status, url)` instead
1617 * fix `res.send(status, num)` to send `num` as json (not error)
1618 * remove unnecessary escaping when `res.jsonp` returns JSON response
1619 * deps: basic-auth@1.0.0
1620   - support empty password
1621   - support empty username
1622 * deps: connect@2.23.0
1623   - deps: debug@1.0.3
1624   - deps: express-session@~1.6.4
1625   - deps: method-override@~2.1.0
1626   - deps: parseurl@~1.1.3
1627   - deps: serve-static@~1.3.1
1628  * deps: debug@1.0.3
1629    - Add support for multiple wildcards in namespaces
1630  * deps: methods@1.1.0
1631    - add `CONNECT`
1632  * deps: parseurl@~1.1.3
1633    - faster parsing of href-only URLs
1634
16353.13.0 / 2014-07-03
1636===================
1637
1638 * add deprecation message to `app.configure`
1639 * add deprecation message to `req.auth`
1640 * use `basic-auth` to parse `Authorization` header
1641 * deps: connect@2.22.0
1642   - deps: csurf@~1.3.0
1643   - deps: express-session@~1.6.1
1644   - deps: multiparty@3.3.0
1645   - deps: serve-static@~1.3.0
1646 * deps: send@0.5.0
1647   - Accept string for `maxage` (converted by `ms`)
1648   - Include link in default redirect response
1649
16503.12.1 / 2014-06-26
1651===================
1652
1653 * deps: connect@2.21.1
1654   - deps: cookie-parser@1.3.2
1655   - deps: cookie-signature@1.0.4
1656   - deps: express-session@~1.5.2
1657   - deps: type-is@~1.3.2
1658 * deps: cookie-signature@1.0.4
1659   - fix for timing attacks
1660
16613.12.0 / 2014-06-21
1662===================
1663
1664 * use `media-typer` to alter content-type charset
1665 * deps: connect@2.21.0
1666   - deprecate `connect(middleware)` -- use `app.use(middleware)` instead
1667   - deprecate `connect.createServer()` -- use `connect()` instead
1668   - fix `res.setHeader()` patch to work with with get -> append -> set pattern
1669   - deps: compression@~1.0.8
1670   - deps: errorhandler@~1.1.1
1671   - deps: express-session@~1.5.0
1672   - deps: serve-index@~1.1.3
1673
16743.11.0 / 2014-06-19
1675===================
1676
1677 * deprecate things with `depd` module
1678 * deps: buffer-crc32@0.2.3
1679 * deps: connect@2.20.2
1680   - deprecate `verify` option to `json` -- use `body-parser` npm module instead
1681   - deprecate `verify` option to `urlencoded` -- use `body-parser` npm module instead
1682   - deprecate things with `depd` module
1683   - use `finalhandler` for final response handling
1684   - use `media-typer` to parse `content-type` for charset
1685   - deps: body-parser@1.4.3
1686   - deps: connect-timeout@1.1.1
1687   - deps: cookie-parser@1.3.1
1688   - deps: csurf@1.2.2
1689   - deps: errorhandler@1.1.0
1690   - deps: express-session@1.4.0
1691   - deps: multiparty@3.2.9
1692   - deps: serve-index@1.1.2
1693   - deps: type-is@1.3.1
1694   - deps: vhost@2.0.0
1695
16963.10.5 / 2014-06-11
1697===================
1698
1699 * deps: connect@2.19.6
1700   - deps: body-parser@1.3.1
1701   - deps: compression@1.0.7
1702   - deps: debug@1.0.2
1703   - deps: serve-index@1.1.1
1704   - deps: serve-static@1.2.3
1705 * deps: debug@1.0.2
1706 * deps: send@0.4.3
1707   - Do not throw un-catchable error on file open race condition
1708   - Use `escape-html` for HTML escaping
1709   - deps: debug@1.0.2
1710   - deps: finished@1.2.2
1711   - deps: fresh@0.2.2
1712
17133.10.4 / 2014-06-09
1714===================
1715
1716 * deps: connect@2.19.5
1717   - fix "event emitter leak" warnings
1718   - deps: csurf@1.2.1
1719   - deps: debug@1.0.1
1720   - deps: serve-static@1.2.2
1721   - deps: type-is@1.2.1
1722 * deps: debug@1.0.1
1723 * deps: send@0.4.2
1724   - fix "event emitter leak" warnings
1725   - deps: finished@1.2.1
1726   - deps: debug@1.0.1
1727
17283.10.3 / 2014-06-05
1729===================
1730
1731 * use `vary` module for `res.vary`
1732 * deps: connect@2.19.4
1733   - deps: errorhandler@1.0.2
1734   - deps: method-override@2.0.2
1735   - deps: serve-favicon@2.0.1
1736 * deps: debug@1.0.0
1737
17383.10.2 / 2014-06-03
1739===================
1740
1741 * deps: connect@2.19.3
1742   - deps: compression@1.0.6
1743
17443.10.1 / 2014-06-03
1745===================
1746
1747 * deps: connect@2.19.2
1748   - deps: compression@1.0.4
1749 * deps: proxy-addr@1.0.1
1750
17513.10.0 / 2014-06-02
1752===================
1753
1754 * deps: connect@2.19.1
1755   - deprecate `methodOverride()` -- use `method-override` npm module instead
1756   - deps: body-parser@1.3.0
1757   - deps: method-override@2.0.1
1758   - deps: multiparty@3.2.8
1759   - deps: response-time@2.0.0
1760   - deps: serve-static@1.2.1
1761 * deps: methods@1.0.1
1762 * deps: send@0.4.1
1763   - Send `max-age` in `Cache-Control` in correct format
1764
17653.9.0 / 2014-05-30
1766==================
1767
1768 * custom etag control with `app.set('etag', val)`
1769   - `app.set('etag', function(body, encoding){ return '"etag"' })` custom etag generation
1770   - `app.set('etag', 'weak')` weak tag
1771   - `app.set('etag', 'strong')` strong etag
1772   - `app.set('etag', false)` turn off
1773   - `app.set('etag', true)` standard etag
1774 * Include ETag in HEAD requests
1775 * mark `res.send` ETag as weak and reduce collisions
1776 * update connect to 2.18.0
1777   - deps: compression@1.0.3
1778   - deps: serve-index@1.1.0
1779   - deps: serve-static@1.2.0
1780 * update send to 0.4.0
1781   - Calculate ETag with md5 for reduced collisions
1782   - Ignore stream errors after request ends
1783   - deps: debug@0.8.1
1784
17853.8.1 / 2014-05-27
1786==================
1787
1788 * update connect to 2.17.3
1789   - deps: body-parser@1.2.2
1790   - deps: express-session@1.2.1
1791   - deps: method-override@1.0.2
1792
17933.8.0 / 2014-05-21
1794==================
1795
1796 * keep previous `Content-Type` for `res.jsonp`
1797 * set proper `charset` in `Content-Type` for `res.send`
1798 * update connect to 2.17.1
1799   - fix `res.charset` appending charset when `content-type` has one
1800   - deps: express-session@1.2.0
1801   - deps: morgan@1.1.1
1802   - deps: serve-index@1.0.3
1803
18043.7.0 / 2014-05-18
1805==================
1806
1807 * proper proxy trust with `app.set('trust proxy', trust)`
1808   - `app.set('trust proxy', 1)` trust first hop
1809   - `app.set('trust proxy', 'loopback')` trust loopback addresses
1810   - `app.set('trust proxy', '10.0.0.1')` trust single IP
1811   - `app.set('trust proxy', '10.0.0.1/16')` trust subnet
1812   - `app.set('trust proxy', '10.0.0.1, 10.0.0.2')` trust list
1813   - `app.set('trust proxy', false)` turn off
1814   - `app.set('trust proxy', true)` trust everything
1815 * update connect to 2.16.2
1816   - deprecate `res.headerSent` -- use `res.headersSent`
1817   - deprecate `res.on("header")` -- use on-headers module instead
1818   - fix edge-case in `res.appendHeader` that would append in wrong order
1819   - json: use body-parser
1820   - urlencoded: use body-parser
1821   - dep: bytes@1.0.0
1822   - dep: cookie-parser@1.1.0
1823   - dep: csurf@1.2.0
1824   - dep: express-session@1.1.0
1825   - dep: method-override@1.0.1
1826
18273.6.0 / 2014-05-09
1828==================
1829
1830 * deprecate `app.del()` -- use `app.delete()` instead
1831 * deprecate `res.json(obj, status)` -- use `res.json(status, obj)` instead
1832   - the edge-case `res.json(status, num)` requires `res.status(status).json(num)`
1833 * deprecate `res.jsonp(obj, status)` -- use `res.jsonp(status, obj)` instead
1834   - the edge-case `res.jsonp(status, num)` requires `res.status(status).jsonp(num)`
1835 * support PURGE method
1836   - add `app.purge`
1837   - add `router.purge`
1838   - include PURGE in `app.all`
1839 * update connect to 2.15.0
1840   * Add `res.appendHeader`
1841   * Call error stack even when response has been sent
1842   * Patch `res.headerSent` to return Boolean
1843   * Patch `res.headersSent` for node.js 0.8
1844   * Prevent default 404 handler after response sent
1845   * dep: compression@1.0.2
1846   * dep: connect-timeout@1.1.0
1847   * dep: debug@^0.8.0
1848   * dep: errorhandler@1.0.1
1849   * dep: express-session@1.0.4
1850   * dep: morgan@1.0.1
1851   * dep: serve-favicon@2.0.0
1852   * dep: serve-index@1.0.2
1853 * update debug to 0.8.0
1854   * add `enable()` method
1855   * change from stderr to stdout
1856 * update methods to 1.0.0
1857   - add PURGE
1858 * update mkdirp to 0.5.0
1859
18603.5.3 / 2014-05-08
1861==================
1862
1863 * fix `req.host` for IPv6 literals
1864 * fix `res.jsonp` error if callback param is object
1865
18663.5.2 / 2014-04-24
1867==================
1868
1869 * update connect to 2.14.5
1870 * update cookie to 0.1.2
1871 * update mkdirp to 0.4.0
1872 * update send to 0.3.0
1873
18743.5.1 / 2014-03-25
1875==================
1876
1877 * pin less-middleware in generated app
1878
18793.5.0 / 2014-03-06
1880==================
1881
1882 * bump deps
1883
18843.4.8 / 2014-01-13
1885==================
1886
1887 * prevent incorrect automatic OPTIONS responses #1868 @dpatti
1888 * update binary and examples for jade 1.0 #1876 @yossi, #1877 @reqshark, #1892 @matheusazzi
1889 * throw 400 in case of malformed paths @rlidwka
1890
18913.4.7 / 2013-12-10
1892==================
1893
1894 * update connect
1895
18963.4.6 / 2013-12-01
1897==================
1898
1899 * update connect (raw-body)
1900
19013.4.5 / 2013-11-27
1902==================
1903
1904 * update connect
1905 * res.location: remove leading ./ #1802 @kapouer
1906 * res.redirect: fix `res.redirect('toString') #1829 @michaelficarra
1907 * res.send: always send ETag when content-length > 0
1908 * router: add Router.all() method
1909
19103.4.4 / 2013-10-29
1911==================
1912
1913 * update connect
1914 * update supertest
1915 * update methods
1916 * express(1): replace bodyParser() with urlencoded() and json() #1795 @chirag04
1917
19183.4.3 / 2013-10-23
1919==================
1920
1921 * update connect
1922
19233.4.2 / 2013-10-18
1924==================
1925
1926 * update connect
1927 * downgrade commander
1928
19293.4.1 / 2013-10-15
1930==================
1931
1932 * update connect
1933 * update commander
1934 * jsonp: check if callback is a function
1935 * router: wrap encodeURIComponent in a try/catch #1735 (@lxe)
1936 * res.format: now includes charset @1747 (@sorribas)
1937 * res.links: allow multiple calls @1746 (@sorribas)
1938
19393.4.0 / 2013-09-07
1940==================
1941
1942 * add res.vary(). Closes #1682
1943 * update connect
1944
19453.3.8 / 2013-09-02
1946==================
1947
1948 * update connect
1949
19503.3.7 / 2013-08-28
1951==================
1952
1953 * update connect
1954
19553.3.6 / 2013-08-27
1956==================
1957
1958 * Revert "remove charset from json responses. Closes #1631" (causes issues in some clients)
1959 * add: req.accepts take an argument list
1960
19613.3.4 / 2013-07-08
1962==================
1963
1964 * update send and connect
1965
19663.3.3 / 2013-07-04
1967==================
1968
1969 * update connect
1970
19713.3.2 / 2013-07-03
1972==================
1973
1974 * update connect
1975 * update send
1976 * remove .version export
1977
19783.3.1 / 2013-06-27
1979==================
1980
1981 * update connect
1982
19833.3.0 / 2013-06-26
1984==================
1985
1986 * update connect
1987 * add support for multiple X-Forwarded-Proto values. Closes #1646
1988 * change: remove charset from json responses. Closes #1631
1989 * change: return actual booleans from req.accept* functions
1990 * fix jsonp callback array throw
1991
19923.2.6 / 2013-06-02
1993==================
1994
1995 * update connect
1996
19973.2.5 / 2013-05-21
1998==================
1999
2000 * update connect
2001 * update node-cookie
2002 * add: throw a meaningful error when there is no default engine
2003 * change generation of ETags with res.send() to GET requests only. Closes #1619
2004
20053.2.4 / 2013-05-09
2006==================
2007
2008  * fix `req.subdomains` when no Host is present
2009  * fix `req.host` when no Host is present, return undefined
2010
20113.2.3 / 2013-05-07
2012==================
2013
2014  * update connect / qs
2015
20163.2.2 / 2013-05-03
2017==================
2018
2019  * update qs
2020
20213.2.1 / 2013-04-29
2022==================
2023
2024  * add app.VERB() paths array deprecation warning
2025  * update connect
2026  * update qs and remove all ~ semver crap
2027  * fix: accept number as value of Signed Cookie
2028
20293.2.0 / 2013-04-15
2030==================
2031
2032  * add "view" constructor setting to override view behaviour
2033  * add req.acceptsEncoding(name)
2034  * add req.acceptedEncodings
2035  * revert cookie signature change causing session race conditions
2036  * fix sorting of Accept values of the same quality
2037
20383.1.2 / 2013-04-12
2039==================
2040
2041  * add support for custom Accept parameters
2042  * update cookie-signature
2043
20443.1.1 / 2013-04-01
2045==================
2046
2047  * add X-Forwarded-Host support to `req.host`
2048  * fix relative redirects
2049  * update mkdirp
2050  * update buffer-crc32
2051  * remove legacy app.configure() method from app template.
2052
20533.1.0 / 2013-01-25
2054==================
2055
2056  * add support for leading "." in "view engine" setting
2057  * add array support to `res.set()`
2058  * add node 0.8.x to travis.yml
2059  * add "subdomain offset" setting for tweaking `req.subdomains`
2060  * add `res.location(url)` implementing `res.redirect()`-like setting of Location
2061  * use app.get() for x-powered-by setting for inheritance
2062  * fix colons in passwords for `req.auth`
2063
20643.0.6 / 2013-01-04
2065==================
2066
2067  * add http verb methods to Router
2068  * update connect
2069  * fix mangling of the `res.cookie()` options object
2070  * fix jsonp whitespace escape. Closes #1132
2071
20723.0.5 / 2012-12-19
2073==================
2074
2075  * add throwing when a non-function is passed to a route
2076  * fix: explicitly remove Transfer-Encoding header from 204 and 304 responses
2077  * revert "add 'etag' option"
2078
20793.0.4 / 2012-12-05
2080==================
2081
2082  * add 'etag' option to disable `res.send()` Etags
2083  * add escaping of urls in text/plain in `res.redirect()`
2084    for old browsers interpreting as html
2085  * change crc32 module for a more liberal license
2086  * update connect
2087
20883.0.3 / 2012-11-13
2089==================
2090
2091  * update connect
2092  * update cookie module
2093  * fix cookie max-age
2094
20953.0.2 / 2012-11-08
2096==================
2097
2098  * add OPTIONS to cors example. Closes #1398
2099  * fix route chaining regression. Closes #1397
2100
21013.0.1 / 2012-11-01
2102==================
2103
2104  * update connect
2105
21063.0.0 / 2012-10-23
2107==================
2108
2109  * add `make clean`
2110  * add "Basic" check to req.auth
2111  * add `req.auth` test coverage
2112  * add cb && cb(payload) to `res.jsonp()`. Closes #1374
2113  * add backwards compat for `res.redirect()` status. Closes #1336
2114  * add support for `res.json()` to retain previously defined Content-Types. Closes #1349
2115  * update connect
2116  * change `res.redirect()` to utilize a pathname-relative Location again. Closes #1382
2117  * remove non-primitive string support for `res.send()`
2118  * fix view-locals example. Closes #1370
2119  * fix route-separation example
2120
21213.0.0rc5 / 2012-09-18
2122==================
2123
2124  * update connect
2125  * add redis search example
2126  * add static-files example
2127  * add "x-powered-by" setting (`app.disable('x-powered-by')`)
2128  * add "application/octet-stream" redirect Accept test case. Closes #1317
2129
21303.0.0rc4 / 2012-08-30
2131==================
2132
2133  * add `res.jsonp()`. Closes #1307
2134  * add "verbose errors" option to error-pages example
2135  * add another route example to express(1) so people are not so confused
2136  * add redis online user activity tracking example
2137  * update connect dep
2138  * fix etag quoting. Closes #1310
2139  * fix error-pages 404 status
2140  * fix jsonp callback char restrictions
2141  * remove old OPTIONS default response
2142
21433.0.0rc3 / 2012-08-13
2144==================
2145
2146  * update connect dep
2147  * fix signed cookies to work with `connect.cookieParser()` ("s:" prefix was missing) [tnydwrds]
2148  * fix `res.render()` clobbering of "locals"
2149
21503.0.0rc2 / 2012-08-03
2151==================
2152
2153  * add CORS example
2154  * update connect dep
2155  * deprecate `.createServer()` & remove old stale examples
2156  * fix: escape `res.redirect()` link
2157  * fix vhost example
2158
21593.0.0rc1 / 2012-07-24
2160==================
2161
2162  * add more examples to view-locals
2163  * add scheme-relative redirects (`res.redirect("//foo.com")`) support
2164  * update cookie dep
2165  * update connect dep
2166  * update send dep
2167  * fix `express(1)` -h flag, use -H for hogan. Closes #1245
2168  * fix `res.sendfile()` socket error handling regression
2169
21703.0.0beta7 / 2012-07-16
2171==================
2172
2173  * update connect dep for `send()` root normalization regression
2174
21753.0.0beta6 / 2012-07-13
2176==================
2177
2178  * add `err.view` property for view errors. Closes #1226
2179  * add "jsonp callback name" setting
2180  * add support for "/foo/:bar*" non-greedy matches
2181  * change `res.sendfile()` to use `send()` module
2182  * change `res.send` to use "response-send" module
2183  * remove `app.locals.use` and `res.locals.use`, use regular middleware
2184
21853.0.0beta5 / 2012-07-03
2186==================
2187
2188  * add "make check" support
2189  * add route-map example
2190  * add `res.json(obj, status)` support back for BC
2191  * add "methods" dep, remove internal methods module
2192  * update connect dep
2193  * update auth example to utilize cores pbkdf2
2194  * updated tests to use "supertest"
2195
21963.0.0beta4 / 2012-06-25
2197==================
2198
2199  * Added `req.auth`
2200  * Added `req.range(size)`
2201  * Added `res.links(obj)`
2202  * Added `res.send(body, status)` support back for backwards compat
2203  * Added `.default()` support to `res.format()`
2204  * Added 2xx / 304 check to `req.fresh`
2205  * Revert "Added + support to the router"
2206  * Fixed `res.send()` freshness check, respect res.statusCode
2207
22083.0.0beta3 / 2012-06-15
2209==================
2210
2211  * Added hogan `--hjs` to express(1) [nullfirm]
2212  * Added another example to content-negotiation
2213  * Added `fresh` dep
2214  * Changed: `res.send()` always checks freshness
2215  * Fixed: expose connects mime module. Closes #1165
2216
22173.0.0beta2 / 2012-06-06
2218==================
2219
2220  * Added `+` support to the router
2221  * Added `req.host`
2222  * Changed `req.param()` to check route first
2223  * Update connect dep
2224
22253.0.0beta1 / 2012-06-01
2226==================
2227
2228  * Added `res.format()` callback to override default 406 behaviour
2229  * Fixed `res.redirect()` 406. Closes #1154
2230
22313.0.0alpha5 / 2012-05-30
2232==================
2233
2234  * Added `req.ip`
2235  * Added `{ signed: true }` option to `res.cookie()`
2236  * Removed `res.signedCookie()`
2237  * Changed: dont reverse `req.ips`
2238  * Fixed "trust proxy" setting check for `req.ips`
2239
22403.0.0alpha4 / 2012-05-09
2241==================
2242
2243  * Added: allow `[]` in jsonp callback. Closes #1128
2244  * Added `PORT` env var support in generated template. Closes #1118 [benatkin]
2245  * Updated: connect 2.2.2
2246
22473.0.0alpha3 / 2012-05-04
2248==================
2249
2250  * Added public `app.routes`. Closes #887
2251  * Added _view-locals_ example
2252  * Added _mvc_ example
2253  * Added `res.locals.use()`. Closes #1120
2254  * Added conditional-GET support to `res.send()`
2255  * Added: coerce `res.set()` values to strings
2256  * Changed: moved `static()` in generated apps below router
2257  * Changed: `res.send()` only set ETag when not previously set
2258  * Changed connect 2.2.1 dep
2259  * Changed: `make test` now runs unit / acceptance tests
2260  * Fixed req/res proto inheritance
2261
22623.0.0alpha2 / 2012-04-26
2263==================
2264
2265  * Added `make benchmark` back
2266  * Added `res.send()` support for `String` objects
2267  * Added client-side data exposing example
2268  * Added `res.header()` and `req.header()` aliases for BC
2269  * Added `express.createServer()` for BC
2270  * Perf: memoize parsed urls
2271  * Perf: connect 2.2.0 dep
2272  * Changed: make `expressInit()` middleware self-aware
2273  * Fixed: use app.get() for all core settings
2274  * Fixed redis session example
2275  * Fixed session example. Closes #1105
2276  * Fixed generated express dep. Closes #1078
2277
22783.0.0alpha1 / 2012-04-15
2279==================
2280
2281  * Added `app.locals.use(callback)`
2282  * Added `app.locals` object
2283  * Added `app.locals(obj)`
2284  * Added `res.locals` object
2285  * Added `res.locals(obj)`
2286  * Added `res.format()` for content-negotiation
2287  * Added `app.engine()`
2288  * Added `res.cookie()` JSON cookie support
2289  * Added "trust proxy" setting
2290  * Added `req.subdomains`
2291  * Added `req.protocol`
2292  * Added `req.secure`
2293  * Added `req.path`
2294  * Added `req.ips`
2295  * Added `req.fresh`
2296  * Added `req.stale`
2297  * Added comma-delimited / array support for `req.accepts()`
2298  * Added debug instrumentation
2299  * Added `res.set(obj)`
2300  * Added `res.set(field, value)`
2301  * Added `res.get(field)`
2302  * Added `app.get(setting)`. Closes #842
2303  * Added `req.acceptsLanguage()`
2304  * Added `req.acceptsCharset()`
2305  * Added `req.accepted`
2306  * Added `req.acceptedLanguages`
2307  * Added `req.acceptedCharsets`
2308  * Added "json replacer" setting
2309  * Added "json spaces" setting
2310  * Added X-Forwarded-Proto support to `res.redirect()`. Closes #92
2311  * Added `--less` support to express(1)
2312  * Added `express.response` prototype
2313  * Added `express.request` prototype
2314  * Added `express.application` prototype
2315  * Added `app.path()`
2316  * Added `app.render()`
2317  * Added `res.type()` to replace `res.contentType()`
2318  * Changed: `res.redirect()` to add relative support
2319  * Changed: enable "jsonp callback" by default
2320  * Changed: renamed "case sensitive routes" to "case sensitive routing"
2321  * Rewrite of all tests with mocha
2322  * Removed "root" setting
2323  * Removed `res.redirect('home')` support
2324  * Removed `req.notify()`
2325  * Removed `app.register()`
2326  * Removed `app.redirect()`
2327  * Removed `app.is()`
2328  * Removed `app.helpers()`
2329  * Removed `app.dynamicHelpers()`
2330  * Fixed `res.sendfile()` with non-GET. Closes #723
2331  * Fixed express(1) public dir for windows. Closes #866
2332
23332.5.9/ 2012-04-02
2334==================
2335
2336  * Added support for PURGE request method [pbuyle]
2337  * Fixed `express(1)` generated app `app.address()` before `listening` [mmalecki]
2338
23392.5.8 / 2012-02-08
2340==================
2341
2342  * Update mkdirp dep. Closes #991
2343
23442.5.7 / 2012-02-06
2345==================
2346
2347  * Fixed `app.all` duplicate DELETE requests [mscdex]
2348
23492.5.6 / 2012-01-13
2350==================
2351
2352  * Updated hamljs dev dep. Closes #953
2353
23542.5.5 / 2012-01-08
2355==================
2356
2357  * Fixed: set `filename` on cached templates [matthewleon]
2358
23592.5.4 / 2012-01-02
2360==================
2361
2362  * Fixed `express(1)` eol on 0.4.x. Closes #947
2363
23642.5.3 / 2011-12-30
2365==================
2366
2367  * Fixed `req.is()` when a charset is present
2368
23692.5.2 / 2011-12-10
2370==================
2371
2372  * Fixed: express(1) LF -> CRLF for windows
2373
23742.5.1 / 2011-11-17
2375==================
2376
2377  * Changed: updated connect to 1.8.x
2378  * Removed sass.js support from express(1)
2379
23802.5.0 / 2011-10-24
2381==================
2382
2383  * Added ./routes dir for generated app by default
2384  * Added npm install reminder to express(1) app gen
2385  * Added 0.5.x support
2386  * Removed `make test-cov` since it wont work with node 0.5.x
2387  * Fixed express(1) public dir for windows. Closes #866
2388
23892.4.7 / 2011-10-05
2390==================
2391
2392  * Added mkdirp to express(1). Closes #795
2393  * Added simple _json-config_ example
2394  * Added  shorthand for the parsed request's pathname via `req.path`
2395  * Changed connect dep to 1.7.x to fix npm issue...
2396  * Fixed `res.redirect()` __HEAD__ support. [reported by xerox]
2397  * Fixed `req.flash()`, only escape args
2398  * Fixed absolute path checking on windows. Closes #829 [reported by andrewpmckenzie]
2399
24002.4.6 / 2011-08-22
2401==================
2402
2403  * Fixed multiple param callback regression. Closes #824 [reported by TroyGoode]
2404
24052.4.5 / 2011-08-19
2406==================
2407
2408  * Added support for routes to handle errors. Closes #809
2409  * Added `app.routes.all()`. Closes #803
2410  * Added "basepath" setting to work in conjunction with reverse proxies etc.
2411  * Refactored `Route` to use a single array of callbacks
2412  * Added support for multiple callbacks for `app.param()`. Closes #801
2413Closes #805
2414  * Changed: removed .call(self) for route callbacks
2415  * Dependency: `qs >= 0.3.1`
2416  * Fixed `res.redirect()` on windows due to `join()` usage. Closes #808
2417
24182.4.4 / 2011-08-05
2419==================
2420
2421  * Fixed `res.header()` intention of a set, even when `undefined`
2422  * Fixed `*`, value no longer required
2423  * Fixed `res.send(204)` support. Closes #771
2424
24252.4.3 / 2011-07-14
2426==================
2427
2428  * Added docs for `status` option special-case. Closes #739
2429  * Fixed `options.filename`, exposing the view path to template engines
2430
24312.4.2. / 2011-07-06
2432==================
2433
2434  * Revert "removed jsonp stripping" for XSS
2435
24362.4.1 / 2011-07-06
2437==================
2438
2439  * Added `res.json()` JSONP support. Closes #737
2440  * Added _extending-templates_ example. Closes #730
2441  * Added "strict routing" setting for trailing slashes
2442  * Added support for multiple envs in `app.configure()` calls. Closes #735
2443  * Changed: `res.send()` using `res.json()`
2444  * Changed: when cookie `path === null` don't default it
2445  * Changed; default cookie path to "home" setting. Closes #731
2446  * Removed _pids/logs_ creation from express(1)
2447
24482.4.0 / 2011-06-28
2449==================
2450
2451  * Added chainable `res.status(code)`
2452  * Added `res.json()`, an explicit version of `res.send(obj)`
2453  * Added simple web-service example
2454
24552.3.12 / 2011-06-22
2456==================
2457
2458  * \#express is now on freenode! come join!
2459  * Added `req.get(field, param)`
2460  * Added links to Japanese documentation, thanks @hideyukisaito!
2461  * Added; the `express(1)` generated app outputs the env
2462  * Added `content-negotiation` example
2463  * Dependency: connect >= 1.5.1 < 2.0.0
2464  * Fixed view layout bug. Closes #720
2465  * Fixed; ignore body on 304. Closes #701
2466
24672.3.11 / 2011-06-04
2468==================
2469
2470  * Added `npm test`
2471  * Removed generation of dummy test file from `express(1)`
2472  * Fixed; `express(1)` adds express as a dep
2473  * Fixed; prune on `prepublish`
2474
24752.3.10 / 2011-05-27
2476==================
2477
2478  * Added `req.route`, exposing the current route
2479  * Added _package.json_ generation support to `express(1)`
2480  * Fixed call to `app.param()` function for optional params. Closes #682
2481
24822.3.9 / 2011-05-25
2483==================
2484
2485  * Fixed bug-ish with `../' in `res.partial()` calls
2486
24872.3.8 / 2011-05-24
2488==================
2489
2490  * Fixed `app.options()`
2491
24922.3.7 / 2011-05-23
2493==================
2494
2495  * Added route `Collection`, ex: `app.get('/user/:id').remove();`
2496  * Added support for `app.param(fn)` to define param logic
2497  * Removed `app.param()` support for callback with return value
2498  * Removed module.parent check from express(1) generated app. Closes #670
2499  * Refactored router. Closes #639
2500
25012.3.6 / 2011-05-20
2502==================
2503
2504  * Changed; using devDependencies instead of git submodules
2505  * Fixed redis session example
2506  * Fixed markdown example
2507  * Fixed view caching, should not be enabled in development
2508
25092.3.5 / 2011-05-20
2510==================
2511
2512  * Added export `.view` as alias for `.View`
2513
25142.3.4 / 2011-05-08
2515==================
2516
2517  * Added `./examples/say`
2518  * Fixed `res.sendfile()` bug preventing the transfer of files with spaces
2519
25202.3.3 / 2011-05-03
2521==================
2522
2523  * Added "case sensitive routes" option.
2524  * Changed; split methods supported per rfc [slaskis]
2525  * Fixed route-specific middleware when using the same callback function several times
2526
25272.3.2 / 2011-04-27
2528==================
2529
2530  * Fixed view hints
2531
25322.3.1 / 2011-04-26
2533==================
2534
2535  * Added `app.match()` as `app.match.all()`
2536  * Added `app.lookup()` as `app.lookup.all()`
2537  * Added `app.remove()` for `app.remove.all()`
2538  * Added `app.remove.VERB()`
2539  * Fixed template caching collision issue. Closes #644
2540  * Moved router over from connect and started refactor
2541
25422.3.0 / 2011-04-25
2543==================
2544
2545  * Added options support to `res.clearCookie()`
2546  * Added `res.helpers()` as alias of `res.locals()`
2547  * Added; json defaults to UTF-8 with `res.send()`. Closes #632. [Daniel   * Dependency `connect >= 1.4.0`
2548  * Changed; auto set Content-Type in res.attachement [Aaron Heckmann]
2549  * Renamed "cache views" to "view cache". Closes #628
2550  * Fixed caching of views when using several apps. Closes #637
2551  * Fixed gotcha invoking `app.param()` callbacks once per route middleware.
2552Closes #638
2553  * Fixed partial lookup precedence. Closes #631
2554Shaw]
2555
25562.2.2 / 2011-04-12
2557==================
2558
2559  * Added second callback support for `res.download()` connection errors
2560  * Fixed `filename` option passing to template engine
2561
25622.2.1 / 2011-04-04
2563==================
2564
2565  * Added `layout(path)` helper to change the layout within a view. Closes #610
2566  * Fixed `partial()` collection object support.
2567    Previously only anything with `.length` would work.
2568    When `.length` is present one must still be aware of holes,
2569    however now `{ collection: {foo: 'bar'}}` is valid, exposes
2570    `keyInCollection` and `keysInCollection`.
2571
2572  * Performance improved with better view caching
2573  * Removed `request` and `response` locals
2574  * Changed; errorHandler page title is now `Express` instead of `Connect`
2575
25762.2.0 / 2011-03-30
2577==================
2578
2579  * Added `app.lookup.VERB()`, ex `app.lookup.put('/user/:id')`. Closes #606
2580  * Added `app.match.VERB()`, ex `app.match.put('/user/12')`. Closes #606
2581  * Added `app.VERB(path)` as alias of `app.lookup.VERB()`.
2582  * Dependency `connect >= 1.2.0`
2583
25842.1.1 / 2011-03-29
2585==================
2586
2587  * Added; expose `err.view` object when failing to locate a view
2588  * Fixed `res.partial()` call `next(err)` when no callback is given [reported by aheckmann]
2589  * Fixed; `res.send(undefined)` responds with 204 [aheckmann]
2590
25912.1.0 / 2011-03-24
2592==================
2593
2594  * Added `<root>/_?<name>` partial lookup support. Closes #447
2595  * Added `request`, `response`, and `app` local variables
2596  * Added `settings` local variable, containing the app's settings
2597  * Added `req.flash()` exception if `req.session` is not available
2598  * Added `res.send(bool)` support (json response)
2599  * Fixed stylus example for latest version
2600  * Fixed; wrap try/catch around `res.render()`
2601
26022.0.0 / 2011-03-17
2603==================
2604
2605  * Fixed up index view path alternative.
2606  * Changed; `res.locals()` without object returns the locals
2607
26082.0.0rc3 / 2011-03-17
2609==================
2610
2611  * Added `res.locals(obj)` to compliment `res.local(key, val)`
2612  * Added `res.partial()` callback support
2613  * Fixed recursive error reporting issue in `res.render()`
2614
26152.0.0rc2 / 2011-03-17
2616==================
2617
2618  * Changed; `partial()` "locals" are now optional
2619  * Fixed `SlowBuffer` support. Closes #584 [reported by tyrda01]
2620  * Fixed .filename view engine option [reported by drudge]
2621  * Fixed blog example
2622  * Fixed `{req,res}.app` reference when mounting [Ben Weaver]
2623
26242.0.0rc / 2011-03-14
2625==================
2626
2627  * Fixed; expose `HTTPSServer` constructor
2628  * Fixed express(1) default test charset. Closes #579 [reported by secoif]
2629  * Fixed; default charset to utf-8 instead of utf8 for lame IE [reported by NickP]
2630
26312.0.0beta3 / 2011-03-09
2632==================
2633
2634  * Added support for `res.contentType()` literal
2635    The original `res.contentType('.json')`,
2636    `res.contentType('application/json')`, and `res.contentType('json')`
2637    will work now.
2638  * Added `res.render()` status option support back
2639  * Added charset option for `res.render()`
2640  * Added `.charset` support (via connect 1.0.4)
2641  * Added view resolution hints when in development and a lookup fails
2642  * Added layout lookup support relative to the page view.
2643    For example while rendering `./views/user/index.jade` if you create
2644    `./views/user/layout.jade` it will be used in favour of the root layout.
2645  * Fixed `res.redirect()`. RFC states absolute url [reported by unlink]
2646  * Fixed; default `res.send()` string charset to utf8
2647  * Removed `Partial` constructor (not currently used)
2648
26492.0.0beta2 / 2011-03-07
2650==================
2651
2652  * Added res.render() `.locals` support back to aid in migration process
2653  * Fixed flash example
2654
26552.0.0beta / 2011-03-03
2656==================
2657
2658  * Added HTTPS support
2659  * Added `res.cookie()` maxAge support
2660  * Added `req.header()` _Referrer_ / _Referer_ special-case, either works
2661  * Added mount support for `res.redirect()`, now respects the mount-point
2662  * Added `union()` util, taking place of `merge(clone())` combo
2663  * Added stylus support to express(1) generated app
2664  * Added secret to session middleware used in examples and generated app
2665  * Added `res.local(name, val)` for progressive view locals
2666  * Added default param support to `req.param(name, default)`
2667  * Added `app.disabled()` and `app.enabled()`
2668  * Added `app.register()` support for omitting leading ".", either works
2669  * Added `res.partial()`, using the same interface as `partial()` within a view. Closes #539
2670  * Added `app.param()` to map route params to async/sync logic
2671  * Added; aliased `app.helpers()` as `app.locals()`. Closes #481
2672  * Added extname with no leading "." support to `res.contentType()`
2673  * Added `cache views` setting, defaulting to enabled in "production" env
2674  * Added index file partial resolution, eg: partial('user') may try _views/user/index.jade_.
2675  * Added `req.accepts()` support for extensions
2676  * Changed; `res.download()` and `res.sendfile()` now utilize Connect's
2677    static file server `connect.static.send()`.
2678  * Changed; replaced `connect.utils.mime()` with npm _mime_ module
2679  * Changed; allow `req.query` to be pre-defined (via middleware or other parent
2680  * Changed view partial resolution, now relative to parent view
2681  * Changed view engine signature. no longer `engine.render(str, options, callback)`, now `engine.compile(str, options) -> Function`, the returned function accepts `fn(locals)`.
2682  * Fixed `req.param()` bug returning Array.prototype methods. Closes #552
2683  * Fixed; using `Stream#pipe()` instead of `sys.pump()` in `res.sendfile()`
2684  * Fixed; using _qs_ module instead of _querystring_
2685  * Fixed; strip unsafe chars from jsonp callbacks
2686  * Removed "stream threshold" setting
2687
26881.0.8 / 2011-03-01
2689==================
2690
2691  * Allow `req.query` to be pre-defined (via middleware or other parent app)
2692  * "connect": ">= 0.5.0 < 1.0.0". Closes #547
2693  * Removed the long deprecated __EXPRESS_ENV__ support
2694
26951.0.7 / 2011-02-07
2696==================
2697
2698  * Fixed `render()` setting inheritance.
2699    Mounted apps would not inherit "view engine"
2700
27011.0.6 / 2011-02-07
2702==================
2703
2704  * Fixed `view engine` setting bug when period is in dirname
2705
27061.0.5 / 2011-02-05
2707==================
2708
2709  * Added secret to generated app `session()` call
2710
27111.0.4 / 2011-02-05
2712==================
2713
2714  * Added `qs` dependency to _package.json_
2715  * Fixed namespaced `require()`s for latest connect support
2716
27171.0.3 / 2011-01-13
2718==================
2719
2720  * Remove unsafe characters from JSONP callback names [Ryan Grove]
2721
27221.0.2 / 2011-01-10
2723==================
2724
2725  * Removed nested require, using `connect.router`
2726
27271.0.1 / 2010-12-29
2728==================
2729
2730  * Fixed for middleware stacked via `createServer()`
2731    previously the `foo` middleware passed to `createServer(foo)`
2732    would not have access to Express methods such as `res.send()`
2733    or props like `req.query` etc.
2734
27351.0.0 / 2010-11-16
2736==================
2737
2738  * Added; deduce partial object names from the last segment.
2739    For example by default `partial('forum/post', postObject)` will
2740    give you the _post_ object, providing a meaningful default.
2741  * Added http status code string representation to `res.redirect()` body
2742  * Added; `res.redirect()` supporting _text/plain_ and _text/html_ via __Accept__.
2743  * Added `req.is()` to aid in content negotiation
2744  * Added partial local inheritance [suggested by masylum]. Closes #102
2745    providing access to parent template locals.
2746  * Added _-s, --session[s]_ flag to express(1) to add session related middleware
2747  * Added _--template_ flag to express(1) to specify the
2748    template engine to use.
2749  * Added _--css_ flag to express(1) to specify the
2750    stylesheet engine to use (or just plain css by default).
2751  * Added `app.all()` support [thanks aheckmann]
2752  * Added partial direct object support.
2753    You may now `partial('user', user)` providing the "user" local,
2754    vs previously `partial('user', { object: user })`.
2755  * Added _route-separation_ example since many people question ways
2756    to do this with CommonJS modules. Also view the _blog_ example for
2757    an alternative.
2758  * Performance; caching view path derived partial object names
2759  * Fixed partial local inheritance precedence. [reported by Nick Poulden] Closes #454
2760  * Fixed jsonp support; _text/javascript_ as per mailinglist discussion
2761
27621.0.0rc4 / 2010-10-14
2763==================
2764
2765  * Added _NODE_ENV_ support, _EXPRESS_ENV_ is deprecated and will be removed in 1.0.0
2766  * Added route-middleware support (very helpful, see the [docs](http://expressjs.com/guide.html#Route-Middleware))
2767  * Added _jsonp callback_ setting to enable/disable jsonp autowrapping [Dav Glass]
2768  * Added callback query check on response.send to autowrap JSON objects for simple webservice implementations [Dav Glass]
2769  * Added `partial()` support for array-like collections. Closes #434
2770  * Added support for swappable querystring parsers
2771  * Added session usage docs. Closes #443
2772  * Added dynamic helper caching. Closes #439 [suggested by maritz]
2773  * Added authentication example
2774  * Added basic Range support to `res.sendfile()` (and `res.download()` etc)
2775  * Changed; `express(1)` generated app using 2 spaces instead of 4
2776  * Default env to "development" again [aheckmann]
2777  * Removed _context_ option is no more, use "scope"
2778  * Fixed; exposing _./support_ libs to examples so they can run without installs
2779  * Fixed mvc example
2780
27811.0.0rc3 / 2010-09-20
2782==================
2783
2784  * Added confirmation for `express(1)` app generation. Closes #391
2785  * Added extending of flash formatters via `app.flashFormatters`
2786  * Added flash formatter support. Closes #411
2787  * Added streaming support to `res.sendfile()` using `sys.pump()` when >= "stream threshold"
2788  * Added _stream threshold_ setting for `res.sendfile()`
2789  * Added `res.send()` __HEAD__ support
2790  * Added `res.clearCookie()`
2791  * Added `res.cookie()`
2792  * Added `res.render()` headers option
2793  * Added `res.redirect()` response bodies
2794  * Added `res.render()` status option support. Closes #425 [thanks aheckmann]
2795  * Fixed `res.sendfile()` responding with 403 on malicious path
2796  * Fixed `res.download()` bug; when an error occurs remove _Content-Disposition_
2797  * Fixed; mounted apps settings now inherit from parent app [aheckmann]
2798  * Fixed; stripping Content-Length / Content-Type when 204
2799  * Fixed `res.send()` 204. Closes #419
2800  * Fixed multiple _Set-Cookie_ headers via `res.header()`. Closes #402
2801  * Fixed bug messing with error handlers when `listenFD()` is called instead of `listen()`. [thanks guillermo]
2802
2803
28041.0.0rc2 / 2010-08-17
2805==================
2806
2807  * Added `app.register()` for template engine mapping. Closes #390
2808  * Added `res.render()` callback support as second argument (no options)
2809  * Added callback support to `res.download()`
2810  * Added callback support for `res.sendfile()`
2811  * Added support for middleware access via `express.middlewareName()` vs `connect.middlewareName()`
2812  * Added "partials" setting to docs
2813  * Added default expresso tests to `express(1)` generated app. Closes #384
2814  * Fixed `res.sendfile()` error handling, defer via `next()`
2815  * Fixed `res.render()` callback when a layout is used [thanks guillermo]
2816  * Fixed; `make install` creating ~/.node_libraries when not present
2817  * Fixed issue preventing error handlers from being defined anywhere. Closes #387
2818
28191.0.0rc / 2010-07-28
2820==================
2821
2822  * Added mounted hook. Closes #369
2823  * Added connect dependency to _package.json_
2824
2825  * Removed "reload views" setting and support code
2826    development env never caches, production always caches.
2827
2828  * Removed _param_ in route callbacks, signature is now
2829    simply (req, res, next), previously (req, res, params, next).
2830    Use _req.params_ for path captures, _req.query_ for GET params.
2831
2832  * Fixed "home" setting
2833  * Fixed middleware/router precedence issue. Closes #366
2834  * Fixed; _configure()_ callbacks called immediately. Closes #368
2835
28361.0.0beta2 / 2010-07-23
2837==================
2838
2839  * Added more examples
2840  * Added; exporting `Server` constructor
2841  * Added `Server#helpers()` for view locals
2842  * Added `Server#dynamicHelpers()` for dynamic view locals. Closes #349
2843  * Added support for absolute view paths
2844  * Added; _home_ setting defaults to `Server#route` for mounted apps. Closes #363
2845  * Added Guillermo Rauch to the contributor list
2846  * Added support for "as" for non-collection partials. Closes #341
2847  * Fixed _install.sh_, ensuring _~/.node_libraries_ exists. Closes #362 [thanks jf]
2848  * Fixed `res.render()` exceptions, now passed to `next()` when no callback is given [thanks guillermo]
2849  * Fixed instanceof `Array` checks, now `Array.isArray()`
2850  * Fixed express(1) expansion of public dirs. Closes #348
2851  * Fixed middleware precedence. Closes #345
2852  * Fixed view watcher, now async [thanks aheckmann]
2853
28541.0.0beta / 2010-07-15
2855==================
2856
2857  * Re-write
2858    - much faster
2859    - much lighter
2860    - Check [ExpressJS.com](http://expressjs.com) for migration guide and updated docs
2861
28620.14.0 / 2010-06-15
2863==================
2864
2865  * Utilize relative requires
2866  * Added Static bufferSize option [aheckmann]
2867  * Fixed caching of view and partial subdirectories [aheckmann]
2868  * Fixed mime.type() comments now that ".ext" is not supported
2869  * Updated haml submodule
2870  * Updated class submodule
2871  * Removed bin/express
2872
28730.13.0 / 2010-06-01
2874==================
2875
2876  * Added node v0.1.97 compatibility
2877  * Added support for deleting cookies via Request#cookie('key', null)
2878  * Updated haml submodule
2879  * Fixed not-found page, now using using charset utf-8
2880  * Fixed show-exceptions page, now using using charset utf-8
2881  * Fixed view support due to fs.readFile Buffers
2882  * Changed; mime.type() no longer accepts ".type" due to node extname() changes
2883
28840.12.0 / 2010-05-22
2885==================
2886
2887  * Added node v0.1.96 compatibility
2888  * Added view `helpers` export which act as additional local variables
2889  * Updated haml submodule
2890  * Changed ETag; removed inode, modified time only
2891  * Fixed LF to CRLF for setting multiple cookies
2892  * Fixed cookie complation; values are now urlencoded
2893  * Fixed cookies parsing; accepts quoted values and url escaped cookies
2894
28950.11.0 / 2010-05-06
2896==================
2897
2898  * Added support for layouts using different engines
2899    - this.render('page.html.haml', { layout: 'super-cool-layout.html.ejs' })
2900    - this.render('page.html.haml', { layout: 'foo' }) // assumes 'foo.html.haml'
2901    - this.render('page.html.haml', { layout: false }) // no layout
2902  * Updated ext submodule
2903  * Updated haml submodule
2904  * Fixed EJS partial support by passing along the context. Issue #307
2905
29060.10.1 / 2010-05-03
2907==================
2908
2909  * Fixed binary uploads.
2910
29110.10.0 / 2010-04-30
2912==================
2913
2914  * Added charset support via Request#charset (automatically assigned to 'UTF-8' when respond()'s
2915    encoding is set to 'utf8' or 'utf-8'.
2916  * Added "encoding" option to Request#render(). Closes #299
2917  * Added "dump exceptions" setting, which is enabled by default.
2918  * Added simple ejs template engine support
2919  * Added error response support for text/plain, application/json. Closes #297
2920  * Added callback function param to Request#error()
2921  * Added Request#sendHead()
2922  * Added Request#stream()
2923  * Added support for Request#respond(304, null) for empty response bodies
2924  * Added ETag support to Request#sendfile()
2925  * Added options to Request#sendfile(), passed to fs.createReadStream()
2926  * Added filename arg to Request#download()
2927  * Performance enhanced due to pre-reversing plugins so that plugins.reverse() is not called on each request
2928  * Performance enhanced by preventing several calls to toLowerCase() in Router#match()
2929  * Changed; Request#sendfile() now streams
2930  * Changed; Renamed Request#halt() to Request#respond(). Closes #289
2931  * Changed; Using sys.inspect() instead of JSON.encode() for error output
2932  * Changed; run() returns the http.Server instance. Closes #298
2933  * Changed; Defaulting Server#host to null (INADDR_ANY)
2934  * Changed; Logger "common" format scale of 0.4f
2935  * Removed Logger "request" format
2936  * Fixed; Catching ENOENT in view caching, preventing error when "views/partials" is not found
2937  * Fixed several issues with http client
2938  * Fixed Logger Content-Length output
2939  * Fixed bug preventing Opera from retaining the generated session id. Closes #292
2940
29410.9.0 / 2010-04-14
2942==================
2943
2944  * Added DSL level error() route support
2945  * Added DSL level notFound() route support
2946  * Added Request#error()
2947  * Added Request#notFound()
2948  * Added Request#render() callback function. Closes #258
2949  * Added "max upload size" setting
2950  * Added "magic" variables to collection partials (\_\_index\_\_, \_\_length\_\_, \_\_isFirst\_\_, \_\_isLast\_\_). Closes #254
2951  * Added [haml.js](http://github.com/visionmedia/haml.js) submodule; removed haml-js
2952  * Added callback function support to Request#halt() as 3rd/4th arg
2953  * Added preprocessing of route param wildcards using param(). Closes #251
2954  * Added view partial support (with collections etc)
2955  * Fixed bug preventing falsey params (such as ?page=0). Closes #286
2956  * Fixed setting of multiple cookies. Closes #199
2957  * Changed; view naming convention is now NAME.TYPE.ENGINE (for example page.html.haml)
2958  * Changed; session cookie is now httpOnly
2959  * Changed; Request is no longer global
2960  * Changed; Event is no longer global
2961  * Changed; "sys" module is no longer global
2962  * Changed; moved Request#download to Static plugin where it belongs
2963  * Changed; Request instance created before body parsing. Closes #262
2964  * Changed; Pre-caching views in memory when "cache view contents" is enabled. Closes #253
2965  * Changed; Pre-caching view partials in memory when "cache view partials" is enabled
2966  * Updated support to node --version 0.1.90
2967  * Updated dependencies
2968  * Removed set("session cookie") in favour of use(Session, { cookie: { ... }})
2969  * Removed utils.mixin(); use Object#mergeDeep()
2970
29710.8.0 / 2010-03-19
2972==================
2973
2974  * Added coffeescript example app. Closes #242
2975  * Changed; cache api now async friendly. Closes #240
2976  * Removed deprecated 'express/static' support. Use 'express/plugins/static'
2977
29780.7.6 / 2010-03-19
2979==================
2980
2981  * Added Request#isXHR. Closes #229
2982  * Added `make install` (for the executable)
2983  * Added `express` executable for setting up simple app templates
2984  * Added "GET /public/*" to Static plugin, defaulting to <root>/public
2985  * Added Static plugin
2986  * Fixed; Request#render() only calls cache.get() once
2987  * Fixed; Namespacing View caches with "view:"
2988  * Fixed; Namespacing Static caches with "static:"
2989  * Fixed; Both example apps now use the Static plugin
2990  * Fixed set("views"). Closes #239
2991  * Fixed missing space for combined log format
2992  * Deprecated Request#sendfile() and 'express/static'
2993  * Removed Server#running
2994
29950.7.5 / 2010-03-16
2996==================
2997
2998  * Added Request#flash() support without args, now returns all flashes
2999  * Updated ext submodule
3000
30010.7.4 / 2010-03-16
3002==================
3003
3004  * Fixed session reaper
3005  * Changed; class.js replacing js-oo Class implementation (quite a bit faster, no browser cruft)
3006
30070.7.3 / 2010-03-16
3008==================
3009
3010  * Added package.json
3011  * Fixed requiring of haml / sass due to kiwi removal
3012
30130.7.2 / 2010-03-16
3014==================
3015
3016  * Fixed GIT submodules (HAH!)
3017
30180.7.1 / 2010-03-16
3019==================
3020
3021  * Changed; Express now using submodules again until a PM is adopted
3022  * Changed; chat example using millisecond conversions from ext
3023
30240.7.0 / 2010-03-15
3025==================
3026
3027  * Added Request#pass() support (finds the next matching route, or the given path)
3028  * Added Logger plugin (default "common" format replaces CommonLogger)
3029  * Removed Profiler plugin
3030  * Removed CommonLogger plugin
3031
30320.6.0 / 2010-03-11
3033==================
3034
3035  * Added seed.yml for kiwi package management support
3036  * Added HTTP client query string support when method is GET. Closes #205
3037
3038  * Added support for arbitrary view engines.
3039    For example "foo.engine.html" will now require('engine'),
3040    the exports from this module are cached after the first require().
3041
3042  * Added async plugin support
3043
3044  * Removed usage of RESTful route funcs as http client
3045    get() etc, use http.get() and friends
3046
3047  * Removed custom exceptions
3048
30490.5.0 / 2010-03-10
3050==================
3051
3052  * Added ext dependency (library of js extensions)
3053  * Removed extname() / basename() utils. Use path module
3054  * Removed toArray() util. Use arguments.values
3055  * Removed escapeRegexp() util. Use RegExp.escape()
3056  * Removed process.mixin() dependency. Use utils.mixin()
3057  * Removed Collection
3058  * Removed ElementCollection
3059  * Shameless self promotion of ebook "Advanced JavaScript" (http://dev-mag.com)  ;)
3060
30610.4.0 / 2010-02-11
3062==================
3063
3064  * Added flash() example to sample upload app
3065  * Added high level restful http client module (express/http)
3066  * Changed; RESTful route functions double as HTTP clients. Closes #69
3067  * Changed; throwing error when routes are added at runtime
3068  * Changed; defaulting render() context to the current Request. Closes #197
3069  * Updated haml submodule
3070
30710.3.0 / 2010-02-11
3072==================
3073
3074  * Updated haml / sass submodules. Closes #200
3075  * Added flash message support. Closes #64
3076  * Added accepts() now allows multiple args. fixes #117
3077  * Added support for plugins to halt. Closes #189
3078  * Added alternate layout support. Closes #119
3079  * Removed Route#run(). Closes #188
3080  * Fixed broken specs due to use(Cookie) missing
3081
30820.2.1 / 2010-02-05
3083==================
3084
3085  * Added "plot" format option for Profiler (for gnuplot processing)
3086  * Added request number to Profiler plugin
3087  * Fixed binary encoding for multi-part file uploads, was previously defaulting to UTF8
3088  * Fixed issue with routes not firing when not files are present. Closes #184
3089  * Fixed process.Promise -> events.Promise
3090
30910.2.0 / 2010-02-03
3092==================
3093
3094  * Added parseParam() support for name[] etc. (allows for file inputs with "multiple" attr) Closes #180
3095  * Added Both Cache and Session option "reapInterval" may be "reapEvery". Closes #174
3096  * Added expiration support to cache api with reaper. Closes #133
3097  * Added cache Store.Memory#reap()
3098  * Added Cache; cache api now uses first class Cache instances
3099  * Added abstract session Store. Closes #172
3100  * Changed; cache Memory.Store#get() utilizing Collection
3101  * Renamed MemoryStore -> Store.Memory
3102  * Fixed use() of the same plugin several time will always use latest options. Closes #176
3103
31040.1.0 / 2010-02-03
3105==================
3106
3107  * Changed; Hooks (before / after) pass request as arg as well as evaluated in their context
3108  * Updated node support to 0.1.27 Closes #169
3109  * Updated dirname(__filename) -> __dirname
3110  * Updated libxmljs support to v0.2.0
3111  * Added session support with memory store / reaping
3112  * Added quick uid() helper
3113  * Added multi-part upload support
3114  * Added Sass.js support / submodule
3115  * Added production env caching view contents and static files
3116  * Added static file caching. Closes #136
3117  * Added cache plugin with memory stores
3118  * Added support to StaticFile so that it works with non-textual files.
3119  * Removed dirname() helper
3120  * Removed several globals (now their modules must be required)
3121
31220.0.2 / 2010-01-10
3123==================
3124
3125  * Added view benchmarks; currently haml vs ejs
3126  * Added Request#attachment() specs. Closes #116
3127  * Added use of node's parseQuery() util. Closes #123
3128  * Added `make init` for submodules
3129  * Updated Haml
3130  * Updated sample chat app to show messages on load
3131  * Updated libxmljs parseString -> parseHtmlString
3132  * Fixed `make init` to work with older versions of git
3133  * Fixed specs can now run independent specs for those who cant build deps. Closes #127
3134  * Fixed issues introduced by the node url module changes. Closes 126.
3135  * Fixed two assertions failing due to Collection#keys() returning strings
3136  * Fixed faulty Collection#toArray() spec due to keys() returning strings
3137  * Fixed `make test` now builds libxmljs.node before testing
3138
31390.0.1 / 2010-01-03
3140==================
3141
3142  * Initial release