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