UNPKG

50.4 kBMarkdownView Raw
1version @VERSION@
2=================
3
4Notes
5-----
6
7Deprecations, Removals
8----------------------
9
10Features
11--------
12
13Bug Fixes
14---------
15
16Acknowledgements
17----------------
18
19version 0.7.2
20=================
21
22Bug Fixes
23---------
24
25* PR #1196: fix runtime:server is not set by default when booting the app
26* Issue #1071: Putting a README.md in the mojits/ directory causes mojito to not load
27
28
29version 0.7.1
30=================
31
32Notes
33--------
34The resource store now exposes a method loadConfigs() and an event "loadConfigs", for planned add-on authoring support.
35
36Acknowledgements
37----------------
38Thanks to David Gomez and Jacques Arnoux for contributing to this release.
39
40
41version 0.7.0
42=================
43
44Notes
45-----
46
47* YUI dependency was upgraded to yui@3.10.3
48
49Deprecations, Removals
50----------------------
51* The mojito command line tools included in the mojito repository were deprecated in May. Mojito Developers were asked to install and use the `mojito-cli` npm package. With this release, the **command line tools have been removed** from Mojito. Use of the commands with the latest `mojito-cli` works as before. Also, deprecated commands "profiler" and "gv" cli commands were moved to separate packages.
52
53Note that if an application's continuous integration environment (i.e. Jenkins, Screwdriver) depends on the code for these commands to be included as part of the mojito package, the application package.json [will need to be updated](https://github.com/yahoo/mojito-cli/wiki/NpmInstallation#mojito-cli-commands-and-ci).
54
55CLI change summary:
56
57 * Developers should continue to install `mojito-cli` globally in their development environments to use "mojito" commands from the console. This remains the case for any recent version of Mojito.
58 * Mojito applications depending on `mojito@0.7.0` and doing CI with Screwdriver need to add `mojito-cli` as a devDependency.
59 * `mojito profiler` was re-packaged and can be [installed separately](https://github.com/yahoo/mojito-cli-profiler).
60 * `mojito gv` was re-packaged and can be [installed separately](https://github.com/yahoo/mojito-cli-gv).
61
62More info at the [mojito-cli wiki](http://git.io/jJazAw).
63
64* mojito-carrier-addon and mojito-device-addon are moved to y_mojito package for Yahoo internal developer use only.
65
66Features
67--------
68* PR #1163: Rehydration of data from server to client and from client to server. Any data set thru `mojitProxy.data.set()` or `ac.data.set()` will travel back and forward between the client and server runtime to preserve the state of the mojit instance when using the rpc tunnel.
69
70Bug Fixes
71---------
72* Issue #1159: tunnel request fails if mojito-data-addon is required on the server side controller.
73
74Acknowledgements
75----------------
76
77
78version 0.6.1
79=================
80
81Notes
82-----
83* Mojito contributors can now use the following `npm run-script` shortcuts when working inside the mojito repo:
84 * `npm test`
85 * `npm run unit`
86 * `npm run func`
87* YUI dependency was upgraded to yui@3.10.1
88* Arrow devDependency was upgraded to yahoo-arrow@~0.0.77
89* YCB dependency was upgraded to ycb@~1.0.5
90
91Deprecations, Removals
92----------------------
93
94Features
95--------
96
97Bug Fixes
98---------
99* fix #1151 client-side route-maker error IE6-8
100* fix #1146 use perf.logFile from app.json:perf.logFile if applicable
101* fix callback handling in mojito start sequence
102
103Acknowledgements
104----------------
105Thanks to @chetanankola for discovering and helping with issue #1151.
106
107version 0.6.0
108=================
109
110Notes
111-----
112* `ac.config.getAppConfig()` was reworked to improve performance by computing the app
113config once per request, and reuse across all the mojit instances in the same page using
114the `mojito-config-addon`. This means you have to be extra careful if you attempt to
115change that object, because it might affects other mojits in the same page.
116* `ac.config.getRoutes()` was reworked to improve performance by computing the app
117config once per request, and reuse across all the mojit instances in the same page using
118the `mojito-url-addon`. This means you have to be extra careful if you attempt to
119change that object, because it might affects other mojits in the same page.
120* Using `Y.Model.Vanilla` class on the server side for `ac.data` and `ac.pageData`, while
121using `Y.Model` on the client side. This is a performance optimization, and while the API
122is still the same, but on the server we do not support events on those model instances, while
123in the client, you might want to listen for changes in the model from the binder. In the future
124`Y.Model.Vanilla` will be replace with `Y.Model.Base` when it becomes available in core.
125
126Deprecations, Removals
127----------------------
128* PR [#1103] Droping support for `nodejs` 0.6.
129* `ac.staticAppConfig` was a private api used by mojito to allocate static config for the app,
130and this is now removed. If you need access to the config, you can use `mojito-config-addon`
131to access `ac.config.getAppConfig()`.
132
133Features
134--------
135* PR [#1103] Bringing `windows` to the front row by adding *partial* support for mojito on
136windows. We plan to consolidate this going forward, but until after [travis-ci.org](http://travis-ci.org/)
137supports `windows` [environment](http://about.travis-ci.org/docs/user/ci-environment/) as part of the
138build process to do sanity check, we cannot guarantee that everything will work on `windows`.
139* `mojito-composite-addon` and `mojito-partial-addon` support `ac.flush` from child mojits.
140* Command "npm test" is added to run all mojito unit and functional tests with Phantomjs.
141 Test results can be found under <mojitosrcdir>/artifacts/arrowreport by default.
142 "npm run unit", "npm run func", "npm run doc", "npm run lint" are also added.
143
144
145Bug Fixes
146---------
147
148Acknowledgements
149----------------
150
151version 0.5.9pr1
152=================
153
154Notes
155-----
156* **!IMPORTANT!** This release contains a notable backward-incompatible change. See "Deprecations, Removals" below.
157* The PR [#1059](/yahoo/mojito/issues/1059) adds the Mojito Quickstart Guide application
158to the `examples` directory. The application allows you to view documentation on
159different devices and serves as a reference application. You can view the live application
160at http://y.ahoo.it/mqsg. Also, see the wiki page
161[Mojito Quickstart Guide: Intro](https://github.com/yahoo/mojito/wiki/Mojito-Quickstart-Guide)
162for more information about the application.
163
164Deprecations, Removals
165------------
166* **!Backwards-Incompatible Change!** Using `ac.instance.config` to send data from a controller to a binder has been removed.
167This was never the official approach but was a work-around mentioned in our FAQ until we could support something better.
168We now have an official data channel from controller to binder -- see "Features" below.
169This was removed because sending `instance.config` from the server to the client could possibly leak secure information.
170* The command line tools bundled with mojito have been deprecated. Rather than installing `mojito` globally, please install `mojito-cli` globally instead. Functionality should remain the same. See http://git.io/jJazAw
171* `mojito compile` command was removed. It has been deprecated since 0.5.1.
172* `mojito profiler` has been deprecated. It will be removed in a future release.
173
174Features
175--------
176
177### Data Channel from Server to Client
178
179Introducing `mojito-data-addon` for use in controllers. This AC addon is used to pass
180information from the controller to the binder. After requiring this addon in your
181controller you can use `ac.data.set(name, value)` to expose data to the binder.
182The binder accesses this data with `mojitProxy.data.get(name)`.
183
184The data set via `ac.data.set()` is also available in all templates. Any data given
185to `ac.done()` will be merged over the data given by `ac.data.set()`.
186(This is a shallow merge.)
187
188### Page-Level Data Store
189
190`mojito-data-addon` also introduces the page data, which is accessible thru `ac.pageData`.
191This has a YUI Model API, i.e. `ac.pageData.set(name, value)` and `ac.pageData.get(name)`.
192`pageData` is unique to each request, but is a single store for all mojits of the request,
193and you can use it to share data between mojits in a page. The binder accesses this data
194with `mojitProxy.pageData.get(name)`.
195
196The data set via `ac.pageData.set()` is also available in all templates thru `this.page`
197(for example `{{page}}` in handlebars templates). Keep in mind that if
198`ac.done({page: 'something'})` is specified in your controller, the `page` key will override
199all data set via `ac.pageData`.
200
201This data will be sent to the client side, and rehydrated since the page built at the server
202side will expand its scope to the client. In other words, `pageData` serve as a mechanism
203to share data between mojits and runtimes. `ac.pageData` and `mojitProxy.pageData` provides
204access to the same page model.
205
206Bug Fixes
207---------
208
209Acknowledgements
210----------------
211
212Special thanks to [Steven Lu](/luchenghan) for contributing the Mojito Quickstart Guide app for this release.
213
214version 0.5.8
215=============
216
217Notes
218-----
219
220* The PR [#1062](/yahoo/mojito/issues/1062) fixes the detection problems in YUI that
221where causing multiple issues with Y.JSON.parse and other components. In the current
222implementation, the app itself uses `require('yui')` in a traditional way to avoid any
223potential issues in the future with the detection system in YUI. It also re-enabled
224the ability to run YUI in debug mode in the server side if you happen to use `filter="debug"`
225in `application.json` which has been broken for a long time.
226
227Deprecations
228------------
229
230* "hybridapp" code and resources have been removed. They were purpose built for use with other cocktails components outside mojito, but their development has recently stopped.
231
232Bug Fixes
233---------
234
235* [PR #1062](/yahoo/mojito/issues/1062): fixes the issue with Y.config.global after the upgrade to yui@3.9.1
236* removed a few unnecessary datastructure copies
237
238version 0.5.7
239=============
240
241Notes
242------------
243* A middleware called `mojito-handler-error` has been added to handle
244 middleware errors. If you have redefined the middleware stack and do not have
245 your own error handler, then it is your responsibility to add it so that
246 errors can be handled appropriately.
247
248* An early preview of [`mojito-cli`](https://github.com/yahoo/mojito-cli) has been published. Users can choose to try it with `npm install --global mojito-cli`. There should be no significant changes in functionality. It is intended to replace the functionality provided by installing the mojito npm package globally (which has been deprecated). Notes:
249 * users install mojito-cli package globally (if they choose to in this preview release period).
250 * users should install the mojito package _locally_, as an npm dependency of their application.
251 * all existing mojito command line commands should continue to operate in much the same way.
252 * `mojito create app Foo`, when mojito-cli has been installed, will use `npm` to install `mojito` locally automatically after generating the app files and directories.
253
254Features
255------------
256* Upgraded to YUI 3.9.1
257* [issue #979](/yahoo/mojito/issues/979):
258 * The `mojito-handler-tunnel` middleware was refactored into a middleware
259 substack that more loosens the coupling between the parsing and handling
260 phases of a tunnel request. This means that applications will have an
261 easier time overriding and customizing tunnel behavior.
262 * The URL is now customizable per request using the `tunnelUrl` option for
263 `mojitProxy.invoke()`, but is still subject to the `tunnelPrefix`
264 restriction.
265
266
267Bug Fixes
268------------
269* issue bz6160815: port argument must be an integer
270
271
272version 0.5.6
273=================
274
275Notes
276------------
277* Mojito cli commands will be moving to a separate package `mojito-cli` in
278 upcoming releases, which will be for global installation. The core mojito
279 package will be for bundling with your application.
280
281Deprecations
282------------
283* Mojits shipped with Mojito (like HTMLFrame, tunnel, etc) will play by the same
284rules, no more conditions when we walk them. Before, those mojits were forced
285to not have `res.url` because they should not be used from the client side, that's not
286longer the case.
287
288Bug Fixes
289------------
290* issue #812: only walk the first/shallowest version of each package
291* issue #1016: regression that prevented shaker for controllering CDN urls
292* issue #1026: compatibility with Node.js 0.10 by making all mojits to play by the same rules
293
294
295version 0.5.5
296=================
297
298Deprecations
299------------
300Performance optimizations introduced in this release have resulted in internal API changes.
301This impacts 3rd party components that are using protected or internal store APIs, e.g. [Shaker](/yahoo/mojito-shaker).
302A new Shaker version will be released very soon to address these changes.
303In the meantime, you can follow [mojito-shaker#43](/yahoo/mojito-shaker/pull/43).
304
305Here are details of the API changes.
306
307* We removed store event `getMojitTypeDetails`. The replacement is [`resolveMojitDetails`](http://developer.yahoo.com/cocktails/mojito/api/classes/ResourceStore.server.html#event_resolveMojitDetails), though the datastructure is different.
308* We removed store event `mojitResourcesResolved`.
309* We removed `store.getResources()`.
310* We added `store.optimizeForEnvironment()`.
311* We added `store.makeStaticHandlerDetails()`.
312* `store.yui.getAllURLResources()` is now called [`store.yui.getAllURLDetails()`](http://developer.yahoo.com/cocktails/mojito/api/classes/ResourceStore.server.html#method_getAllURLDetails) and returns a different datastructure.
313* For both [`store.getResourceContent()`](http://developer.yahoo.com/cocktails/mojito/api/classes/ResourceStore.server.html#method_getResourceContent) and [`store.procesResourceContent()`](http://developer.yahoo.com/cocktails/mojito/api/classes/ResourceStore.server.html#method_processResourceContent), the datastructure representing the resource has changed.
314* [`store.getResourceVerions()`](http://developer.yahoo.com/cocktails/mojito/api/classes/ResourceStore.server.html#method_getResourceVersions) should not be called during runtime. It can still be called during the events that happen during preload.
315* [`store.yui.getConfigShared()`](http://developer.yahoo.com/cocktails/mojito/api/classes/RSAddonYUI.html#method_getConfigShared) now just takes the `env` argument.
316* We removed `store.yui.getConfigAllMojits()`. Some users were calling `getConfigAllMojits` and using the results with `getConfigShared` to configure a YUI instance. Now instead we suggest using `getModulesConfig()` to replace this pair of calls.
317* We added [`store.yui.getModulesConfig()`](http://developer.yahoo.com/cocktails/mojito/api/classes/RSAddonYUI.html#method_getModulesConfig).
318* We added [`store.yui.getYUIConfig()`](http://developer.yahoo.com/cocktails/mojito/api/classes/RSAddonYUI.html#method_getYUIConfig).
319* [`store.yui.getAppSeedFiles()`](http://developer.yahoo.com/cocktails/mojito/api/classes/RSAddonYUI.html#method_getAppSeedFiles) now takes a yui configuration as the second argument.
320* `store.yui.getYUIURLResources()` is now called `store.yui.getYUIURLDetails()` and returns a different datastructure.
321
322Please see the API docs for details of each.
323
324Features
325------------
326* Global models thru `ac.models.expose()` upgraded from experimental to beta.
327* Support for Handlebars helpers through `mojito-helpers-addon` and support for global Handlebars helpers using `ac.helpers.expose()`. This is an experimental feature!
328* Introducing error propagation in `mojito-composite-addon` by using the flag `propagateFailure` in a child.
329* Introduced a clear separation between YUI core modules and app-specific YUI modules. YUI core modules are now served from CDN by default; they are only served by the app origin server if `staticHandling.serveYUIFromAppOrigin` is set in `application.json`. This change optimizes the initial load time of the app as well as its offline capabilities when using [mojito build html5app](http://developer.yahoo.com/cocktails/mojito/docs/reference/mojito_cmdline.html#build-system).
330* Improved Resource Store: minimized memory footprint.
331* Upgraded to YUI 3.8.1
332
333Bug Fixes
334------------
335* [#25](/yahoo/mojito/issues/25) mojito-composite-addon error propagation
336* [#293](/yahoo/mojito/issues/293) HTMLFrameMojit should honor child metas
337* Fixes the `Cache-Control` header for static assets.
338* Fixed hybrid build issue
339* Fixed lingering occurrences of `store.yui.getConfigAllMojits()`
340* Fix for `forceRelativePaths` for YUI loader when using `mojito build`, making root and base to be relative when needed.
341* (sweetandsour2) Fix for client side hooks, bug fix in template hooks.
342
343
344version 0.5.4
345=================
346
347Deprecations
348------------
349* We dropped the Mu library in favor of Handlebars -- Handlebars is used everywhere, including for parsing Mu templates.
350Even though Mustache is a subset of Handlebars, this might introduce some encoding issues, especially because Handlebars does automatic encoding of `{{}}` sections to provide some basic security against script injections.
351If you are encoding data in your controller for your Mustache views, you no longer need to do so, and by using `{{}}` you will be covered.
352On the other hand, if you don't want Handlebars to apply the default encoding, just use `{{{}}}` to print the original value.
353
354Features
355------------
356* Support for Handlebars partials
357* Dropped Mu library: any `*.mu.html` view/template will be processed using HB engine
358* Global models thru `ad.models.registerGlobal`
359* Templates warm-up thru `preloadTemplates` configuration for small apps.
360* Support for external URLs in `yui.config.seed` for custom YUI versions on the client side.
361
362Bug Fixes
363------------
364* Solving conflits generated by the hook system.
365* lock yahoo-arrow version to 0.0.73
366* Revert "Reduced memory consumption at server start by removing an apparently unnecessary meta-data copy operation..."
367* adding support for a more flexible seed structure to support external urls. this helps to control the yui version on the client.
368* removing mustache engine in favor of handlebars based on [#367](/yahoo/mojito/issues/367) by @mridgway
369* supporting registration of global models
370* consolidating application.json->viewEngine->cacheTemplates as a static config across the board.
371* adding support for partials in the store. Views within partials/* folder are now considered partials.
372
373
374version 0.5.3-1
375=================
376
377Bug Fixes
378------------
379* Revert 3a5822a "Reduced memory consumption at server start by removing an apparently unnecessary meta-data copy operation"
380
381
382version 0.5.3
383=================
384
385Features
386------------
387* new mojito and mojito-app instrumentation hooks
388* performance improvements
389* simplification of the frame mojit to facilitate inheritance and brand new frames per app.
390
391Bug Fixes
392------------
393* [#919](/yahoo/mojito/issues/919) Added examples of YAML configuration and linked…
394* [#928](/yahoo/mojito/issues/928) Remove Y! copyright from generated code
395* [#954](/yahoo/mojito/issues/954) fix for app failures when deploying to nodejitsu.
396
397
398version 0.5.2
399=================
400
401Features
402------------
403
404### Performance Improvements
405
406From `0.5.1` to `0.5.2` we have implemented a series of micro-optimizations.
407As a result, Mojito is twice as fast, uses half the memory footprint, and takes half the time to boot the application based on our internal metrics.
408More information can be found on our [Trello board](http://tinyurl.com/axvd3tt).
409This improves the response time to ~40ms response time for an application with 52 mojits, which represents less than 1ms per mojit.
410
411### Comments in JSON files and YAML Support
412
413Configuration files, including `application.json`, `defaults.json`, `definition.json`, etc., can become pretty big for complex applications, and not having comments can drastically impact productivity and on-boarding for new developers.
414As of this version, we support comments in those files.
415The comments are YAML comments, they start with `#`.
416
417As well, we just brought back support for `.yml` and `.yaml` that was previously introduced in Mojito `0.4.x`.
418
419### Logs Formatter
420
421In `0.5.0`, we removed the mojito `logger` and started using `YUI Log` in its pure form.
422As a result of the formatting process implemented by the `yui-log-nodejs` module, the logs were formatted even when the application was running in a runtime without `tty`.
423This was partially fixed in this new version (for runtime execution where performance is critical), and we plan to finish the migration for the Resource Store's logs in `0.5.3`.
424
425
426Bug Fixes
427------------
428* [bz5667423] Add support for including files in a configuration bundle
429* Added support for JavaScript-style comments in JSON files
430* [bz5964521] test output is always colorized -- includes escape codes when saved to file
431* micro-optimization: replacing runInNewContext with runInContext
432* fix two newsboxes unit tests, misc
433* update copyright to 2013
434* [doc] Added FAQ about setting expiration of a cookie.
435* update package.json in archetypes for mojito 0.5.x & node >0.6
436* do not colorize test.js output if there is no tty [gh809,bz5964521]
437* Functional test changes to support SD
438* jslint tests along with template for general cli testing
439* [bz6023234] prefix for hybridapp/crt "//yahoo.com"
440* Update docs/dev_guide/getting_started/mojito_getting_started_tutorial.rst
441* removed shelljs
442* honor --descriptor for --cli and --unit as well
443* Travis cleanup
444* [doc] Updated documentation for running Mojito's built-in unit/functional tests.
445* more unit tests for ActionContext
446* Update docs/dev_guide/intro/mojito_apps.rst
447* Add more unit tests for params.common and view engine handlebar
448* a little more careful about transforming ac.done() into a no-op
449* Update docs/dev_guide/intro/mojito_mvc.rst
450* [doc] Documentation for how to configure YUI for Mojito applications.
451* Update docs/dev_guide/intro/mojito_mvc.rst
452* unit tests for `build/*.js`
453* supporting yui.config.groups.app.comboSep=& without mangling
454* dispatcher coverage
455* .travis.yml debug, misc
456* Update docs/dev_guide/topics/mojito_testing.rst
457* Update docs/dev_guide/intro/mojito_binders.rst
458* Add more unit tests for util.
459* fixed client-side unit tests
460* Modify files to workaround a jslint error
461* [gh238] [bz5667423] support for multiple application configuration files
462* fix missing snapshot.packages in build hybridapp
463* [doc] Added links to archived docs.
464* unformatted logs when running in production systems
465* Update docs/dev_guide/code_exs/calling_yql.rst
466* add unit test for version
467* [doc] Docs add links to presentation given by Caridy at YUIConf 2012.
468* Update docs/dev_guide/reference/mojito_troubleshooting.rst
469* re-enable yaml support
470* [doc] Added FAQ discussing how to re-use and extend mojits.
471* workaround how arrow is tweaking with console.debug()
472
473
474version 0.5.1
475=================
476
477Notes
478------------
479* `mojito compile rollups` command is no longer needed and has been removed -- comboing is now done at request time.
480* `mojito compile` commands are deprecated in favor of [Shaker](/yahoo/mojito-shaker)
481* for hybridapp builds, the application.json config `builds.hybridapp.forceRelativePaths: true` is broken for the time being. This makes testing with a browser in a non-chrooted more difficult.
482* NOTICE: 0.5.x has various configuration and API changes from 0.4.x, please also review [0.5.0 release notes](ReleaseNotes0_5_0) if you are upgrading your application from pre-0.5.x versions.
483
484Features
485------------
486* comboing of mojito and application javascript files are at request time
487* improved performance/latency
488* improved internal test and testability
489* improved 0.5.x documentation
490
491Bug Fixes
492------------
493* fix issue #835 more careful about caching results of expandInstanceForEnv()
494* adjusting ac.url.make routine to avoid accepting strings for querystring. avoiding any parsing or stringifing routine at…
495* fix mojito create -p option - add {{port}} to application.json
496* fix resolve loader config for hybridapp/IDE/CRT in 0.5.x
497* fix input handling and error message for jslint mojit command
498* better support of older browsers
499* HTMLFrameMojit title now says 'Powered by Mojito', not 'Powered by Mojito 0.2'
500
501
502version 0.5.0
503=================
504
505Notes
506------------
507* **IMPORTANT** This release contains notable backward-incompatible changes, all for the sake of significantly increased performance.
508
509Backward Compatibility Changes
510--------------------------------
511
512### Mojito No Longer Adds Common ActionContext Addons
513
514In the past, a subset of the addons provided by Mojito framework were attached on every `ActionContext` object (which are created per request, per mojit instance in the page).
515The specific list was mojito-config-addon, mojito-url-addon, mojito-assets-addon, mojito-cookie-addon, mojito-params-addon, mojito-composite-addon.
516This resulted in overhead for every mojit in the page.
517As part of 0.5.0, all requirements have to be specified in the controller definition. e.g:
518
519 YUI.add('Foo', function(Y, NAME) {
520
521 Y.namespace('mojito.controllers')[NAME] = {
522
523 index: function(ac) {
524 // ac.params.* is now available
525 }
526
527 };
528
529 }, '0.0.1', {requires: ['mojito', 'mojito-params-addon']});
530
531As of 0.5.0, no addon is attached unless it is required. The only public members of `ActionContent` object are `ac.done`, `ac.error`, and `ac.flush`.
532
533Recommendations to upgrade:
534
535* check every controller in your app, and check if it is using `ac.*`, and add the corresponding requirements.
536* the most common addons are: config, params, url, assets.
537
538
539### Access to Models via a Property
540
541Models are no longer computed and attached to `ActionContext` by default.
542In other words, `ac.models.foo` is no longer a valid way to access a model.
543Computing and attaching models automatically, even when they were not really needed, added overhead during the page rendering process.
544Instead, we want Mojito to be more strict in defining and exposing structures automatically.
545
546In 0.5.0, if you need to use a model in a controller (defined at the mojit level, or at the application level), you need to:
547
548* require a new addon called `mojito-models-addon` in your controller.
549* require the module in your controller.
550* use `ac.models.get('foo')` to get a reference of the model.
551
552Here is an example:
553
554 YUI.add('DemoModelFoo', function(Y, NAME) {
555 Y.namespace('mojito.models')[NAME] = {
556 init: function(config) {
557 this.config = config;
558 },
559 getData: function(callback) {}
560 };
561 }, '0.0.1', {requires: []});
562
563 YUI.add('Foo', function(Y, NAME) {
564 Y.namespace('mojito.controllers')[NAME] = {
565 index: function(ac) {
566 ac.models.get('DemoModelFoo').getData(function (data) {
567 // data from model available here
568 });
569 }
570 };
571
572 }, '0.0.1', {requires: ['mojito', 'mojito-models-addon', 'DemoModelFoo']});
573
574> Note: the model name doesn't have to match the yui module name for the model anymore.
575
576
577### `init` Method in Controllers is Gone
578
579The `init` method on the controller is now deprecated and should be removed.
580In many cases, the `init` method was just storing a reference of the `config` parameter to use it later on.
581This is no longer available, and the `init` method will not be executed.
582
583If you need to access the mojit `config` in an actions, you should:
584
585* require `mojito-config-addon` in the controller.
586* use `ac.config.get()` to get the `config`
587
588> Note: do not try to store a reference of that config, as it is not safe, More details below.
589
590
591### `ac.app.*` is Gone
592
593For performance reasons, to avoid computing app config per mojit instance, per request, when the majority of the time it is not needed, we completed the transition to `mojito-config-addon` add-on.
594This change affects `ac.app.*`, specifically `ac.app.config` which was commonly used to access the computed `application.json` configuration per `context`.
595If you need to access the application `config` in an action or another add-on, you should:
596
597* require `mojito-config-addon` in the controller.
598* use `ac.config.getAppConfig()` to get the former `ac.app.config`
599
600
601### Controllers Can No Longer Run Forever
602
603Mojito now imposes a timeout on the dispatch of the action in the controllers.
604Starting with 0.5.0 there is a "reaper" which imposes a timeout.
605Actions must call `ac.done()` or `ac.error()` before the timer expires or the system will log a warning and invoke `ac.error()` with a timeout error.
606
607This can be configured by the `actionTimeout` setting in `application.json`.
608It contains the maximum number of milliseconds that a controller action is allowed to run before the action is timed out.
609The default value is `60000` (60 seconds).
610
611
612### Mojit and AC Addon Naming Conventions Changes
613
614Mojito is more restrictive in how you names mojits and add-ons. There are 4 new rules:
615
616* `addon` namespace should match the filename. E.g. `ac.foo` corresponds to `addons/ac/foo.common.js`.
617* The name of the mojit, which is the name of the folder, should match the language bundle, including the filename of the bundle and its definition. E.g. `Foo` mojit can have `lang/Foo_da-DK.js`, and the content should be `YUI.add('lang/Foo_da-DK', function (Y) { Y.Intl.add('Foo', 'da-DK', {}); });`
618* Controller YUI module name should be same as directory.
619* YUI modules need to have unique names, regardless of selector.
620
621
622### `log` Config in `application.json` is Gone
623
624In previous versions, the console log was separated for client and server, and between Mojito and YUI.
625We decided to leverage the YUI Logger, and unify this setting under a single configuration, actually the YUI configuration in `application.json`:
626
627 "log": {
628 "client": {
629 "level": "error",
630 "yui": false
631 },
632 "server": {
633 "level": "error",
634 "yui": false
635 }
636 }
637
638is now:
639
640 "yui": {
641 "config": {
642 "debug": true,
643 "logLevel": "error"
644 }
645 }
646
647and we recommend this setting for production:
648
649 "yui": {
650 "config": {
651 "debug": false,
652 "logLevel": "none"
653 }
654 }
655
656To customize this for client or server, you can use the runtime context.
657Also, you can now use `logExclude` and `logInclude`.
658More information at http://yuilibrary.com/yui/docs/api/classes/config.html.
659
660
661### Other Settings Changes in `application.json`
662
663The following are gone:
664
665* `embedJsFilesInHtmlFrame`
666* `shareYUIInstance`
667* in the `yui` section:
668 * `base`
669 * `dependencyCalculations`
670 * `extraModules`
671 * `loader`
672 * `url`
673 * `urlContains`
674
675
676### `mojito test` No Longer Tests the Framework
677
678In the past, `mojito test` without any other parameter was running all unit tests for mojito framework, and this is no longer the case.
679We moved all the tests to `arrow`, more details here: https://github.com/yahoo/mojito/tree/develop/tests
680
681You can continue using `mojito test app path/to/app` and `mojito test mojit path/to/mojit`, and the behavior is still the same.
682
683> Note: this change is only relevant for contributors.
684
685
686### `.guid` is Gone
687The `.guid` member of Mojito metadata (such as binder metadata) is now gone.
688Often there's an associated member which more specifically expresses the intent of the unique ID (for example `.viewId` or `.instanceId`).
689
690Features
691------------
692* Speed: TODO more details.
693* Logging now uses `Y.log()` directly, instead of our own wrapper. This simplifies usage and enables subscribing to the YUI log events.
694* Upgraded `yui` dependency to `3.7.3` (or greater).
695* Combo handling is now built in to Mojito server.
696* New hybrid app archetype to help create apps for use in technologies such as phonegap.
697
698Bug Fixes
699------------
700* [#70](/yahoo/mojito/issues/70) Simplify logging
701* [#525](/yahoo/mojito/issues/525) example unit tests crash or fail
702* [#651](/yahoo/mojito/issues/651) Expanded instances are bleeding
703* [#736](/yahoo/mojito/issues/736) Content Error in documentation
704* bz5472979 server resources in build
705* bz5886351 cli bin/mojito uses wrong copy
706* bz5892364 (archetype) mojito-client not loaded for hybrid app
707* bz5904449 garbled console output on node 0.8+
708* bz5914052 do real buffer calculus for better UTF8 and binary support
709
710
711version 0.4.9
712=================
713
714Notes
715------------
716* Command line warning and error output used to go to stdout, they now go to stderr.
717* Version 0.4.9-2 fixes the output of the test coverage report for `mojito test -c app .`, which was incorrect for 0.4.9.
718
719Features
720------------
721* New `mojito build hybridapp`, requires snapshot name and tag options.
722
723Bug Fixes
724------------
725* Add yuitest-coverage dependency.
726* Add yaml suport, including work from pr580 and pr670.
727* Fix bz4404935, including work from pr580 and pr670
728* Non-functional changes to cli fixes issue #715 typo in info error msg.
729* Fix bz5895425 resources for hybridapp/crt were 500/not found as web app.
730* Fix bz5904449 garbled console output on node 0.8+ if process.stdout is not a tty (i.e. a pipe) the console.log interpreted…
731* Fix bz5898249 merge source application.json's build.hybridapp.packages object into the build's ./appname/package.json dependencies…
732* Fix bz5472979 server resources in build server affinity resources do not need to be uri addressable. with this change store.getAllUrls()…
733* Fix bz5886351 cli bin/mojito uses wrong copy.
734* Fix bz5892364 (archetype) mojito-client not loaded for hybdridapp.
735* Fix bz5886351 cli: bin/mojito launches wrong copy the cli entry point bin/mojito should always load and run the code.
736
737
738version 0.4.8
739=================
740
741Notes
742------------
743* All performance regressions will be addressed in an upcoming release.
744
745Features
746------------
747* [#643](/yahoo/mojito/issues/643) new `hybrid` archetype
748 * new archetype: mojito create app hybrid myapp
749 * new build type: mojito build hybrid path/to/packages/dir
750 * new custom archetypes: mojito create custom path/to/your/archetype mything
751
752Bug Fixes
753------------
754* [#645](/yahoo/mojito/issues/645), bz5472979 fix server resources in build
755* [#650](/yahoo/mojito/issues/650) [docs] Added a prereq for doing the code example, added a link
756* [#546](/yahoo/mojito/issues/546) multiple jslint errors in developer-guide and getting-started code examples
757* [#547](/yahoo/mojito/issues/547) errors in basic_yql example (getting-started-guide/part2)
758* [#570](/yahoo/mojito/issues/570) documentation - add api_key to the binders/index.js in the code example on Binding Events
759* fix path for create mojit.
760
761
762version 0.4.7
763=================
764
765Notes
766------------
767* **IMPORTANT - server.js compatibility changes**
768This release requires changes to any application's index.js file and server.js file to properly launch.
769The templates in `mojito/lib/app/archetypes/app/default` for index.js and server.js are the appropriate content to use in any existing applications.
770For new applications these files are automatically used when the `mojito create app` command is invoked to create a new application.
771
772Features
773------------
774* [#565](/yahoo/mojito/issues/565) Added support for `/crossdomain.xml` and `/robots.txt`
775
776Bug Fixes
777------------
778* [#525](/yahoo/mojito/issues/525) `mojito test app|mojit` failed for archetype-code…
779* [#615](/yahoo/mojito/issues/615) [doc] Added func/unit test instructions.
780* [#546](/yahoo/mojito/issues/546) multiple jslint errors in developer-guide
781* [#621](/yahoo/mojito/issues/621) [docs] Fixed a syntax issue for using run.js.
782* [#624](/yahoo/mojito/issues/624) Add getter to avoid exposing `_app` for Manhattan use.
783* [#625](/yahoo/mojito/issues/625) Move app init so any `getHttpServer` call returns initialized app instance...
784* [#598](/yahoo/mojito/issues/598) The routing configuration documentation covers the 'regex' property.
785* [#628](/yahoo/mojito/issues/628) Fix start logic.
786* [#602](/yahoo/mojito/issues/602) Rewrote item in the FAQ regarding passing data from the controller to the binder.
787
788
789version 0.4.6
790=================
791
792Notes
793------------
794* All performance regressions will be addressed in an upcoming release.
795
796Deprecations
797------------
798As of this release, Mojito has changed the way the application boots up. Update the file `server.js` that is at the root dir of your application. Here is an example:
799
800 ```javascript
801 var Mojito = require('mojito');
802 var app = Mojito.createServer({
803 context: {}
804 });
805 // Mojito 0.4 and 0.5 compatibility...
806 module.exports = app.start ? app.start() : app;
807 ```
808
809Features
810------------
811* [#265](/yahoo/mojito/issues/265) Mojito can now be started using the standard node command.
812
813Bug Fixes
814------------
815None.
816
817
818version 0.4.5
819=================
820
821Notes
822------------
823* Some performance regressions remain from 0.4.0 and will be addressed in an upcoming release.
824
825Features
826------------
827* Improved JavaScript parse error messages.
828* Improved functional test stability.
829
830Bug Fixes
831------------
832* [#13](/yahoo/mojito/issues/13) ContextController cache never cleans up
833* [#461](/yahoo/mojito/issues/461) build html5app command - the "builds.html5app" key in "application.json" is not context aware
834* [#482](/yahoo/mojito/issues/482) improve error handling and messaging
835* [#496](/yahoo/mojito/issues/496) Compatibility with Node.js 0.8
836* [#507](/yahoo/mojito/issues/507) Add "hi" group in dimensions.json
837* [#508](/yahoo/mojito/issues/508) better error message for javascript parse errors
838* [#519](/yahoo/mojito/issues/519) Adds a --path option to run.js to allow specifying a path to find the test descriptors or applications
839* [#522](/yahoo/mojito/issues/522) fixed multiple typos in the code example as well as typo in explanation
840* [#547](/yahoo/mojito/issues/547) Updated YQL key used for examples
841
842
843version 0.4.4
844=================
845
846Notes
847------------
848* Some performance regressions remain from 0.4.0 and will be addressed in an upcoming release.
849
850Features
851------------
852* [Arrow](/yahoo/arrow) unit and functional tests are run by [Travis](http://travis-ci.org/yahoo/mojito).
853
854Bug Fixes
855------------
856* [#438](/yahoo/mojito/issues/438) [Shaker](/yahoo/shaker) 2.0 compatibility
857* [#78](/yahoo/mojito/issues/78) Client resource store implementation
858* [#77](/yahoo/mojito/issues/77), [#76](/yahoo/mojito/issues/76) YUIDocs for resource store
859* [#429](/yahoo/mojito/issues/429) PUT requests not handled correctly
860* Fixed a browser incompatibility with XML output
861* fixed how commands instantiate the store
862* performance: use Y.mojito.util.copy() instead of Y.clone()
863* performance: removed Y.clone() from YCB library
864* fix multiple done() calls in client-side Handlebar renderer, consequence of fixing [#408](/yahoo/mojito/issues/408)
865
866
867version 0.4.3
868=================
869
870Bug Fixes
871------------
872* Fix buffer mojito040
873* add node 0.8 compatibility
874* Travis CI Configuration
875* fix broken UTs in mojit skeletons
876* Fixed examples so that they should work with shareYUIInstance
877* Remove YCB and depend on ycb npm package
878* honoring context.lang in the loader
879* Fix for handlebar renderer when ac.flush() is called more than once
880* Moved fixtures; Migrated resource store addon tests
881* change example & fixture mojito dependency to >0.3
882* Store client url fix
883* Remove i13n from public mojito
884* fix store unit test
885* fix (and un-ignore) the resource store unit test for optional YUI modules
886* Remove i13n from public mojito
887* make nice names for the pids
888
889
890version 0.4.2
891=================
892
893Notes
894------------
895* This release is the bleeding edge of our development tree. To install the most stable, production-ready Mojito release, use `npm install mojito@stable`.
896
897Features
898------------
899### Handlebars
900
901Handlebars is now supported and is the default view engine for new projects. We are also recommending that projects change their view engine from Mustache to Handlebars for performance and stability reasons.
902Big thanks to [Caridy Patino](/caridy) for this contribution.
903
904* Made handlebars the default renderer for new projects and all examples [#365](/yahoo/mojito/issues/365)
905* Added deprecation warning for Mu [#369](/yahoo/mojito/issues/369)
906* [#270](/yahoo/mojito/issues/270): Added unit tests for client and server handlebars engines
907* Added client side handlebars engine; Cleaned up jslint errors with server side engine
908* cleaning up the handlebar wrapper for mojito as a view engine for the server side.
909* adding support for handlebars for the server runtime only for now.
910
911### Reason Phrase
912
913Providing the ability to provide a `reasonPhrase` property when calling `ac.error`.
914
915* [#273](/yahoo/mojito/issues/273), [#300](/yahoo/mojito/issues/300) allow custom `reasonPhrase` in ac.error -- Thanks [Fabian Frank](/FabianFrank)!
916
917### shareYUIInstance
918
919It was discovered that `shareYUIInstance` was not usable in previous versions.
920We have addressed some of the issues such that `shareYUIInstance` should be usable, although should be considered experimental.
921This configuration now works in the following way:
922
923Default value is `false` at app level, mojits can override the app config by specifying `shareYUIInstance` in their defaults.json (parallel to the config key).
924
925* [#357](/yahoo/mojito/issues/357), [#386](/yahoo/mojito/issues/386): Fixed `shareYUIInstance`
926
927### Docs
928
929* Reorganized the document, added links to images, section IDs, rewrote sections, and edited.
930* Adding architecture images.
931* Added a link to the RS from the selector property and an example that you cannot add the selector * property to the defaults.json file of a mojit.
932* Added the 'selector' property to the config docs and made a note in the RS docs that the selector can only be set in application.json.
933* Added the --context option to the build and start commands.
934* Added the tunnelTimeout property to the application config object.
935
936Bug Fixes
937------------
938* fix [#375](/yahoo/mojito/issues/375), unified handling of frameworkName, appName, and prefix [#383](/yahoo/mojito/pull/383)
939* Set server runtime when handling tunnel calls. [#242](/yahoo/mojito/issues/242) - Thanks Fabian Frank!
940* jslint command now uses node-jslint npm module; Fixed jslint errors from jslint upgrade [#360](/yahoo/mojito/issues/360)
941* [#352](/yahoo/mojito/issues/352) archetypes now specify a version of mojito similar to that which uses them [#355](/yahoo/mojito/issues/355)
942* when using the loader at the server side to generate combo urls we should pipe the yui config into the loader settings otherwise some settings will not be honored. [#350](/yahoo/mojito/issues/350)
943* guard against missing edges in `mojito gv` [#349](/yahoo/mojito/issues/349)
944* Removed DaliProxy and adding application configurable tunnel timeout [#345](/yahoo/mojito/issues/345)
945* [Fix bz5712477] Make sure to callback when there is an error [#338](/yahoo/mojito/issues/338)
946* Porting mojito doc over to the new yuidocjs [#243](/yahoo/mojito/issues/243) - Thanks Fabian Frank!
947* [#270](/yahoo/mojito/issues/270): Added unit tests for client and server handlebars engines
948* [#357](/yahoo/mojito/issues/357), [#386](/yahoo/mojito/issues/386): Fixed `shareYUIInstance`
949
950
951version 0.4.0
952=================
953
954Notes
955------------
956* This release contains a significant rewrite of an important subsystem of Mojito, the resource store.
957Also, with this release, the resource store becomes part of the public API of Mojito.
958It's an advanced feature, however, and is only needed if you intent to change how Mojito interprets and uses files on the filesystem.
959
960Deprecations
961------------
962* You will now need to configure the iphone selector by hand (`{"settings": ["device:iphone"], "selector":"iphone"}`) in your `application.json` files. (This resource store no longer assumes the selector is just the device.)
963* In a mojit's `package.json`, the version check is now spelled `engines.mojito` instead of `yahoo.mojito.version`.
964* In a mojit's `package.json`, `config.mojito` is now spelled `yahoo.mojito`.
965* The second argument to `serializeClientStore()` is gone. (This was pretty much internal to mojito anyway, so likely no one will miss it.)
966* The second argument to `getAppConfig()` is gone. That method now *just* returns the application configuration (from `application.json`). (This was pretty much internal to mojito anyway.)
967
968Bug Fixes
969------------
970* issue [10](/yahoo/mojito/issues/10): Ensure Mojito can handle YUI module names with underscores
971* issue [32](/yahoo/mojito/issues/32): "mojito compile rollups" using dot notation in the name of the css files will make compile to discard some of them
972* issue [50](/yahoo/mojito/issues/50): mojito start loads tests from addons
973* issue [54](/yahoo/mojito/issues/54): "mojito compile inlinecss" has unexpected behavior when there is a css file name that contains the string "iphone"
974* issue [59](/yahoo/mojito/issues/59), bz 5380714: test files under addons/ac/ are loaded when mojito starts
975* issue [95](/yahoo/mojito/issues/95), bz 4647440: Proper Mojito version number comparison
976* issue [109](/yahoo/mojito/issues/109): Refactor certain complicated parts of the store
977* issue [110](/yahoo/mojito/issues/110): Detect duplicate resource ids on cookdown
978* bz 4647169: considering making a utility YUI object in ResourceStore
979* bz 5362206: Need ability to select controller, view, model and binder based on context
980* bz 5495519: mojito is not loading - stuck retrieving all the datetype-date-format for each locale
981* bz 5530096: Mojito tries to parse .json~ files in [mojit]/specs/
982* bz 5541500: mojito not doing fallback
983* bz 5609501: L10n: Root strings file is not used by default when a non-root strings file is present
984
985
986version 0.3.30
987=================
988
989Notes
990------------
991* Mojito depends on the latest patch release of YUI, currently YUI 3.5.1-2.
992This version of YUI fixes a [Y.io issue](/yui/yui3/commit/4b03344978520a7e55dd70f461b21cf81f33aeac) which appeared in the last release.
993Also, as with the last Mojito release, YUI 3.5.x has removed built-in jsdom support.
994Server code that depends on a DOM will cause Mojito to throw an exception on startup.
995A warning will now be issued for known DOM dependent modules matching this criteria.
996Folks are asked to either move DOM dependencies to client affinities or binders, or create the required host objects for your application's DOM requirements.
997See [http://yuilibrary.com/yui/docs/yui/nodejs.html](http://yuilibrary.com/yui/docs/yui/nodejs.html).
998There may also be other app-specific issues with the upgrade in YUI.
999
1000Deprecations
1001------------
1002
1003Features
1004------------
1005* Add --print option to jslint usage message
1006* Performance Optimization: Defer RouteMaker Instantiation in URL Addon
1007* yuitest cleanups
1008* rm local copy of mime, use npm mime module instead
1009* Remove local glob.js and replace with glob npm package
1010* Added client-side unescape of escaped content
1011* Adding namespacing to Mojito components
1012* lots of documentation updates
1013
1014Bug Fixes
1015------------
1016* Alter escaping to URI escaping to repair regressions
1017* Make sure the callback signature is what the supplied Function expects
1018* Use command-line context in "mojito build html5app" command
1019
1020
1021version 0.3.29
1022=================
1023
1024Notes
1025------------
1026* Mojito depends on the latest patch release of YUI, currently YUI 3.5.1-2.
1027This version of YUI fixes a [Y.io issue](/yui/yui3/commit/4b03344978520a7e55dd70f461b21cf81f33aeac) which appeared in the last release.
1028Also, as with the last Mojito release, YUI 3.5.x has removed built-in jsdom support.
1029Server code that depends on a DOM will cause Mojito to throw an exception on startup.
1030A warning will now be issued for known DOM dependent modules matching this criteria.
1031Folks are asked to either move DOM dependencies to client affinities or binders, or create the required host objects for your application's DOM requirements.
1032See [http://yuilibrary.com/yui/docs/yui/nodejs.html](http://yuilibrary.com/yui/docs/yui/nodejs.html).
1033There may also be other app-specific issues with the upgrade in YUI.
1034* Because of the YUI situation, both the latest and stable tags on npm point to Mojito 0.3.26.
1035To install this release you need to specify version 0.3.29 explicitly (either `npm i mojito@0.3.29` or via package.json).
1036
1037Bug Fixes
1038------------
1039* fixed the HelloMojit-tests in the default mojit archetype to prevent a test failure when running `mojito test app .` (as indicated in the Getting Started tutorial). The objects are not equal even if they have the same elements
1040* updated controller.server.js and controller.server-tests.js code examples in getting_started to reflect the files generated by mojito 0.3.26
1041* [bz5472517] Error on server doesn't propagate to client
1042
1043
1044version 0.3.28
1045=================
1046
1047Notes
1048------------
1049* Mojito depends on the latest patch release of YUI, currently YUI 3.5.1-2.
1050This version of YUI fixes a [Y.io issue](/yui/yui3/commit/4b03344978520a7e55dd70f461b21cf81f33aeac) which appeared in the last release.
1051Also, as with the last Mojito release, YUI 3.5.x has removed built-in jsdom support.
1052Server code that depends on a DOM will cause Mojito to throw an exception on startup.
1053A warning will now be issued for known DOM dependent modules matching this criteria.
1054Folks are asked to either move DOM dependencies to client affinities or binders, or create the required host objects for your application's DOM requirements.
1055See [http://yuilibrary.com/yui/docs/yui/nodejs.html](http://yuilibrary.com/yui/docs/yui/nodejs.html).
1056There may also be other app-specific issues with the upgrade in YUI.
1057
1058Features
1059------------
1060* [726a2e4](/yahoo/mojito/commit/726a2e4) Added -p option for jslint results to sdtout
1061
1062Bug Fixes
1063------------
1064* [#231](/yahoo/mojito/issues/231) Update sys references to util references.
1065* [#219](/yahoo/mojito/issues/219) [bz5651900] stop mojit data memory leak - record dynamically
1066* [#223](/yahoo/mojito/issues/223) [bz5646042] log warning if server mojit has DOM dependency.
1067* [#232](/yahoo/mojito/issues/232) [bz5649382] Fix for `mojito test app`.
1068* fix dynamic mojit regression introduced in [2dd7313](/yahoo/mojito/commit/2dd7313)
1069* fix unit test errors in build 130
1070* [bz5491914] Fix client exception on `ac.error()`
1071* [bz5649346] Updates yui and yuitest dependencies; +FreeBSD
1072* [bz5494997] Fix for Mojito client throwing on tunnel timeout
1073* More null fixes for Mustache
1074* [bz5590319] Unicode and/or HTML escaping for config data.
1075
1076
1077
\No newline at end of file