Changes.txt 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. 2.1.0
  2. -Fix Issue #381: Update Durandal to use KO 3
  3. -Fix Issue #374: Bootstrap 3.0 & Font-Awesome Update
  4. -Fix Issue #380: Replaced html bindings with text bindings in sample application codes
  5. -Fix Issue #375: Potentially insecure code in Durandal example app
  6. -Fix Issue #372: Better system.guid implementation
  7. -Fix Issue #385: Routes are case sensitive (and should not be by default)
  8. -Fix Issue #357: Child routers which are 3 levels deep are broken with 2.0.1
  9. -Fix Issue #376: returning false in canDeactivate strips queryString
  10. -Fix Issue #354: Check for obj.prototype before reading or assigning
  11. -Fix Issue #407: Entrance Transition Bug
  12. -Fix Issue #337: module canActivate is not fired when module is already active
  13. -Fix Issue #382: Allow more granular control for module comparison during activation
  14. -Fix Issue #293: Transitions now use CSS3 animations when available.
  15. -Fix Issue #440: Remove *details part when hash generated #440
  16. -Fix Issues #386 and #437: Double activate when using activator with compose binding
  17. -Fix Issue #257: Add PUT and DELETE methods to http plugin
  18. -Fix Issue #270: Add "as" parameter to compose binding
  19. -Fix Issue #409: Navigate method: Only set explicitNavigation to true when trigger is true
  20. -Fix Issue #286: Adding the ability to use a .hasChildRoutes boolean route property rather than *details
  21. -Fix Issue #312: Improved query string to handle multiple occurences of the same key
  22. -Fix Issue #315: Append startRoute option to router activate options
  23. -Fix Issue #343: Support for observable route titles
  24. -Fix Issue #355: Fix bug where IE will fail to load view due to wrong typeName
  25. -Fix Issue #360: Added a toJSON function to the http module to allow customizing how objects are converted
  26. -Fix Issue #405: Added Layout = null to index view for vs template and nuget starter kit
  27. -Fix Issue #368: Added headers to http.js plugin
  28. -Fix Issue #412/#413: Route configured as RegExp object throwing error
  29. -Fix Issue #426: Fix bug where guardRoute cannot redirect to ''
  30. -Fix Issue #480: DurandalRouteConfiguration.nav to be optional in Typescript definition
  31. -Fix Issue #449: dialog's config.messageBoxView working improperly
  32. -Fix Issue #445: Improve 'Route Not Found' message
  33. -Fix Issue #362: Dialog improvements
  34. -Fix Issue #452: Provide original error to system.error
  35. -Fix Issue #459: Fixed bug in router where querystring in child routes causes Route Not Found errors
  36. -Fix Issue #464: Fix a bug that causes routes to be relative even when in pushState
  37. -Fix Issue #473 and 476: Querystring function should only split on first '='
  38. -Fix Issue #482: Support full HTML templates
  39. -Fix Issue #486: Allow `app.title` to be an observable.
  40. -Fix Issue #483: Renaming "module" variable
  41. -Fix Issue #300: closeDialog convenience API
  42. -Fix Issue #361: TS File has incorrect sig for observable.defineProperty by making the actual implementation more flexible
  43. -Fix Issue #436, #453 and #371: Composition complete callbacks not trigged
  44. -Fix Issue #481: Dialog improvement (adding binding callback to custom contexts)
  45. -Fix Issue #346 and #438: various composition part pass through issues
  46. -Fix Issue #475 and #432: Abort composition when the context is changed during activation
  47. -Fix Issue #488/#421: TypeScript - expose durandal/system and durandal/viewEngine in module
  48. -Fix Issue #490: Add optional change detection via the observable module. See docs for details.
  49. -Fix Issue #494: Feature: serializer.clone
  50. -Fix Issue #495: Maybe add a router navigation started event (added router:navigation:processing)
  51. -Fix Issue #498 and #496: Overwriting an observable array results in one-way binding of the new array
  52. -Fix Issue #489: Observable plugin resetting Deferred properties as undefined
  53. -Fix Issue #366: Make Observable Tracking Non-Enumerable
  54. -Fix Issue #501: Entrance transition bug in Chrome 34
  55. -Fix Issue #503: Updated showMessage overload
  56. -Fix Issue #395: setRoot() composition skips canActivate
  57. -Fix Issues #418, #181, #297: Various fixes to activator hierarchies and child routers
  58. -Fix Issue #461: Router: Click binding not stripping root path
  59. -Fix Issue #508: Composition on error override
  60. -Fix Issue #511: Always end composition, even on error
  61. -Fix Issue #509: Unable to set activator settings "closeOnDeactivate" property to false
  62. -Fix Issue #512: Multi-item activator issue
  63. -Fix Issue #356: Don't throw exception in deferred fail in canActivate
  64. -Fix Issue #417: Added support for null routes.
  65. -Fix Issue #500: Observable.js - Custom shouldIgnorePropertyName
  66. -Fix Issue #505: Make observable plug-in convert existing properties
  67. -Fix Issue #262: binding different views to the same view-model (enable default behavior of router)
  68. -Fix Issue #430: Sometimes, negative response from CanDeactivate doesn't restore previous URL
  69. -Fix Issue #520: Ensuring that composition show never inadvertently hides elements
  70. -Fix Issue #514: Don't enforce viewPlugin
  71. -Fix Issue #519: Optimize Part Replacement
  72. -Fix Issue #513: Navigating back refreshes the page in latest chrome, when using router.navigate with {replace: true}
  73. -Fix Issue #516: Add dynamic child hash via cwooldridge
  74. -Fix Issue #515: Cache Parsed Views
  75. -Fix Issue #479: Can't use template with vs2013 express
  76. -Fix Issue #523: viewEngine$createView does not deliver promise but deferred object when returning cached element
  77. -Fix issue #530: add console.error call to logError
  78. -Fix Issue #531: Made dialog.isOpen computed
  79. -Fixed a bug with activation when modules were reused. Lifecycle wasn't fully enforced.
  80. -Added a string.trim polyfill
  81. -Updated Bootstrap to 3.1.1
  82. -Updated FontAwesome to 4.0.3.1
  83. -Updated Knockout to 3.1.0
  84. -Updated RequireJS to 2.1.11
  85. -Updated RequireJS Text Plugin to 2.0.7
  86. -Updated Mimosa skeleton to 2.x
  87. -Various fixes/extensions to the docs and readme
  88. -Various css improvements and typographic fixes
  89. 2.0.1
  90. -Fix Issue #259: Fragment doesn't include query when using push state
  91. -Fix Issue #258: Absolute links not working when using push state
  92. -Fix Issue #254: Bad mainConfigFile entry in the default weyland-config of the Durandal nuget package
  93. -Fix Issue #267: Added missing generic type arguments in the Durandal.d.ts file
  94. -Fix Issue #265: Undefined reference error when trying to remove the previous view binding instruction from the dom, which doesn't exist.
  95. -Fix Issue #261: Improving the Mimosa starter kit by adding bower support for font awesome and durandal
  96. -Fix Issue #271: observable.defineProperty overwrites ko
  97. -Fix Issue #272: Add a condition on the target attribute so that when pushState is activated, there is a way to bypass the router.
  98. -Fix Issue #275: The close declaration in Durandal's TypeScript d.ts file would not allow for passing result parameters. Fixed by adding a rest argument called results.
  99. -Fix Issue #255: router.activate Promise never resolves with 'silent' activation
  100. -Fix Issue #278: Fixed Route Not Found error in IE11 Preview
  101. -Fix Issue #279: Binding handlers added through composition.addBindingHandler don't work outside of a composition
  102. -Fix Issue #266: composition.bindAndShow overwrites the elements local display style
  103. -Fix Issue #268: TS Definition file Error - Exported variable 'router' has or is using or is using private type 'durandal/typescript.rootRouter'
  104. -Fix Issue #264: TS Definition missing activeInstruction().config.route
  105. -Fix Issue #281: Infinite Loop Navigation
  106. -Fix Issue #292: Correctly position dialog in more scnenarios
  107. -Fix Issue #266: Router 2.0 fails to render views when cacheViews is not defined
  108. -Fix Issue #305: Navigating from one view to another hangs the application.
  109. -Fix Issue #310: Router Swallows errors from activate() promise
  110. -Fix Issue #319: dialog:autofocus was being called on last instead of first tagged element
  111. -Fix Issue #316: a Widget with no "parts" results in an exception being thrown
  112. -Fix Issue #309: Improvements for property DurandalRouteConfiguration.nav and more consistent router ordering.
  113. -Fix Issue #324: fix binder-spec to address beforeBind/afterBind renaming to binding/bind...
  114. -Fix Issue #334: add events tests
  115. -Fix Issue #323: Unit test errors on OSX
  116. -Fix Issue #333: Changed entrance animations callbacks from complete to always
  117. -Fix Issue #331: compositioncomplete does not get triggered
  118. -Fix Issue #330: router canReuseCurrentActivation() function is not quite right
  119. -Fix Issue #307: Router handling of null/undefined href is possibly reversed?
  120. -Fix Issue #303: Multiple route are active when are base on single viewmodel
  121. -Fix Issue #304: Heap Size growing, DOM element detached
  122. -Fix Issue #256: [data-part]'s nested in [data-bind] elements get removed from childParts in widgets
  123. -Fix Issue #284: Publish 1.X Docs Publicly
  124. -Fix Issue #317: Put Samples Online
  125. -Fix Issue #308: dialog isn't positioned correctly when is set composition.defaultTransitionName
  126. -Fix Issue #338: Old custom almond script used
  127. -Fix Issue #341: pushState href="" (empty string) not recognized as internal navigation
  128. -Fix Issue #339: exceptions thrown in compositionComplete callbacks prevent other callbacks to run. (other callback may need handling as well.)
  129. -Fix Issue #342: logical `if` flow bug in observable.js -> innerSetter
  130. -Fix Issue #351: TypeError when redirecting to currently loaded view
  131. -Improved ordering of compositionComplete callbacks.
  132. -Some perf improvements in the composition engine.
  133. -Don't include a trailing slash on the root when the router navigates.
  134. -Fixing an improper node removal in one execution path of composition relating to rebinding views.
  135. -Tweaking the .NET Index.cshtml so that it plays nicer when using the router in push state mode.
  136. 2.0.0
  137. -Massive reorganization of the github repo. The reorg was done to cleanly separate the library, samples and starter kit source from the platform targets and to facilitate a cleaner build process with less manual "fixup" as the list of supported platforms expands.
  138. -Durandal now expects to live along side 3rd party script libraries, outside of your application code. All samples and starter kits have been updated to use requirejs.path to setup the correct mapping, per platform. Additionally, the framework no longer assumes that plugins or transitions are under the durandal folder. The starter kits all use requirejs.path to map them to their actual location.
  139. -Durandal no longer has any dependencies on globally defined variables. It now requires everything through the module system. This means that jQuery and Knockout must be defined in order for Durandal to function properly. The samples/starter kits all set up the proper configuration to make this happen. This allows you to keep ko/jquery in global scope by using an explicit define call, giving you the same expereience as 1.x or you can now use require.paths and shim config to keep everything out of the gloabl scope if you desire.
  140. -There is now an official plugin model which should be configured before calling app.start. This allows plugins to load in, adding binding handlers and extending durandal APIs before your application code runs. You can pass configuration to the plugins as part of this process. Once the plugin model was in place we moved several libraries out of the core and into plugins. These include: dialog (formerly modalDialog), widget and http. Additional plugins shipping with Durandal 2.0 include: router, history, serializer and observable. Plugins which should be directly installed with the new plugin system include: router, dialog, widget and observable (optionally).
  141. -The modalDialog module was renamed to "dialog" and changed to a plugin. The messageBox module's source and view are now part of the dialog module. Formerly, showing a modal added a "modal" property on to the shown module which could be used to close the modal and return a value. This is no longer the case. Closing and returning a value should now be done with dialog.close(viewModel, returnValue). If you need to customize the MessageBox, you can access it via dialog.MessageBox. It's view now uses text bindings instead of html bindings for better security. The dialog's default context has also been updated to take advantage of the new compositionComplete event so that sizing/positioning of the dialog occurs after all internal compositions are complete. This means that new dialog contexts should have addHost, removeHost and compositionComplete callbacks. The compositionComplete callbacks receives the view, parent view and composition context as arguments.
  142. -The viewModelBinder was renamed to binder.
  143. -The router has been completely re-written. It no longer has any dependencies outside of Durandal's core dependencies. (No more SammyJS) The router is built on top of a new history module which encapsulates the low-level history manipulation. This was done so that developers who have unique routing requirements can dispense with Durandal's router but not have to also re-write the history portion of the system. The new router adds a new router binding handler, child routers, better deep linking support, many bug fixes, support for not only parameterized routes, but also splats, optional parameters and query strings. It also has a better mechanism for handling unknown routes, default routes and conventional routing. The router also publishes events related to its activity and sports a simple, fluent configuration interface.
  144. -The viewModel module was renamed to "activator" and its activator function was renamed to "create". Passing an array as activationData now results in activate being called with one argument for each array element. The areItemsSame settings callback now has four parameters: currentItem, newItem, currentActivationData, newActivationData.
  145. -The viewEngine had some refactoring to expose parseMarkup and processMarkup. We also added ensureSingleElement and createFallbackView.
  146. -New composition lifecycle. Without an activator: activate, binding (renamed from beforeBind), bindingComplete (renamed from afterBind), attached (renamed from viewAttached), compositionComplete, detached. With an activator: canActivate, activate, binding, bindingComplete, attached, compositionComplete, canDeactivate, deactivate, detached. The compositionComplete event fires after the entire composition that the current view model is a part of is completely finished and all nodes are in the document. This event bubbles, starting by notifying child view models first, then parents. The detached event fires whenever the module's corresponding view is removed from the DOM. Composition now supports inline views by setting mode:'inline' on the binding and supplying the view as a child element. Composition now supports templated parts by setting mode:'templated' and supplying the part overrides as child elements. Composition now supports activationData which will be passed to the module's activate function. Composition now has a new function called addBindingHandler. This allows you to create a standard knockout binding handler whose execution is delayed until the composition.current.complete event is fired. The binding callback on a VM can now return false, to cancel the applyBindings call. It can also return an object with a property called applyBindings to control this. Furthermore, the object that is returned from the binding callback is passed along to the beforeBind and afterBind hooks of the view model binder to allow plugins access to this information. Returning a promise from activate is no longer necessary. You can return one to halt binding and screen composition, but no longer need to.
  147. -Fixed bug with widget part overrides that contain widgets with part overrides. Easier mapping of widgets via new widget apis: mapKindToModuleId/convertKindToModulePath and mapKindToViewId/convertKindToViewPath. Widgets are now almost entirely built on composition so the standard composition lifecycle applies. Widgets are now composed of a view.html and a viewmodel.js (not controller.js). Settings are no longer passed to the constructor, but into the activate fuction.
  148. -New system module helper apis: resolveObject (can be used in TypeScript to return the viewmodel out of a module), assert, error, extend, wait, isElement, isArray, isObject, isBoolean, isArguments, isFunction, isString, isNumber, isDate and isRexExp. The acquire function's promise now correctly reports load errors through the standard promise error mechanism. Previously when passing multiple module ids to system.aqcuire, the promise would resolve with one argument per module. However, this causes problems when used with non-jQuery promises. As a result the acquire function was reworked so that if an array of ids is passed or
  149. multiple ids are passed then the promise resolves with an array of modules. system.error is plumbed throughout the framework to surface real errors as opposed to simple logs.
  150. -Added "fadeOnly" option to the entrance transition. Removing some bogus styles after the transition completes.
  151. -Removed app.adaptToDevice()...which was causing lots of confusion.
  152. -Removed the optimizer. It is now replaced by Weyland.
  153. -New samples and starter kits available for: raw HTML, Bower, .NET (Nuget and VSIX), and Mimosa.
  154. -Added support for Bower
  155. -Added more knockout samples
  156. -Better support for Q integration
  157. -Added api docs via YUIDoc
  158. -Lots of bug fixes
  159. -Updated docs and conversion guide
  160. -Official TypeScript definition file
  161. 1.2.0
  162. -Fixed bugs in .NET's optimizer. Added a 'loader' options to specify 'almond' or 'require'.
  163. -Prevent popping when transitioning with the 'entrance' transition.
  164. -Passing activation data through the puggable beforeActivate function of the activator.
  165. -Added throwOnErrors to the view model binder. Errors will be thrown instead of logged when true.
  166. -Major fix in widgets which prevented proper databinding and broken/excessive rendering.
  167. -Improved settings construction for composition and widget binding handlers.
  168. -Upped the starting z index for modals to play better with bootstrap.
  169. -Added beforeBind and afterBind hooks to the view model binder.
  170. -Fixed the .NET optimizer config file generation for the 'require' loader option.
  171. -View engine now removes empty text nodes when parsing views.
  172. -Fixed a bug in the router which cuased non-hashed routes to malfunction.
  173. -Added a guardRoute hook to the router to allow, deny or redirect based on the route.
  174. -Fixed bugs in the implementation of app.adaptToDevice
  175. -Added a missing call to the deferred's promise() function in the view model module which caused issues with Q.
  176. -Made all the Durandal samples into a single app.
  177. -Switched Durandal over to dependency array module syntax to enable easier use with other AMD loaders.
  178. -Added hooks for the Dojo AMD loader.
  179. -Router navigateTo is only used for defined routes now.
  180. -Updated the .NET command line parser dependency to the latest version and fixed breaking changes.
  181. -Enabled modal dialogs to return multiple values to a promise.
  182. -Implemented route queuing for the router.
  183. -More unit tests added.
  184. -Fixed some invalid html generation in the view engine.
  185. -Styled the widget demo.
  186. -Fixed transitions so that they run even if there is no new child.
  187. -Router now uses route.caption for document title.
  188. -Router navigateTo now accepts a second parameter of 'skip' to skip the route handler or 'replace' to replace the url.
  189. -Removed the app module's startup dependency on the message box module.
  190. -Removed the setView hook that the view model binder called. Replaced it with beforeBind and afterBind hooks.