3.2.0 (Nov 29 2016)
- webpack compatibility
- browserify compatibility
- can-simple-map - added support for
get
,set
, andserialize
- can-stache - support for
~
operator in expressions - can-fixture - mock XHR object now plays nicely with socket.io
3.1.0 (Nov 17 2016)
- can-connect - made behavior signatures consistent
- can-route - allowing whitespace in interpolated strings
- can-simple-map - updated to use
canEvent.dispatch
instead ofcanEvent.trigger
- can-simple-map - documentation
- can-util - correcting documentation for
inserted
andremoved
events - can-view-model - allowing a selector as the first argument
- can-view-scope - deprecating
peak
in favor ofpeek
- can-stache - updating instances of
peak
topeek
3.0.0 (Nov 10 2016)
- Code is more modular with can-* packages in their own repos
- No longer depends on jQuery/Mootools/Dojo/etc although integration with jQuery is still as easy as ever
- No more
.attr()
. DefineMap is faster and allows nice syntax conventions like getters and will give warnings when setting properties that aren't defined - Much more granular documentation - including Ecosystem modules like
can-zone
and Infrastructure modules likecan-util/js/diff/diff
- Supports real time with can-connect 1.0
- Has stache converters, which should make setting up two-way bindings easier
2.3.27 ( Sep 15 2016 )
- Adding PhantomJS from NPM for a newer version
- updating core docs to use todo/{todoId} route template syntax
- Backporting parent-to-child compute syntax from can-stache-bindings
- Backporting stache binding fix for special values. #2370
2.3.26 ( Aug 17 2016 )
- Port can-observation changes for adds updateUntil for dynamic depths
- Making colons in keys work
- Fixed nested if-s and each helper in attributes
- update map.attr value name
2.3.25 ( Aug 10 2016 )
- Set readOnly property based on val
- Change propagation in a batch with late bindings - P(1) ~12
- Support svg camelCase elements.
- fix #1541 can.Component should show a warning if tag name is missing a hyphen
2.3.24 ( May 19 2016 )
- Pass list items to .sort(fn) and don't set the comparator
- Browserify build with stache is not working
- Properties with serialize: false should not be stringified
- Fixing error compiling cjs module with JSPM
- Fix mustache core mapping
2.3.23 ( Apr 08 2016 )
- Fixes #2343. calling simple helper now includes all arguments
- Stache promise support doesn't work with ES6 promises
- Cannot bind to event with a dash (e.g. "-")
- Deprecate can.isDeferred. More accurate can.isPromise.
2.3.21 ( Mar 18 2016 )
- #each leaking memory in stache
- IE8: Stache renders radio buttons with incorrect value
- Infinite batch change in 2.3.20 causes out of order rendering
2.3.20 ( Mar 08 2016 )
- Make define properties work on can.List
- Create a CanSimpleDocument constructor
- Infinite batching
- Form reset won't work with two-way bindings on elements. w/ CanJS 2.3.15
2.3.19 ( Mar 04 2016 )
- Fast path scope computes can be unbound then rebound.
- Bugfix: elems must be an array for can.inserted()
- routeUrl helper, merge option not working
- Component fires
inserted
twice on append. - Call expressions with hash expressions are called with args reversed.
2.3.18 ( Mar 03 2016 )
- Make getter / setter converter functions possible with stache helpers
- Fix uppercase html parsing
- Move where %root is added to a component’s initial viewModel data
Type
in a component’s VM doesn’t work correctly with lists
2.3.17 ( Feb 19 2016 )
- Documentation for can.Deferred reject is not correct
- Properties on a can.route.map are coerced to strings when they should not be
- can-value does not teardown binding
- Stache parser creating incorrect output
- console.log.apply not supported on IE11?
2.3.16 ( Feb 16 2016 )
- Documentation for can.List.unshift.apply is not correct
- Switch define docs to use new example version.
- Batched change notifies child component before parent stache binding
- ../ looks up wrong property on maps
- can.Map constructor is observable
- Route/Map triggering too many changes
- {{#if}} statement within partial gets displayed outside partial
2.3.15 ( Feb 15 2016 )
2.3.14 ( Feb 05 2016 )
- double get
- A trapped and "not observed" observed info object would still be observed.
- 2190 canjs api update
- Define getters run twice. setVal is missing on first run.
- Batching/Binding Issue
- Fix
map.attr
with empty string. - Set jQuery package version using Caret
- 2183 update guides
- @index is double wrapped compute object in mustache/stache helper in latest version (V2.3.8)
2.3.12/2.3.13 ( Feb 01 2016 )
- jquery 2.2 in peer deps not supported
- Keys aren't documented
- calling methods directly on an instance of a can.Map with can.compute.read
- Parser is not allowing anchor tags as child of inline elements
- can.viewModel mentioned in the navigation but not the root page contents
- Asynchronous virtual properties cause extra recomputes
- Child bindings are called before the parent in Stache
- Dynamic select menus don't live bind correctly
2.3.11 ( Jan 21 2016 )
- makes events fired as a result of a batch happen after any previous batches
- can.batch.afterPreviousEvents firing too late
- makes jQuery work without public buildFragment and overwritable domManip
- jQuery 2.2 compatible.
2.3.10 ( Jan 14 2016 )
- Computes that are registered to be updated don't get updated if they are unbound
- nested switch statements cause a nodeList error
2.3.9 ( Jan 11 2016 )
- Partial defined by registerView throws error after element is modified
- stache system plugin needs nodeList
2.3.8 ( Jan 04 2016 )
- vdom innerHTML implementation should append a text node for script tags
- User DOM not found when rendering multiple <content>'s as a result of a batched "set"
- option value as empty string are not selected with two way binding
- Sub expression as named parameter
- FF debugging functions conflicting with can.Map
- Dynamic select menus don't live bind correctly
2.3.7 ( Dec 15 2015 )
- Incorrect view model context with <content/>
- List replace with deferreds does not take into account stale/overtaken deferreds
- two-way binding bug regarding select dropdowns when value is set in inserted or init
- support backtrack path in export {^to-parent} bindings
- Inconsistent binding with "with" helper
- can.compute | NaN -> NaN dispatches a change event
- {{(at)index}} doesn't work with arrays inside arrays
- Using a define getter breaks pushstate url updates.
- Wrong context inside <content/>
- expressions are caching Args computes in the wrong spots
- Dynamic select menus don't live bind correctly
2.3.6 ( Dec 11 2015 )
- Cannot read property 'pop' of undefined
- can.view.txt does not handle binding hookup on self-closing elements correctly
- %root property is serialized when can.Map instance is shared between a component viewModel and a can.route
2.3.5 ( Dec 03 2015 )
- Binding an undefined property to a component runs the setter
- Passing a function reference with @ runs it
2.3.4 ( Dec 02 2015 )
- Update each.js
- Stache leaks
- Stache removes attribute "id" from input elements if value should be interpolated
- makes dynamic bindings work
- makes attributes that point to {} or {{}} work without enclosing quotes
- Dynamic bindings broken
- Update deprecated_models.md
- quotes around attributes
- deprecation warning not showing up
- Stache templates leak for various reasons
- can.each doesn't work if elements is missing
hasOwnProperty
2.3.3 ( Nov 30 2015 )
- can.__isRecording observes doesn't understand can.__notObserve
- computes on Map prototypes are not readable by can.compute.read
- Live binding on a derived attribute breaks when it's removed from then added back to the page.
- Compute binding order
- Compute binding problem with setter
- elements and attributes doc
- Bug with conditional attribute
- %index doesn't work with can.Map values in master
- Rendering style tag with stache template
- Documentation Elements and Attributes
- The @index context should be skipped by
../
2.3.2 ( Nov 13 2015 )
- adds warning for mismatched binding syntaxes
- Don't remove development code from development build.
- makes exporting function work, but not pretty
- Fix issue #1202 and 'unless' helper
- Add navigator object to vdom global object - #2056
- Add navigator object to vdom
- Cannot export a component's prototype function to the references scope
- New 2-way bindings run setter twice with default values
- Added a setter for class attr to handle svg elements where className cann…
- Previous behavior restored for "old" two-way binding syntax
- All can-import tests are passing again
- Importing a template doesn't work with the new syntax
- Formalize two-way binding with selects.
- New bindings updating the scope when created
- Dead links
- svgEl.className is readOnly so live binding does not work
- stache does not update view with can.List and deep properties
- can.jquery.dev.js doesn't include dev parts of code
- After change of comparator @index in view stays the same for elements
- eq helper called twice
- Condition (helper) inside can-EVENT doesn't work
- Stache conditionals within custom attributes break in 2.3.0-pre.2
2.3.1 ( Oct 29 2015 )
- Make define part of the core
- global var "GLOBALCAN" fails
- Allow relative can-imports
- Replaced references to element.innerText in tests so that they pass i…
- references scopes are not available to bindings nested in components
- References of 'can' not locally scoped in modules
- Adding scoped reference to 'can'. Removing dependancy on Global 'can'.
2.3.0 ( Oct 23 2015 )
- sort plugin: comparator set on init does not keep list sorted
- Stache #each teardown throws an error on observable functions
- New bindings do not always update the scope
- Binding docs
- adding routeUrl and routeCurrent
- merges binding logic
- Returning 0 from a helper displays nothing
- fixes a bug with deep methods like foo.bar() in bindings
- #each doesn't work with else
- Do not use pushstate routing on file:// protocol URLs
- Add support for drag-and-drop events in can.Component
- Operators and call expressions
- Can-event gets broken in production if method does not exist.
- can.isArray behaves differently using can.util.jquery vs can.util.domless
- Rename ~ helper
- Optimize sort plugin inserts (#1883)
- Missing Doc can.Deferred.prototype
- sub-expression methods that return data are broken
- slice and join are not observable
- Add ability to override can.route's batch with other batching implementations
- can/view/autorender doesn't import $.fn.viewModel
- Conditional "readonly" attribute does not work
- "for" attribute is "htmlFor" property
- Fixes #1862. Objects with addEventListener now bindable
- Add textarea example to can-value docs
- switch/case might not work when nested
- Pushstate should prevent default for javascript:// links
- stache expressions don't work right with parent context values
- Makes sure unbind is not call unnecessarily on can.Lists passed to can.view.live.list
- can.view.live.list unbinds from the list unnecessarily
- Stache subexpressions
- Steal Stache plugin should provide module id and path to templates
- Create ~ helper for joining to the baseURL
- Pass options to helpers
- Pass parent scope helpers to helper's options
- Merges master into minor
- Parent helpers inside helper
- Live-list diffing
- Expand the Observables guide page
- Add screenshots to the 2.3 guides
- can.List filter should return lists of the same type
- Work-in-progress version of the new guides
- Observable promises is not documented
- Revert "Use [.] to represent a template's viewModel"
- Sort plugin excludes batchNum; Maybe fires unnecessary events
- Sort plugin evaluates insert index for batched events
- Sort plugin swaps equal value items
- Deprecate can.Map.prototype.COMPUTE-ATTR
- autorender system plugin should normalize the main
- Import view model
- Stache and Mustache registerSimpleHelper
- can-href
- can.view.href
- Document setting context of Stache data helper
- Changing context in a Stache template breaks the data helper
- {{#helper}} documentation examples are missing the "#"
- getHelper for can.stache and can.mustache should not require options
- Better docs on iterating performance of #section and #each.
- methods get arguments passed to them
- Dev Mode Warning on "watch" properties
- Proposal:
can-scope
for exporting scope into the surrounding context. - can.view.attr won't trigger in can.mustache if no value is provided
- Documentation raises error 404 in can.route.map demo
- can.Compute as a prototype based can.compute
- Document how mustache tags handle lists
- Native CanJS Event Streams
- can.mustache #if renders !! when value changes
- can.Model.models documentation unclear
- Mustache helper has no rendered output, if the output is 0.
- can-href link helper
- registerSimpleHelper
- Putting a can.compute on a Component scope throws
- define::set doc issues
- Mustache deferreds
- 951 can model promises
- {{#with}} Mustache helper pushes can.compute into Scope, breaks can.compute.read
- can-value="." not working properly
- Dev Warning : mutable values in can.Control.defaults
- can.route.default
- Live binding of not-yet-defined attr in a Component's template fails
- can.route triggers event two times for setting nested object.
- Make promises observable
2.2.8/2.2.9 ( Sep 11 2015 )
- View bound to method breaks on re-evaluation
- fixed regression component control destructor
- Fix typo in default generator dependent property resolution logic
- attr.split() causes errors in IE10,11 in live.js on CanJS 2.2.6 when using jQuery
- Only attempt unbind when __bindEvents is defined
- can.Component events registered twice in 2.2.x
- can.map throws strings, not errors.
- Handle a few sort plugin edge cases
2.2.7 ( Jul 24 2015 )
- can.compute change handler context should be the function not the can.Compute object
- Provide a getter and setter compute interface for non-map-like targets
- Unable to load canjs in node.js environment
- Makes scope.computeData listen to every observable in scope when value is not defined.
- <select can-value="{value}" with undefined value and option without value
- Conditional can-EVENT bindings don't work in stache
- Event handlers attached on Component's init (event) are not called.
2.2.6 ( May 20 2015 )
- Fix calling define getters on map initialization
- Cleans up computes and fixes deep .attr calls.
- can/define with type: 'string' given values of null or undefined returns 'null' or 'undefined'
- Mangled file in AMD builds
- Compute memory leak with nested properties
- can.Model.findAll should reject if parseModels returns a non-array
data
property. - Cannot bind to future nested properties
- Check for vulnerability against iOS 8 object length bug
- can.stache helpers that rely on array replacement don't work, but work in can.mustache
- Helpers bind to nested properties differently in stache/mustache
- Cannot read value of property defined with "get" AND "set" methods
- Use Function.prototype.bind if available
- Compute code gets inserted into DOM with Stache sometimes
- Problem with defines called out of order
- can.compute nested key behaviour inconsistency with map bindings
- bug with component that has an if inside an inverse tag
2.2.5 ( Apr 22 2015 )
- #each helper should use it's own NodeList
- Nested can.Component with <content/> tag causes detached DOM nodes
- Nested can.Component causes detached DOM nodes
- can.appendChild passed null el
- CanJS 2.2.4 can.List.replace() incorrect behavior
- allow comporator fn return any negative value
- can/map/define default behaviors with "*"
2.2.4 ( Apr 03 2015 )
2.2.3 ( Apr 03 2015 )
- Fix AMD build, bring back can/util/library and can/util/can
- Stache sets up live-binding with plainJS objects and the section helper
- Autorender denormalizes typeModule in Steal production mode
- DOM appears to be held in memory in certain conditions with components rather than be destroyed
- #each causing duplicates
- Individual ready counters.
- Do not dispatch events during a set to a compute backed property.
- define getters throw two events
- autoload does not work with standalone build
- Prevents updating scope due to scope changes, avoiding an infinite loop problem.
- Batched Changes can create cycles in components two way bindings
- steal specific handling has been removed in 2.2.2 dists
- Makes sure promise observe data has a cid and the promise can be read from
- New promises are not rebound and can not read alternate properties on promises
- List#sort does not cause {{#each key}} to update
- component fire inserted event twice with zepto
- svg element inside stache template is not rendred correctly
2.2.2 ( Mar 31 2015 )
- makes can-EVENT arguments values instead of computes and functions
- Fixes section helper with lists
- View model docs cleanup
- can.stache and lists {{#data.items}}
2.2.1 ( Mar 24 2015 )
- List.prototype.__set should not assume to create an array for indices out of bounds
- Prevents listening to events that happen while reading the compute
- v2.2.0 - The included
global.define
breaks UMD defs in other scripts - cleans up can.Compute.read and adds template-obserbable promises
- Update components.md
- Adding viewModel to Components control instance
- Update the binding count correctly after calling removeEvent
- #1521 define map properties in the same order they're defined
- Problem with defines called out of order
2.2.0 ( Mar 16 2015 )
- Renaming and adding can.Component viewModel property.
- Set the context correctly when an async compute has a length of 1
- Typo (use of @params instead of @param) in can.Model's documentation
- Added a note and some sample code illustrating relative can.view.Scope.attr lookups.
- Adds can.Compute, and "compute" type and setter / getter paring for define pugin
- can-value doesn't two way bind with a key value that has 0 and one values to a checkbox
- spaces around a key with
can-value
do not two way bind - can-EVENT can not call intermediate functions before calling the final function
- can.fixture.store with objects does not work for .create
- can.Model resource is not creating "destroy" static method
- Don't change route if the only change would be prepending "!"
- Make RequireJS work with can.import
- Complete the Sort plugin
- Can attr set checkboxes
- add/remove events always give you back arrays
- Moved jquery out of travis.yml file and into devDependencies #1418
- can.route.setState doesn't deep clean the route
- travis.yml before_script
- Observable can/map/backup plugin
- removing bound scope properties on destroy
- CanJS can-value does not work for multi-select when options are rendered using Map
- Insert can.compute into can.Map
- Dev warning: custom tag is already defined
- {{#is}} and {{#eq}} helper
- can.List.prototype.sortIndexes is defined but not referenced
- A splice where can.List ends up exactly the same should not produce any events.
- #each doesn't work with null values that change to a can.List
- Memory leak in CanJS template/model
- can-autorender
- can.stache and can.mustache templates don't resolve partial names against the scope.
- can.stache will import components it depends on
- can.import
- getOwnPropertyDescriptor causes fatal error in IE8
- can/map/define default behaviors with "*"
- updating module names for builder
- booleanAttr for components
- Models with no id (undefined or null) are placed in model store
- can/map/define doesn't work more than one level deep.
- rename can.Component scope to context?
- can.List.prototype.sort is not working
- can-EVENT arguments
- {{prop}}CHECKED{{/prop}} doesn't work if someone manually changes input checked and then changes value elsewhere (visible in TODOMVC)
- can-event doesn't pass extra arguments
- Default empty route event fires twice on page load
- can-event trows an error when inside #if block
- can.route - Allow changing the route (and URL) without saving to browser history
- Block level elements should be able to render inside anchor tags
- can.fixture has no way to allow AJAX calls to circumvent it, if necessary
- Sorting a List doesn't update in a template correctly
- can-EVENT removed in live bindings doesn't unbind
- Lexical semantics for can.Component
- Constructor names visible in debugger
- Fix
can.List
event docs, as well as an event ambiguity - new fixture store API is not documented
- Improvement: can.list.pushAll and can.list.unshiftAll shortcuts
- Replacing can.Map.List and can.List.Map
- Ensure can-value bound input stay in sync with compute
- can-value becomes out of sync when a compute rejects the new value
- input with can-value keeps wrong value prevented with setter plugin
- can.list.sort triggers event before sorting but none after
- Improve can.scope and $.fn.scope code and add assignment support
- Pass local helpers to sub templates.
- can.batch.start/stop causes can.List with length>1 to render last element twice
- Advanced linking / setting of attribute values and computes
- Live binding does not maintain the cursor position.
2.1.4 ( Nov 21 2014 )
- change: Make can.Construct work with getter / setters (and super plugin)
- change: Update compute.read to also return constructor functions
- change: property for which no validations are defined throws an exception
- change: Reading from undefined values in scope.
- change: Fixed function overwrite
- change: Using attrData.scope.compute as a setter throws an error if the getter hasn't been called
- change: Setting computes created with computeData will throw if set first
- change: Fix IE7 character access
- change: $.fn.scope undefined when using CommonJS
- change: Cannot read properties of can.Map inside a property's value method
- change: Removed madeMap and getMapFromObject from LazyMap since it's unused
- change: Dispatch correct arguments with can.List:splice if inserting and removing the same elements.
- change: Inconsistent results when extending parsed can.Models
- change: scope objects with constructor function properties are treated as methods
- change: Mustache warning on helpers
- change: Extending a Model overwrites parseModels()
- change: Unused variable in can.Model
- change: Fixed Mustache getHelper() so that it doesn't need second argument
- change: can.route.map docs
- change: can.camelize and can.hyphenate not documented
- change: Issue: can.view(function, deferred, callback) does not work
- change: can.stache dosent render custom tags with Colon ":"
- change: Documenting what new Model.List() does with no args passed
- change: Bug: can.List.splice(-1) causes JS exception inside binding framework
- change: can.Map code block cleanup and fix failure to render.
- change: can.view.preload breaks can.view.attr
- change: Fix rendering of <col> inside <table> in templates.
2.1.3 ( Aug 25 2014 )
- change: IE 8+10 fixes
- change: makes sure can.compute.read can read a final can.route value
- change: Allows maps passed to can.Map's constructor
- change: Makes can.route.current is observable
- change: component does not update scope on id, class, and data-view-id attribute changes
- change: Prevent 'leaking reads' on single bind computes
- change: can.Map constructor fails if passed another Map
- change: Incomplete documentation for can.List.prototype.filter
- change: can.Map method not become computable automatically
- change: can.route.current is not live-bindable
- change: setupSingleBindComputeHandlers leak temporary observables.
- change: can.compute.read should not call can.route
- change: Fix for #1132
- change: Fix for #1143
- change: Fixes compute.read with a Map wrapped in a compute
- change: Error when using a helper with 2 string arguments
- change: Simplifying and clarifying lazymap docs
- change: Documenting how to access Map properties containing a dot
- change: Fix the tabbing/spacing in the validation markdown files, and re-path th...
- change: Fix @typedef name to be dot-separated.
- change: Parse Error when a stache template contains SVG content
- change: test and fix #1079
- change: Fixes #1078 - add offset support to @index
- change: Fixes #1074 - Only call findAll once if argument is a deferred
- change: Document accessing attributes with dot in the name
- change: can.Construct passes original arguments to setup and fixes can.Model's setup accordingly
- change: Corrected pushstate tests and update can.test.route
- change: can.stache read function bug
- change: Model.resource is not working with inherited classes
- change: Id and class attributes are not ignored in the route URL
- change: @index is not using offset param
- change: new Foo.List(Foo.findAll()) calls Foo.findAll twice
- change: Store docs
- change: Multiple issues with Model
- change: can.LazyMap docs do not read clearly
2.1.2 ( Jun 16 2014 )
- change: Adds event target back for Map events
- change: Evaluate and cache text sections properly
- change: can.Map events Object missing target property
- change: Fix can.debounce and can.throttle context
- change: can.stache is returning incorrect values for DOM attributes
- change: Fixed incorrect scope for can/event's delegate and undelegate
- change: Warnings for map/define
- change: 1050 component tagnames
- change: Regression in component naming
- change: Model destroyed bug
- change: Remove NodeLists from Stache
- change: #1019 Unless does not live bind
- change: Making routes not greedily consume slashes by default
- change: Map define warn
- change: calling reverse on a model list breaks its "destroyed" bindings
- change: can/event delegate/undelegate aren't using the correct scope
- change: Codeblocks styling in COMPUTE-ATTR
- change: nested component within an #if is not live bound
- change: {{#unless}} does not live bind
- change: #716 can.Model now warns the developer when no static properties are specified
- change: fixes map unbind bug
- change: 404 on can.view.Scope().readOptions docs
- change: Fix rendering of <col> inside <table> in templates.
- change: fix documentation for can.batch.stop
- change: can.stache performance
- change: Bug with conditionally nested components using stache
- change: can.batch documentation is wrong
- change: can.debounce keeps the context after being called the first time
- change: Dev warning when can.Model is extended without static properties.
2.1.1 ( May 21 2014 )
- change: 404 on define example
- change: Fixing define demo
- change: Fixing up component and scope docs
- change: Helpers are now passed into partials. Fixes #791.
- change: can.mustache: {{else}} does not work for {{#unless}} block
- change: Define demo broken in chrome
- change: stache: Custom elements in IE8 contain a colon
- change: Adding ability to mix can.event into can.Controls safely
- change: Mixing in can/event conflicts with can.Control-based classes
- change: added can parameter
- change: adding tests for can.route.map
- change: Scope docs
- change: Component warn
- change: add warning when component attribute is ignored
- change: stache: Using {{else}} inside of an attribute
- change: Misspelling in stache docs - differences from mustache
- change: Upgrading html5shiv to 3.7.2
- change: Stache conditionally nested components
- change: Bug with conditionally nested components using stache
- change: Bug with stache using view/bindings
- change: Wrong context in serialize of can.map.define
- change: Contributing clarification
- change: can.Mustache: using local helpers inside partials
2.1.0 ( May 05 2014 )
- change: fixes IE8
- change: IE fixes
- change: stache issue with steal and single quotes
- change: Update component docs about passing in data via attributes
- change: can.Mustache, can.EJS and can.view.mustache, can.view.ejs are depreicated
- change: Finalize can.Map.define docs
- change: Warning not using extend.
- change: Adding guide for developing plugins
- change: List promise documentation.
- change: Mustache dev logging
- change: can.Map.define
- change: Makes can-value and can-EVENT work with {}
- change: Fixes bugs with custom self-closing tags and empty custom tags.
- change: {} works with can-value and can-click
- change: Stache doesn't register correctly with steal
- change: can.Mustache is converting a can.Model to a can.Map
- change: can-value handling null in addition to undefined for select elements
- change: can.view.live docs
- change: Updates to recipes page
- change: can.stache using ^ inside a tag throws an exception
- change: Fix implementation of ./
- change: can.stache won't render if self-closing content tag is used
- change: Add "./" to mustache to denote selecting a property from current scope
- change: can/event
- change: Subclassed Model.List should inherit from their parent Model.List
- change: Docco inline documentation
- change: Adds computed attributes for can.List instances
- change: Emit events for can.List.prototype.reverse
- change: Fix inverse ^ to be able to use {{else}}
- change: Adding test for #each with child sections
- change: Remove all references from Model.List on model destroy.
- change: Test for Mustache if sections removing all content
- change: Update can.fixture request data with id
- change: Settable can.computes
- change: can.Map.prototype.define
- change: batchNum issues
- change: Change syntax for passing in template objects to Components to use
{}
- change: changing cross-binding comparison from === to ==
- change: can-value when cross-bound with input value using === comparison
- change: Restful behavior not fully implemented in can.fixture.store.findOne
- change: Fix for calling removeAttr with number type (on lists)
- change: Bug in log() method in can.view.Mustache
- change: Added delegate/undelegate fallbacks to bind/unbind and fixed broken Zepto/Dojo delegate implementations
- change: can.route crossbind to can.Map
- change: Inverse ^if doesn't work correctly with an else
- change: #each with nested #if not working as expected
- change: Mustache live binding throws "Cannot read property 'length' of undefined" in can.view.elements.after
- change: can.Model.List should extend an existing List
- change: Dev warning when mustache doesn't find a helper
- change: Recursive mustache template ends with "Maximum call stack size exceeded"
- change: Dev warning when mustache doesn't find a variable
- change: can.Components ignores attributes containing "id"
- change: Adds a can.List promise plugin.
- change: can.List.filter
- change: Content not removed when it should be
- change: defining 'can' missing. setting it as a dependancy
- change: Calling .fn() without arguments should forward scope by default
- change: Path accessor to prevent walking up the scope
- change: Observe attributes for #637
- change: Attributes event API
- change: can.view.tag and can.view.attr
- change: 2.1 API Changes
- change: can.view returns a renderer function that returns a string
- change: Added parseModels and parseModel to fix duplicate instances being created after create an update.
- change: Added test to issue #560
- change: can.Model#save: values for attributes not found in response are replaced with their defaults
- change: Select with multiple-selection for can.view.bindings (i.e. two-way binding via can-value)
- change: Update on can.Model's nested object throws error on recursive mustache template
- change: can.Model: one URL property for REST resource
- change: Adding wildcards to attributes plugin
- change: Inconsistency when passing functions (e.g. descendants of can.Construct) to helpers.
- change: Mustache - TypeError: Cannot read property 'childNodes' of null
- change: Make can.extend's deep copy clone CanJS classes
2.0.7 ( Mar 26 2014 )
- change: Configuration for AMD development build
- change: 2.0.6 dev errors
- change: AMD dev build
2.0.6 ( Mar 14 2014 )
- change: Allow type inference for fixture parameters.
- change: Updating sourceURL syntax to use # instead of @
- change: Changing typeof check to a check for apply (#681)
- change: Nested component tags of same type throws an error
- change: #773: Fixing date compare logic in can.Object.same.
- change: Enable removeAttr on Map keys with dot
- change: can.Object.same: compare logic is incorrect when it comes to dates
- change: scanner.js error: Using //@ to indicate sourceURL pragmas is deprecated
- change: Bug in sample code on http://canjs.com/ homepage
- change: #713 cleanup can.Control, fixup contributing guide
- change: can.computes that return nulls can be used with #each
- change: can.fixture no longer says id 1 and id "1" are the same
- change: Fixes
updated
callback to can.compute's on/off to simply need to be called. - change: compute signature not working
- change: 2.0.5 idOrUrl require.toUrl() change documented
- change: can.view Breaking backward compatibility in v2.0.5 amd
- change: confusing example for can.Control template data passing
- change: Canjs not working in default android browser.
- change: sourceURL comment in Scanner.prototype.scan() cause error on IE8
2.0.5 ( Feb 04 2014 )
- change: fixes looking up @ and sets links to docco
- change: Fixing truncation of special attribute (src and style) values containing '='
- change: Fixes IE in all browsers for all libraries
- change: Fixes can.Map::compute to handle deeply nested properties
- change: Live binding attribute in a truthy section does not work
- change: Pluginify tests
- change: Prevents attributes like can-click and can-value from being converted to scope properties
- change: JSHints CanJS
- change: Live binding attributes with no '=' does not work
- change: Fixed the pushstate #652 test to ensure that it should pass in all libraries and phantomjs
- change: Ignore attributes fix
- change: Changing can.Control.route to match pushstate (#612)
- change: Rewrote the pushstate #652 test for stability purposes
- change: Fix for incorrect ignore attributes pattern
- change: Development mode builds
- change: Migrated the fix for can-value with radio buttons from bindings to elements
- change: Fixing the test for pushstate #652
- change: Moving can-value test and fixing IE7 radio button bug
- change: #686 - Fix document.contains issue on Android
- change: Android - document.contains
- change: can.List.Map documentation
- change: Suggested fix to broken attr behaviour
- change: Fixes a memory leak with live binding.
- change: Unexpected behaviour while using a Map
- change: Live-Binding memory leak
- change: Unescaped attributes
- change: scope as Map constructors do not respect default "@" values
- change: no doubled history states
- change: Fixing variable format so it doesn't break Steal build
- change: routed links must descend from pushstate root
- change: util/zepto doesn't use $.fn.remove()
- change: template files relative to requirejs baseUrl
- change: exclude actual root from deparam
- change: Partials within #each not working.
- change: Undefined compute live bind fixes
- change: 2.0.4 Live @index still not working correctly
- change: Broken live-binding with can.compute if compute is updated with a can.Construct
- change: can.Mustache / can.view.Scope: Can't access static properties from an object's constructor.
- change: #each on undefined attributes not working anymore in 2.0.4
- change: can-value in checkboxes in IE7
- change: can.computes with can.Map.prototype.attr() do not set up bindings
- change: Changing can.Control.route selectors to match pushstate.js
2.0.4 ( Dec 23 2013 )
- change: 2.0.4 test fixes
- change: Makes live safeStrings work
- change: Working @index in mustache templates
- change: Fixes nested components and
<content>
tags. - change: Fixes a problem with double inserted events
- change: benchmark.js and minor performance improvements
- change: Node lists rewrite
- change: temporary fixed mustache index calculation with simple can.List when remove first item of list
- change: Serialization
- change: can.Component ATTR value is undefined when passing a function as a scope
- change: restore will not remove properties that were added since the last backup
- change: can.Mustache.safestring does not work with computed properties
- change: Items pushed on lists don't get removed from the DOM in some cases
- change: Functions globally defined when it shouldn't be
- change: undefined list passed to {{#each}}
- change: Added test for inserted event bug (live binding block)
- change: Support Offline Testing
- change: When using certain html-comments, can.view.Scanner does not recognize them correctly
- change: teardownMap slows perfomance drastically
- change: test for component content extension stack overflow bug
- change: Split element classnames fails with {{#if}}
- change: fixed an error that is caused by the timeout firing after the element has been removed from the DOM
- change: Please add trailing slash support for can.route.pushstate
- change: Overwrite can.Map.List.prototype.serialize to avoid infinite loops
- change: Iterating over component data not as expected
- change: can-value shows "undefined" if bound to undefined value
- change: Maximum Call Stack Exceeded When Destroying a nested model
- change: Individual test pages should run in CI as well
2.0.3 ( Nov 26 2013 )
- change: fixes #577
- change: Text live binding remains bound
- change: fixes for #575 - non-component custom tags
- change: Non component custom tag problems.
- change: fixes for jQuery's inserted event and some quick inserted helpers
- change: Component inserted event doesn't work with jQuery 1.10
- change: fixes #568 and makes nulls render to empty string
- change: Mustache loops do not print 0.
- change: Observe builder update
- change: Providing a can.Map constructor function to a component's scope does not work.
- change: 552 index calculation
- change: @index is not calculated correctly when there are identical elements in the list
- change: Inside the eventHandler this.scope is not set (as it's called on the scope itself)
- change: Bower support, multiple jQuery versions
2.0.2 ( Nov 14 2013 )
- change: cloning setter comptues
- change: Event listeners leak in 2.0.1
- change: can.VERSION for 2.0.1 says @EDGE rather than 2.0.1
- change: 'key' property breaks mustache helpers
- change: component does not respect can.compute passed via attributes
- change: Wrapping can.compute in can.Map breaks live-binding
2.0.1 ( Nov 12 2013 )
- change: Fixes #538 helpers aren't called is data passed to the template happens ...
- change: Update included plugins and release tasks
- change: mustache: 'with' string is interpreted as with helper keyword
- change: can.Component two way binding issues
- change: New lines are not handled properly in special attributes
- change: can.Control: {document} events are not working
- change: "{document} body click" breaks in latest
- change: pushstate() and preventDefault() were not working on default route becau...
- change: Make $#domManip patch jq2.0-compatible
- change: broken livebinding after replace can.Map property or remove property
- change: fixes a problem with each not working if the whole list is replaced
- change: can.Map stack exceeded on circular data structures
- change: Fixes #512 #513, sees the glorious return of can.camelize and his trusty sidekick, can.hyphenate
- change: List.join is not compute-able
- change: Fix to multiple tags not necessarily having the right context. Close #515
- change: avoids jQuery's event system when binding on observes which fixes #280
- change: Implement can.Mustache.safeString
- change: can.Component helpers context issue
- change: can.camelize
- change: can.Component template attributes name case
- change: Makes attribute arguments passed to a component two way binding
- change: Fix
Model.List.prototype.findAll()
in IE8. - change: Return a new can.compute every time (new can.view.Scope()).compute() is called
- change: Mustache and EJS issues with attributes and truthy blocks
- change: Handlebars {{#if}} losing scope of var
- change: can.Model.List() updates its length after destoy() of one of its models only if it has bindings
- change: can.Mustache doesn't support SafeString
- change: can.Mustache: inconsistent behavior when updating nested attributes of an Observe
- change: Support Handlebars @key and @index directives
- change: Accessing a parent array property from within mustche
- change: can.Observe binds for nested object. First time event trigger is only on top level object instead of nested one.
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/canjs/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!