2.0.0 ( Nov 07 2013 )
- change: Replacing lists live-binding
- change: Fix destroy params
- change: Special attribute binding
- change: Fix Mustache binding lists in helpers
- change: Certain HTML attributes need special live-binding
- change: Destroy templates and attributes.
- change: Fix some typo's in the documentation.
- change: attr() not working in some cases in IE9
- change: docs update: can.Object dependency for can.fixture
- change: View renderer functions don't work with Deferreds
- change: Issue: can.view.ejs(str) and can.view.ejs(id, str) return different responses
- change: can.Mustache: #if sections are rendered twice when activated from live-binding
- change: can.route.ready should not be called automatically
- change: fixed issue #470 can.route default values are not working
- change: can.route.ready called multiple times
- change: Mustache two way helpers don't work as documented
- change: Can't 2-way bind Array
- change: Bower component does not work with steal
- change: Live Binding Broken with Models with Nested Sub-models
- change: String parameter not working as expected for: jQuery.fn.control / jQuery.fn.controls
- change: error passing can.Observe.List to custom Mustache element helper
- change: Wrong variable name in the Guide.
- change: Model.destroy request params
- change: Fixing can.ajax missing test for error handler with mootools
- change: Fixing error that occurs when an item in an Observe.List contains a comp...
- change: Observe#on
- change: Array is skipped on serialize
- change:
can.Mustache
live-binding oncan.route
attributes - change: create can.Component for custom tags
- change: Feature/route to string
- change: Default can.route.ready to false
- change: Attributes automatic conversion to Map/Model specified type
- change: can.route.pushstate mishandles hash fragments
- change: Needed host check for pushstate.js
- change: Support for rendering document fragments (returned from the renderer function) in the templates
- change: Model.save: handle response data or return data in save callback
- change: AMD Consistency
- change: Extensionless views fail
- change: can.Model.findAll promotes usage of XSS attack vector
- change: Allow context change after element has been rendered
- change: Make it easier to setup 2-way-binding and other interesting behaviors
- change: Accessing attributes in Model destroy
- change: mustache: support for backtrack path
- change: Live-bound dynamic attributes don't get updated properly if they don't exist on initial execution
- change: The can.Model.models arrayName should be configurable like observable's 'id' property
- change: can.observe.delegate fails on compound selectors with wildcards
1.1.8 ( Sep 24 2013 )
- change: can.Observe.List.Sort: fix for case when comparator is not a function
- change: makeFindOne example cache error: http://canjs.com/docs/can.Model.makeFindOne.html
- change: Two return statements in Mustache.getHelper
- change: recommended syntax breaks can.route
- change: Prevent infinite recursion on unbindAndTeardown when Observe's _bindings is undefined and Observe is self-referential
- change: [Catch only exceptions thrown by modelfunc (fix #454 and re #384)](canjs#455)
- change: CanJS Swallowing Errors
1.1.7 ( Jul 23 2013 )
- change: can.Model.model attribute serialization fix
- change: Build cleanup
- change: .model should always serialize Observes
- change: Preloaded recursive views fail to render their recursions
- change: Use .attr() when evaluating errors in validations
- change: can.compute error with can.Observe
- change: Fix the bug where mustache each would fail if called with the empty list
- change: Mustache's each fails with empty list
- change: can.sub should return null if value is undefined or null
- change: can.VERSION shows @EDGE but what about 2 years later?
- change: can.compute-friendly validations
- change: Test AMD builds
- change: fixture based CRUD test fails in phantomjs
- change: can.Model Fails Silently When Server Doesn't Return an Array for findAll
1.1.6 ( May 30 2013 )
- change: Mustache doesn't read computed List.length correctly
- change: Removing the semi-colon splitter in EJS transform, too unreliable #242
- change: EJS transforming wasn't processing semi-colons properly within parentheses #242
- change: Adds support for EJS shared blocks #242
- change: . in helpers
- change: 1.1.6pre - something going wrong with can.computes() in Mustache templates
- change: can.route references delegate but does not include it
- change: Binding to an Observe.compute value is broken
- change: Added validatesNumericalityOf to validations
- change: Include can.Object in CanJS distribution
- change: can.Map makes can.Deferred into an observable
- change: Update sub to not break when str is undefined
- change: List memory leak fix
- change: Integrated incremental live lists
- change: can.view.render update is sometimes
undefined
- change: Model.store and live bind does not handle same object initialized more times
- change: Prevent errors if destroy is called multiple times on a Control instance
- change: Outputting attribute and value containing '=' truncates the value (EJS & Mustache)
- change: can.sub fix remove param. Allow only to remove properties + tests
- change: Can.string getNext function fix
- change: Maximum Call Stack Exceeded When Destroying a nested model
- change: Add VERSION property to CanJS Object
- change: Better handling of null values in Mustache sections.
- change: model override should work for create and update not just findone and findall
- change: Download builder should include build version in output
- change: Don't treat links to "#" as "/"
- change: Run all tests also on pluginified files
- change: Observable list's length attribute does not update with live binding using dot separated accessors
- change: Twitter Bower component of CanJS
- change: ejs files loose variables after $.each loop
1.1.5 ( Mar 28 2013 )
- change: Added Mustache.resolve to evaluate truthyness in a common way #333
- change: Fixed incorrect passing of context stacks with partials in Mustache #288
- change: Mustache {{#if}} does not correctly evaluate boolean value
- change: deparam: parse params with remaining ampersand
- change: Null objects within observes weren't working properly with Mustache sections #307
- change: Mustache: Pass raw array data as the context instead of trying to resolve it #281
- change: Allow to pass an array index to removeAttr in Observe and Observe.List
- change: fixing no arg helpers
- change: Mustache interpolation issues using Observes inside of an attribute tag
- change: isObject is undefined
- change: Allow dots in Observe keys
- change: data-view-id being rendered in tag closing
- change: Execute startBatch callbacks
- change: HTML comments with either an element callback (EJS) or a helper (Mustache) rendered incorrectly
- change: Prevent leak from computes that have no bindings.
- change: Treat "--" as delimiter of empty element
- change: Fixing can.ajax with mootools
- change: CanJS tries to parse JSON-map which contains a dot in the key
- change: can.compute evaluations for the default Mustache handlers
- change: can.Mustache: Array of objects passed as context to partials, breaks data helper and rendering.
- change: adding greedy space to model url splitter
- change: Fix for numeric inputs not living binding
- change: Empty strings not handled properly
- change: can.Control event delegation problem
- change: fixing computes from converting type
- change: can.view with Deferreds doesn't pass failures
- change: HTML comments trip EJS rendering
- change: can.Map.prototype.each overrides {{#each}} Mustache helper.
- change: Any model with a "." in the key name will cause observe.js _set() to throw and error
- change: Item.List splice method does not convert inserted elements to Item type
- change: Mustache: DOM exception when applying certain block patterns
- change: Mustache: Interpolated values when iterating through an Observe.List fail if not surrounded by a DOM node
1.1.4 ( February 5, 2013 )
- fix: Haschange binding and route ready for all libraries
- fix: Get converters and .attr working the right way with nested objects
- fix: CanJS/ejs table+tbody rendering of a list gives nested tbody items
- fix: Mustache: Inconsistent treatment of function attributes
- fix: EJS renders "@@!!@@" instead of Model data when a Deferred is passed into can.view that takes a long time to resolve
- fix: Mustache: registered helpers do not create the context stack correctly
- fix: Mustache: only the current context is passed to partials, instead of the full stack
- fix: IE8 error when setting up observe list
- fix: Resetting a live-bound
<textarea>
changes its value to__!!__
- fix: hashchange binding still broken in mootools
- fix: can.Mustache - with context lost in nested sections
- fix: Enabled passing in helpers and partials to Mustache views, (1)
- fix: Make the resolved data available when using can.view
- fix: .attr method doesn't merge nested objects
- fix: Live binding on observe.lists nested in an observe doesn't work
- fix: Attributes/Converters Issue
- fix: Observe.List push/unshift doesn't fire when sort comparator is set
- fix: Observe.List sort doesn't use custom method passed
- fix: test&fix: null values crashing validations
- fix: EJS rendering null value
- fix: can.Map sort plugin doesn't trigger add events
- fix: Observe.List sort plugin erroring on item removal
- fix: Live binding on observe.lists nested in an observe doesn't work
- fix: Observe.List sort doesn't use custom method passed
- add: removeAttr can.Model attribute
- add: Calling destroy on non persisted model
- add: jQuery 1.9.x support
- add: Mustache Helpers that accept computes and return an element should work
1.1.3 ( December 11, 2012 )
- fix: Empty model displays !! as input values
- fix: Rendering models in tables produces different results than an equivalent observe
- fix:
data
Mustache helper doesn't parse attribute properly - fix: Partial Mustache views assume the right parent tag for live-binding
- fix: Mustache partials don't parse properly
- fix: can.Control will fail to find $.event.special in a $.noConflict(true) scenario
- fix: Nameless view renderers should return document fragment
- fix: compute only updates once when a list's contents are replaced
- add: Updated jQuery hashchange plugin
- add: Generate computes from an observe property
- add: Add can.List.prototype.replace
- add: [Return resolved data models in view callback](https://github.com/bitovi/canjs/issues/1log
1.1.2 ( November 28, 2012 )
- fix: Solve issue when stealing mustache templates -
can/view/mustache
returnscan
object now - fix: Controls shouldn't bind to templated events that contain undefined values
- fix: Resetting a form changes input values to !!
- fix: Further AMD build improvements
- fix: Strange conversion of nested arrays to Observe.List
1.1.1 ( November 19, 2012 )
- fix: @@!!@@ Appears on Page With EJS and Table in non-IE Browsers
- fix: can.deparam leaks to global scope
- fix: nested attr() call on a model with List attributes blows away existing List
- add: canjs#162
- Improved AMD support, see #155
1.1.0 ( November 13, 2012 )
-
add: AMD module support for each dependency (#46)
-
can.util
- Updated jQuery to 1.8.2
- Updated Zepto to 1.0rc1
- Updated YUI to 3.7.3
-
can.Mustache
- Added Mustache/Handlebars support with Live Binding
-
can.view
-
can.EJS
-
can.route
-
can.Control
-
can.Map
- add: List binding on .length of an object
- fix: validation error that incorrectly labels an attribute with a value of 0 as empty
- add: you can now pluralise event names to listen to matching events of that type (rather than firing a single event)
- add: compound sets now behave correctly
- fix: can.Map.delegate sets wrong event.currentTarget
- add: ability to assign object as attribute type in can.Map
-
can.Model
- fix: can.Model with attributes that are models gets corrupted when you call attr()
- add: missing dependency to can/model
- Moved can/model/elements to can/map/elements and renamed
models
toinstances
- fix: can.Model.List doesn't fire the change event on the expando properties
1.0.7 (June 25nd 2012)
-
can.compute
- Fixed a global collision with
can.Control
.
- Fixed a global collision with
-
Removed globals
- Thanks Daniel Franz!
1.0.6 (June 22nd 2012)
-
can.compute
- Added a computed value type object that can be used to represent several observe properties or a single static value.
-
can.ejs
- Fixed problem with trailing text not being added to template.
1.0.5 (June 2nd 2012)
-
can.model
- Added ability to overwrite model crud operations by defining a
make
prefixed static function, such asmakeFindAll
- Added ability to overwrite model crud operations by defining a
-
can.EJS
- Fixed problem with nested block statements.
-
can.each
- Added optional third argument that defines the context for the iterator function.
-
can/util/function
- Added
can.defer
method as an alias forsetTimeout(function(){}, 0)
.
- Added
-
can.view
- Fixed
toId
so it will work with both older and newersteal
versions.
- Fixed
1.0.4 (May 22nd 2012)
- Fixed plugin build process
1.0.2 (May 20th 2012)
- Fixed breaking namespace issue.
1.0.1 (May 18th 2012)
-
can.util
- fix:
can.each
now makes sure the collection being iterated is notundefined
- fix:
-
can.control
- add: Redirect to another controller method using a string
-
can.model
- fix: Model instances in model store will be updated when
findAll
orfindOne
retrieves updated instances fixes - fix: Static methods such as
findOne
andfindAll
can now be rejected. Thanks roelmonnens!
- fix: Model instances in model store will be updated when
-
can.route
- add: Deliminating tokens now configurable
- fix: Current route wins if all else equal
1.0 (May 14st 2012)
-
Registers itself as an AMD module if
define
is in thewindow
-
can.fixture
- add: a fixture plugin
-
can.util
-
can.route
1.0 Beta 2 (April 21st 2012)
-
can.util
- change: reverse argument order of can.each
- change/fix: buildFragment returns non cached frag
- fix: zepto's isEmptyObject was broke
-
can.observe
-
can.model
-
can.route
- fix: a host of bugs in libaries other than jQuery because can.route was not properly tested in other libraries.
- fix: can.param fixed in dojo,
1.0 Beta 1 (April 1st 2012)
Released!