Skip to content

Latest commit

 

History

History
725 lines (511 loc) · 49 KB

CHANGELOG.md

File metadata and controls

725 lines (511 loc) · 49 KB

v3.0.6 (2015-09-07)

Bug Fixes

  • gridUtil: Fixes gridUtil.off.mousewheel event handler (4057c64d)
  • infiniteScroll: Fixes infinitescroll scrolling
  • moveColumns: Restore column order after altering columnDefs array. (2d433bb)
  • pinnedColums: Included pinned columns in export of visibile data. (0b37bc4), closes (#3888)

v3.0.5 (2015-08-25)

Bug Fixes

  • cellNav: Error when field defined with number (5b74559f, closes #4258)
  • columns: don't reset resized columns on data reset by default (bda48aab, closes #4005)
  • core:
    • fix #4180 by adding validity check for minWidth and maxWidth (5b03cb2d)
    • IE does not render correctly when binding is used in style. use ng-style instead (9aea44ac)
  • customizer: Fixes less customizer in docs (f739d9fd, closes #4079, #3918)
  • edit: fixes #4129 by only adding edit listener events when needed because of 'track by (e6bc3009)
  • expandable: fix #4156 by calling stopProp on subgrid scroll (a7dd337a)
  • less: Makes less bootstrap dir a variable (654c75f9, closes #3368)
  • pagination: avoid initial double firing of paginationChanged (1407038b)

Features

  • core:
    • Adds GridRowColumn to core (2bed5307)
    • Add Clear all filters to grid menu (77ffba5a)
  • i18n: Completes zh-cn translation. (0ad28408)

v3.0.4 (2015-08-13)

Bug Fixes

  • grouping: Grouping now raises a sort changed event (d30b1ad3, closes #4155)

v3.0.3 (2015-08-10)

Bug Fixes

  • build: Fixes Grunt Task not Publishing (7571028d)

v3.0.2 (2015-08-10)

Bug Fixes

  • flushDirtyRows will not throw an error when no dirty rows (d46d04ca)
  • Build:
    • Allow Angular 1.3.x upper constraint (13d93f4e, closes #4064)
    • Handle -stable suffix for stable files (f6c881e9)
  • Grid: Allow >45k row identities (d533200f)
  • cellNav: cellNav not getting attached to left container if it is built after body is rend (36f386f4)
  • core:
    • consider enableFiltering in autoAdjustHeight (43974c48)
    • fix template issue in angular 1.2 (d9c50cf3)
  • edit:
    • fix for Chrome and numeric inputs (7d8af94c)
    • selecting text no longer required on editor After implementing viewPortKeyPress, (d609a108)
    • add/remove mousedown events in cellNav on beginEdit/endEdit A recent change by A (708231f9)

Features

  • cellNav: Accessibility Support to Cell Nav (9532de2b, closes #3896)
  • core:
    • Two new directives to one bind (a9d2f903)
    • grid menus accessible (1d577b15)
    • Accessibility and keyboard support to the grid header. (1f1de5a4)
    • Accessibility and keyboard support to the filter controls. (11a1ae55)
    • Basic screen reader accessibility functionality (377485a4)
  • edit: raise beginCellEdit in timeout allows complex editors time to render so they can (6b5807fe)
  • gridUtil: Focus helper functions (94e50a53)
  • i18n:
  • pagination: Accessibiliy & Keyboard Support to Pagination Controls (ee04132a)

v3.0.0 (2015-07-17)

Bug Fixes

  • Grid: Force scroll to 100% when necessary (3bcbe72d, closes #3772)
  • Tests: All e2e tests working in Firefox (b9cc39f1)
  • core:
    • change scrollbar-placeholder background-color to transparent (18a487ea)
    • add a horizontal scrollbar placeholder when needed (365f21f0)
    • fix #3666 #3531 #3340 thanks to @500tech-user and @Jacquelin for PR's that led t (e582174a)
  • edit: fix lost focus and cell scrolling into view on edit (e9a6d4eb)
  • grouping: grouping a pinned column was broken (acb7e7b6)
  • i18n: Replace ZWNJ with \u200c in Persian (2f2936ae, closes #3842)

v3.0.0-rc.22 (2015-06-15)

Bug Fixes

  • Edit: Allow COL_FIELD in editable templates (fa9066b2)
  • Selection: Prevent IE from selecting text (a1bbc0c5, closes #3392)
  • cellNav:
    • #3528 handle focus into grid from other controls (92477c7a)
    • IE was scrolling the viewPort to the end when the focuser div received focus. S (aa563554)
    • focuser element should not have width or height or else the window will scroll t (6997d2b7)
    • was processing left and right renderContainers where there is no need fix(edit): (6f5d503d)
    • add an empty element to focus on instead of focusing on the viewport (6937d4d5)
  • edit:
    • #3128 remove grid scrollbars when in deepedit to prevent any scrolling of parent (91077e82)
    • deep edit keydown logic wasn't right (9e995e9e)
    • tweak the deep edit keydown logic so that Enter and Tab stops editing (fbc38cb1)
    • #3742 dropdown was not calling out to cellNav for cellNav keys. also refactored (2edc4d66)
    • Edit events were being attached in gridCell directive even if edit was not enabl (13ab0945)
  • gridEdit:
    • #3373 spacebar on checkbox was incorrectly invoking deep edit mode (4d9ec8b5)
    • issue 2885 non-character fields were invoking edit. Not sure if I got all the k (025c8939)
  • gridUtil: rtlScrollType using wrong method (15ee480e, closes #3637)
  • moveColumn: account for width of left container when positioning moving column header. (06f223bb, closes #3417, #3395)
  • saveState: Saving state was storing rowHeader columns, causing issues on restore. (c9ce96af)
  • treeBase: Change calculation of number of levels in tree (26ca6215)
  • uiGrid:
  • uiGridColumns: Fix auto-incrementing of column names (a10f1414)
  • uiGridHeader:
    • ensure that styles are rebuilt on explicit height (65ad61f4)
    • Recalc all explicit heights (43f63ac9, closes #3136)

Features

  • grouping: Add option groupingNullLabel, to group null and undefined values together. (9fbb1b87, closes #3271)

v3.0.0-rc.21 (2015-04-28)

Bug Fixes

  • Expandable: Run with lower priority than ngIf (949013c3, closes #2804)
  • RTL:
    • Use Math.abs for normalizing negatives (4acbdc1a)
    • Use feature detection to determine RTL (fbb36319, closes #1689)
  • cellNav: fix null ref issue in navigate event for oldRowColumn scrollTo should not setF (02b05cae)
  • pinning: restore correct width state (4ffaaf26)
  • scrolling: Fix for #3260 atTop/Bottom/Left/Right needed tweaking (89461bcb)
  • selection:
    • allow rowSelection to be navigable if using cellNav; allow rowSelection via the (95ce7b1b)
    • allow rowSelection to be navigable if using cellNav; allow rowSelection via the (3d5d6031)
  • uiGrid:
  • uiGridColumnMenu: Position relatively (9d918052, closes #2319)
  • uiGridFooter: Watch for col change (1f9100de, closes #2686)
  • uiGridHeader:

Features

  • saveState: add pinning to save state (b0d943a8)

Breaking Changes

  • gridUtil will no longer calculate dimensions of hidden elements (e7dfb8c2)
  • Two events are now emitted on scroll:

grid.api.core.ScrollBegin grid.api.core.ScrollEnd

Before: grid.api.core.ScrollEvent After: grid.api.core.ScrollBegin

ScrollToIfNecessary and ScrollTo moved from cellNav to core and grid removed from arguments Before: grid.api.cellNav.ScrollToIfNecessary(grid, gridRow, gridCol) grid.api.cellNav.ScrollTo(grid, rowEntity, colDef)

After: grid.api.core.ScrollToIfNecessary(gridRow, gridCol) grid.api.core.ScrollTo(rowEntity, colDef)

GridEdit/cellNav When using cellNav, a cell no longer receives focus. Instead the viewport always receives focus. This eliminated many bugs associated with scrolling and focus.

If you have a custom editor, you will no longer receive keyDown/Up events from the readonly cell. Use the cellNav api viewPortKeyDown to capture any needed keydown events. see GridEdit.js for an example (052c2321)

v3.0.0-rc.20 (2015-02-24)

Bug Fixes

v3.0.0-rc.19 (2015-02-11)

Bug Fixes

  • Filtering: Let mobile devices tap filter box (01c22acf)

  • Grid:

    • Add css to allow iOS momentum scroll (48fd5021, closes #2671)
    • Allow col reordering with column defs (865573cd, closes #1948)
    • refactor(core) ui-grid $parent scope is now automatically assigned to grid.appScope. gridOptions.appScopeProvider can be used to assign anything to grid.appScope
  • GridColumn: Allow for duplicate field coldefs (82a72130, closes #2364)

  • GridRenderContainer: Redraw with scroll % (bc2c68ab, closes #2357)

  • Mobile:

    • Don't prevent default container touches (8fe4e498)
    • Allow either touch and mouse events (654e0ce8)
    • Bind only to touch or mouse events (995d3c47)
  • Selection: Fix selection w/ row templates (b1a57b69)

  • Tests:

  • Tutorials: Point back to angular 1.2.26 (96625e2a)

  • cellNav: If cellNav api exists, turn on stuff (14264540, closes #2294) *refactor(cellNav) remove unused $scope parameter from api methods

  • uiGridHeaderCell:

  • uiGridRow:

  • edit: edit cell scope was not being destroyed when element was removed

  • gridApi add ability to pass _this variable in api.feature.on.eventName

Performance

  • Grid encapsulate the renderContainer canvasHeight and GridRow.height properties Changes getCanvasHeight function to only recalculate all the row heights when needed. Adds a CanvasH eightChanged event to api.core

Features

  • Core: Implementation for #2483. Adds a showGridFooter option that will create a grid (d0233601) * Adds a showGridFooter option that will create a grid footer with the Total Items and Shown Items displayed. Also shows Selected Items if using Selection feature.

  • cellnav: provide row option to disallow all cells from having focus (1bc05ebc)

  • uiGridRow: Allow dynamic row templates (a547a52e)

Breaking Changes

  • getExternalScopes() function is removed. Use grid.appScope instead. external-scopes attribute is removed. Use gridOptions.appScopeProvider to assign values other than $scope.$parent to appScope

  • removed scope parameter from grid.api.cellNav methods old: scrollTo($scope, rowEntity, colDef) scrollToFocus($scope, rowEntity, colDef) scrollToIfNecessary($scope, row, col) new: scrollTo(rowEntity, colDef) scrollToFocus(rowEntity, colDef) scrollToIfNecessary(row, col

  • scrollbars.WHEN_NEEDED no longer an option

  • showFooter option renamed to showColumnFooter; footerRowHeight option renamed to columnFooterHeight (d0233601)

  • On mobile devices the user will have to long-click to edit a cell instead of double-clicking (654e0ce8)

  • rowEdit: * remove grid from all method signatures

  • importer: * remove grid from importFile signature

  • core: * remove grid from notifyDataChange signature

v3.0.0-RC.18 (2014-12-09)

Bug Fixes

  • Builds: Switch to websockets to get SauceLabs tests running again

v3.0.0-RC.17 (2014-12-08)

Bug Fixes

  • Aggregation: Refactor introduced bug (a54c6639)
  • Builds: Turn off Safari 5 for SL (3cf645ea)
  • Edit: Remove leftover console.log() (3b707584)
  • Header: Hidden header height misplacement (783fefbd, closes #1995)
  • Pinning: Add left border for right container (e409c54b)
  • RTL: Put filter cancel on left for RTL (0885e509, closes #2058)
  • Tests: Accidentally left in a ddescribe (e6cf438a)
  • cellNav: Don't setup when directive not there (9bfa6e3f, closes #2128)

Breaking Changes

  • The hideHeader option has been changed to showHeader

To migrate, change your code from the following:

hideHeader: true

To:

showHeader: false (783fefbd)

v3.0.0-rc.16 (2014-11-13)

Bug Fixes

  • Edit: Retain "focus" in endEdit() (f3a45ef5)
  • Filter: Watch running w/o change check (79f6c21a)
  • Grid: Avoid too-early header height calc (a335b922)
  • GridRenderContainer: Correct prevScroll* (1182b059)
  • Selection: Change api for getSelectAllState() (5ffefafc, closes #2086)
  • cellNav:
    • Don't lose focus with wrapping nav (0e27c181)
    • Minor fixes and speed improvement (94a31149)
  • gridUtil: Allow multiple logDebug params (c903ecc8)
  • uiGrid:
    • syntax error, change variable name (63fedb6c)
    • syntax error, change variable name (181dec76)
    • Fix race condition in data watcher (2b25f249, closes #2053)
  • uiGridMenu: Only run applyHide when not shown (91bf06f2)

v3.0.0-rc.15 (2014-11-11)

Bug Fixes

  • uiGridRenderContainer: Inherit position (fd353287, closes #2030)

Features

v3.0.0-rc.14 (2014-11-05)

Bug Fixes

  • bower: Use right angular version spec (6bd917a0)

v3.0.0-rc.13 (2014-11-05)

Bug Fixes

  • AutoResize: Redraw all of grid on resize. (1bb5367c, closes #1770)
  • Importer: Account for older browsers properly (52823249)

v3.0.0-rc.12 (2014-10-08)

Bug Fixes

  • Customizer: Update column menu style (ffa80002)
  • Grid: Fix a few mobile-browser issues (4bb2d699)
  • Pinning: Fix pinning when col has dyanmic width (9e022bab, closes #1634)
  • RTL: Unfixed .css() call post-jquery (8d31f6a1, closes #1620)
  • Selection: Remove IE11 ellipsis in header (a8ac76c6)
  • Site: Fix version select box height (d2699092)
  • Tests: Date() usage failing on Safari 5 (6440d81c)
  • Travis: Make travis run saucelabs tests (3bc3f272)
  • grunt: Use correct version of grunt-jscs (e88600a0)
  • uiGridCell: Use promises for tmpl processing (9fb29cce, closes #1712)
  • uiGridHeader: Fix height calculations (cfc24442, closes #1639, #NaN)
  • uiGridHeaderCell: Use hasClass() for IE9 (7923f229)
  • uiGridMenu: Set box-sizing: content box (ee418f0d)
  • uiGridUtil: getBorderSize() missing "width" (174f2521)

Features

  • cellTemplates: add MODEL_COL_FIELD to cellTemplate parsing so it can be used in ng-model #1633 (66f3404a)

v3.0.0-rc.NEXT Current Master

Breaking Changes

  • editableCellTemplates should use MODEL_COL_FIELD instead of COL_FIELD. angular-ui#1633 MODEL_COL_FIELD variable was added to the cellTemplate and editCellTemplate for utilizing the bound field in ng-model. Edit feature was changed to use MODEL_COL_FIELD instead of COL_FIELD for consistency.

v3.0.0-rc.11 (2014-09-26)

v3.0.0-rc.10 (2014-09-25)

Bug Fixes

  • typo (1272cf65)
  • CHANGELOG: anchor tag for v2.0.7 was wrong (d0ecd310)
  • column-resizing: 100% width/height not needed on ui-grid-cell-contents, just ui-grid-inner-cell-c (6912d14f)
  • customizer: point to ui-grid-unstable.css at top of page (4892fbc4)
  • grunt:
    • Add testDependencies file array to karma config for travis (7a15fe42)
    • typo (0f641c0f)
    • cut-release wasn't running done() (025c61b2)
    • Make getVersion() work on travis (129f28b8)
  • less: header variables were in file twice (f93f675c)
  • travis:
    • Need only one script command in travis.yml (2278c691)
    • had grunt args out of order (c790245a)
    • use SauceLabs for e2e tests on travis (5d8a21da)
    • accidentally switched a couple words (d67c1871)
  • ui-grid-body:
    • normalize mouse wheel events because browsers suck (2075bf3c)
    • scrolling with mousewheel works (7933c1a4)
  • uiGrid:
    • introduced a bug that added columns over and over when data was swapped (7fc55b5d)
    • Fix elm height calc for hidden grids (420a0dcf)
  • uiGridCell: re-compile if template changes (7485e6ef)
  • uiGridHeader:
  • uiGridStyle:
    s were being needlessly added (ade12ec9)

Features

  • AutoResize: Adding auto-resize feature. (d0bdd829)
  • RTL: Adding RTL support and fixing virtualization (d5a9982d)
  • Selection: Updates (b20c41c1)
  • e2e: protractor testing of docs now works properly with 'grunt dev' (08787be4)
  • filtering: Add row filtering (16161643)
  • row-hashing: Add new row hashing feature (da87ff9a)
  • rowSort: Added row sorting (ce330978)
  • uiGridStyle: Added ui-grid-style directive (5687723f)

2.0.7 (2013-07-01)

Features

This release is mainly focused on fixing the grid layout/column widths:

Columns

  • Removed border-left and border-right from columns. Now we are using vertical bars so if someone sets a width to be 400px for a column, the column will actually be 400px, not 401-402px due to the border. This caused the horizontal overflowing to happen producing a horizontal scrollbar. This also fixed issues like angular-ui#411 where you would see columns not extend all the way to the edge and you would get double borders
  • Percent calculation is handled before asterisks calculations because percent calculation should take higher priority, and the asterisks calculations will then be able to fill the remaining space instead of horizontally overflowing the viewport

A fix contributed by @swalters for #436:

Editing Cells

When editing a cell, the ng-cell-has-focus directive will broadcast a message named ngGridEventStartCellEdit to let all children know that you can now give yourself focus. When the editable cell template is done with editing (usually on a blur event) you need to emit ngGridEventEndCellEdit to let ng-cell-has-focus know that you are done editing and it will then show the non-editable cell template. The reasoning for this is (good quote): "Now I can wrap my input elements in divs/spans, whatever and control exactly what element's blur triggers the end edit" - @swalters. An example (used for ng-input directive):

scope.$on('ngGridEventStartCellEdit', function () { elm.focus(); });

angular.element(elm).bind('blur', function () { scope.$emit('ngGridEventEndCellEdit'); });

Also, there is another option now which is enableCellEditOnFocus (yes, it's coming back) so now you can choose between excel-like editing or enabling edit mode on focus.


Also some fixes contributed by @ebbe-brandstrup are:

configureColumnWidths

  • Columns sized with * or % now expand / shrink as other * or %-based columns are hidden / shown
    • Note: the changes auto-expand/shrink only take effect on-the-fly
    • Works with grouping and when enabling the selection checkbox row (showSelectionCheckbox)
  • Bugfixes in configureColumnWidths
    • Re-ordered columns now keep their width setup
    • Fixed "asteriskNum" so it no longer includes hidden columns (was checking .visible on a columnDefs column instead of the matching ngColumn)
    • Fixed "totalWidth" so it no longer includes hidden columns when using px values for width (was checking .visible on a columnDefs column instead of the matching ngColumn)
    • Fixed ngColumn width being initialized to undefined when using "auto" for width, regardless of "minWidth" settings (was checking .minWidth on a columnDefs column instead of the matching ngColumn)

Renamed "col" to "colDef" in configureColumnWidths() in the places where "col" was a column from "columnDefs". It made it clearer for me whether I was referring to a ngColumn or a column from columnDefs. There were a couple of bugs caused by that (col.visible incorrectly accessed on columnDefs objects instead of ngColumns, and the like).

ng-grid-flexible-height plugin

  • Bugfixes in ng-grid-flexible-height
    • The plugin couldn't shrink the grid, only grow it
    • Using domUtilityService.UpdateGridLayout instead of grid.refreshDomSizes which correctly grows the grid if it's been shrunk (e.g. when paging to the last page and it has few rows + the plugin has a smaller min. height than what's needed on the other pages)

Bug fixes

Too many to list. Here is the pull request angular-ui#511

2.0.6 (2013-06-?)

Features

  • Development

    • Continuous integration testing with Travis CI. A few tests that were looking for pixel perfection had to be relaxed due to rendering differences between browsers and OSes.
    • Moved this changelog to CHANGELOG.md!
    • Added tests for i18n languages. Any new language must cover all the properties that the default language (English) has.
    • CSS files compiling with less (24bb173)
    • Added optional --browsers flag for test tasks. grunt test --browsers=Chrome,Firefox,PhantomJS will test in all 3 browsers at once.
  • Sorting

    • Allow optional '+' prefix to trigger numerical sort (f3aff74, 8e5c0a1)
    • Standardizing sort arrow direction (thanks @dcolens) (9608488)
  • i18n

    • Added Brazilian Portugeuse (thanks @dipold) (ab0f207)

Bug fixes

2.0.5 (2013-04-23)

Features

  • Moving to $http for external template fetching. Should fix issues with grid rendering before templates are retrieved, as well as fetching the same template multiple times.

Bug fixes

  • Fixed bug that prevented the grid from maintaining row selections post-sort thanks to sum4me

2.0.4 (2013-04-08)

Bug fixes

  • Fixing some more minor bugs

2.0.3 (2013-03-29)

  • Changed default multiSelect behavior, updating some plugins and making some more minor bugfixes.

2.0.2 (2013-03-08)

  • minor bugfixes, updating some plugins.

2.0.1 (2013-03-05)

  • Moved to grunt build system. No more international version; all languages are included by default. Fixed minor grouping display issue. Using $templateCache for templates instead of global namespace.

2.0.0 (2013-03-05)

  • Breaking Changes: see documentation (showSelectionBox, enableRowSelection, showFooter). Column Virtualization added. Row virtualization performance improved. Excel-like editing instead of enableFocusedCellEdit.

1.9.0 (2013-02-18)

  • Aggregates now display correctly. Added more option methods to select and group data (see wiki), Added column pinning.

1.8.0 [Hotfix] (2013-02-11)

  • Fixes for multi-level grouping and adding the gridId to both the grid options and as argument to the "ngGridEventData" so you can identify what grid it came from.

1.8.0 (2013-02-07)

  • Major architectural changes which greatly improves performance. virtualizationThreshold now controlls when virtualization is force-enabled and is user-specified in options.

1.7.1 (2013-02-06)

  • Fixed bug with selections and multiple grids. New emit message for notifying when hitting bottom of viewport. Can disable virtualization. ng-grid virtualization is on by default, but can be disabled if there are less than 50 rows in the grid. Anything > 50 rows virtualization is forced on for performance considerations.

1.7.0 (2013-02-05)

  • BREAKING CHANGES: Will add examples. Adding cell selection, navigation, and edit on focus. Added programmatic selections. Improved scrolling. ngGridEvents changed/added: see wiki.

1.6.3 (2013-01-17)

  • Can now highlight/copy text in grid. Fixed multiple issues when using multiselect along with shift key. Refactored key events so now they are all in the same directive for viewport. Hovering over highlightable text will change cursors in viewport. Fixed #93.

1.6.2 (2013-01-09)

  • Merged changes to have two-way data-binding work in templates, so if you're using a celltemplate, you can now use COL_FIELD instead of row.getProperty(col.field). row.getProperty is still in the row class for accessing other row values.

1.6.1 (2013-01-08)

  • Adding ability to preselect rows. Can deselect when multiSelect:false. Bug fixes/merging pull requests. Bower now works. Can now sync external search with ng-grid internal search. Check out other examples on examples page.

1.6.0 (2012-12-27)

  • Adding i18n support and support for different angularjs interpolation symbols (requires building from source).

1.5.0 (2012-12-20)

  • Modifying the way we watch for array changes. Added groupable column definition option. Bugfixes for #58, #59.

1.4.1 (2012-12-18)

  • jslint reformat, minor bugfixes, performance improvements while keydown navigating, adding "use strict" to script.

1.4.0 (2012-12-12)

  • Massive improvements to search thanks to iNeedFat!

1.3.9 (2012-12-12)

  • Refactored and removed unneeded code. Added scope events.

1.3.7 (2012-12-12)

  • Improving template compilation and fixing jquery theme support. Improving comments on grid options.

1.3.6 (2012-12-06)

  • sortInfo can now be set to default sort the grid. Improvements to the beforeSelectionChange callback mechanism when multi-selecting.

1.3.5 (2012-12-06)

  • Improved template rendering when using external template files. columnDefs can now be a $scope object which can be push/pop/spliced. Fixed box model for cells and header cells.

1.3.4 (2012-12-04)

  • Improved aggregate grouping, minor bugfixes. Auto-width works!

1.3.2 (2012-11-27)

  • Changed default width behavior to use *s and added option to maintain column ratios while resizing

1.3.1 (2012-11-27)

  • Added layout plugin. Support for uri templates. Performance improvements.

1.3.0 (2012-11-23)

  • Major code refactoring, can now group-by using column menu, changes to build

1.2.2 (2012-11-21)

  • Built-in filtering support, numerous perfomance enhancements and minor code refactoring

1.2.1 (2012-11-20)

  • Added ability to specify property "paths" as fields and for grid options.

1.2.0 (2012-11-19)

  • Added Server-Side Paging support and minor bug fixes.

1.1.0 (2012-11-17)

  • Added ability to hide/show columns and various bug fixes/performance enhancements.

1.0.0 (2012-11-14)

  • Release