All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog. Infusion from v2.0.0 onwards adheres to Semantic Versioning.
4.6.0 - 2022-12-08
- FLUID-6758 Selection reading continues from where page reading stopped
- FLUID-6757 Rendering and other methods for the selection reader are not invokers
- FLUID-6756 regenerateCursor function defined in the global scope in both Fluid.js and FluidIoC.js
4.5.0 - 2022-10-21
- FLUID-6753 Framework error messages which attempt to dump the entire component are unreadable
- FLUID-6749 Stop using iframe to render preferences editor
4.4.0 - 2022-09-27
- FLUID-6750 Model-driven relocalisation does not take account of initial model values
4.3.0 - 2022-08-08
- FLUID-6745 Improve TextNodeParser so that it can be configured with a free hash of selectors to ignore
- FLUID-6744 Failure distributing to gradeNames for component which has undefined options
- FLUID-6748 Remove the auto save of panel index in separated panel UIO
4.2.0 - 2022-07-05
- FLUID-6742 Race condition in IoC Testing Framework tests exposed by upgrade to Chrome 103
- FLUID-6741 Workflow failure when constructed lensed component from asynchronous resource
4.1.0 - 2022-05-12
- FLUID-6730 Removed some obsoleted utilities - fluid.accumulate, fluid.contains, fluid.add, fluid.stableSort
- FLUID-6729 References into local record such as {source} and {sourcePath} can't be resolved in interpolated relay segments
- FLUID-6728 A sourcePath into the first element of an array fails to resolve in contexts where expandImmediate is used
- FLUID-6727 Improve documentation (retrospectively) about changes in DataSource API in the 3.0.0 release
4.0.0 - 2022-03-17
- FLUID-6698 Allow model relay from constant values
- FLUID-6605 Allow contrast themes to be applied using custom properties only
- FLUID-6580 "Integration constant lenses"
- FLUID-6413 Model-driven resource localisation
- FLUID-6390 "lensed components"
- FLUID-6260 Enactors that modify the styling and presentation of content provide a class and/or CSS custom properties to hook into for custom styling
- FLUID-6148 "Potentia II" holds aligned, transactional units of intent
- FLUID-6147 Transactional units for component creation
- FLUID-5790 cancellable promises
- FLUID-4925 "wave of explosions"
- FLUID-4483 Latched events acting as promises
- A basic quality implementation of FLUID-4982 "asynchronous ginger world", sufficient to allow progress on new renderer for FLUID-4260, FLUID-6580
- Browser-side implementation of fluid.dataSource.URL
- FLUID-6695 Rationalise exception stripping code
- FLUID-6420 Split start schema aux schema into separate schema grades. Consolidate component grades.
- FLUID-6145 Make all component options immutable
For more details see: API Changes from 3.0 to 4.0
- Core Framework
fluid.contains
fluid.stableSort
fluid.add
fluid.accumulate
- Preferences Framework / UI Options
- In Infusion 5.0, it's planned for the Preferences Framework and UI Options to undergo a re-write and redesign. The API, including Auxiliary Schemas, are likely to change or be removed. This is also the case for any components that are used by/within the Preferences Framework.
- Components
- UI widgets and other components included with Infusion will be evaluated for future releases. A number of these widgets are no longer required as native HTML options and other tools have filled in the gaps that they were meant to address.
For more details see: Deprecated in 4.0
- FLUID-6710 Remove versioned globals and file guards from the framework
- FLUID-6705 Increasing line spacing pushes the sliding panel tab down
- FLUID-6696 Table of Contents toggle initially has no effect if TOC container has display: none style
- FLUID-6687 Adjusters/inputs are blue in iOS
- FLUID-6482 fluid.getCallerInfo throws exception sometimes on Safari (atDepth exceeds stack.length)
- FLUID-6438 Improved closure of ContextAwareness grades
- FLUID-6418 Failure when referring to dynamic component location during afterDestroy
- FLUID-6414 Allow dynamic grades to be contributed via expander
- FLUID-6146 Mutual reference between createOnEvent components
- FLUID-5912 {arguments} in members and models
- FLUID-5614 "double deep trees"
- FLUID-5519 Problematic timing of model init transaction
3.0.1 - 2022-05-11
- FLUID-6727 Improved release notes to point to warnings about DataSource API changes
3.0.0 - 2021-08-25
- Framework
- Added model transformations for converting between:
- Boolean values and Strings
fluid.transforms.booleanToString
fluid.transforms.stringToBoolean
- Date/Time and Strings
fluid.transforms.dateToString
fluid.transforms.dateTimeToString
fluid.transforms.stringToDate
- JSON Objects and Strings
fluid.transforms.objectToJSONString
fluid.transforms.JSONstringToObject
- Boolean values and Strings
- Updated model transformations:
- Number to String transformation supports specifying decimal precision.
- Round transformation can round to an integer or decimal value
fluid.stringTemplate
updated to support nested objects for interpolating values
- Added
fluid.dataSource
grade- NOTE: The scheme for configuring writable dataSources is not compatible with that seen in some development releases of Infusion, e.g. 3.0.0-dev and 4.0.0-dev - see API Changes documentation for more details
- Added
fluid.remoteModelComponent
for keeping remote and local models in sync.
- Added model transformations for converting between:
- Preference framework
- Responsive design for small screens/mobile devices.
- Added additional contrast themes based on Windows contrast themes.
- Added the OpenDyslexic 3 font as an option to the Text Style panel
- Added localized message bundles for Farsi, French, Portuguese, and Spanish.
- New preferences:
- Letter spacing
- Syllabification preference
- Text-to-speech preference using the Orator component
- Word spacing preference
- Orator
- A self voicing widget with play/pause, text highlighting, selection reading.
- NOTE: Currently there is a bug with Google supplied voice synthesizers that prevents text highlighting and long text being synthesized in Chrome. See FLUID-6635
- A self voicing widget with play/pause, text highlighting, selection reading.
- Test Infrastructure
- jqUnit.test supports async tests with promises
- Builds
- Only minified builds and distributions e.g.:
- infusion-all.js
- infusion-all-no-jquery.js
- infusion-framework.js
- infusion-framework-no-jquery.js
- infusion-uio.js
- infusion-uio-no-jquery.js
- Only minified builds and distributions e.g.:
- Framework
fluid.focus
andfluid.blur
return an ES6 promise
- Preference framework
- Switched from Stylus to SASS for CSS pre-processing
- Updated look of on/off toggles and checkboxes
- For preference maps, the keyword
default
has been replaced byvalue
- Updated the markup template for the preferences editor
- Updated message bundle keys
For more details see: API Changes from 2.0 to 3.0
- Fast XML Pull
- Will be completely removed in a future release.
- Pager
fluid.pagedTable
andfluid.table
grades and related functionality will be removed in an upcoming release.
- Renderer
- The Renderer will be completely overhauled in an upcoming release. Expect API breakage, and that all of the existing Renderer implementation is deprecated. This includes potential API breakages for the Preferences Framework and Infusion components that use the Renderer.
For more details see: Deprecated in 3.0
- Source builds and distributions. Only minified versions are provided.
- For the Reorderer component, the
stylisticOffset
selector has been removed fluid.tabs
component has been removed- The Textfield Slider removed the option to use a jQuery UI Slider in favour only supporting native HTML5 range inputs.
For more details see: API Changes from 2.0 to 3.0
- FLUID-4000: "Larger" inputs doesn't change input size
- FLUID-6137: Cannot use distributeOptions to distribute an option when the source points at a value of 0
- FLUID-6169:
fluid.prefs.tempStore
acts as afluid.prefs.cookieStore
by default - FLUID-6228: tab focusing the contrast adjuster does not scroll it into view.
2.0.0 - 2016-12-08
- Constraint-based priorities, supported by
listeners
,modelListeners
,modelRelay
,distributeOptions
,contextAwareness
, andcomponents
. This allows the specific order of those items to be configured. (See: Priorities) - Context Awareness - and things it relies on:
- Global Instantiator
- Every Infusion component, regardless of how it is instantiated, ends up in a single-rooted tree of components
- This enables use of modern IoC features such as model relay and declarative event binding
- Enables use of the root distributeOptions context "/"
- Useful debugging tip: Watch fluid.globalInstantiator in your JS debugging tools to see the structure of your application and its tree.
- Global Instantiator
fluid.notImplemented
function for implementing abstract grades- Lazy loading for UI Options
and instructions for how to use the Preferences Framework with a zero initial load time.
- This should assist in improving performance when using the Preferences Framework, particularly for resource intensive sites and applications
- Much faster invokers and boiled listeners (c. 60x faster)
- Support for using Infusion with npm for both Node.js and web-based projects.
- Provides a variety of prebuilt versions of Infusion in the module's dist directory.
- Source Maps are generated for the concatenated JavaScript files
- View oriented IoC debugging tools
- Including FluidViewDebugging.js on the page of any Infusion application gives you access to the IoC View Inspector . Click on the small cogwheel icon at the bottom right of the page to open a panel which shows the details of the view components and their grades, that are attached to DOM nodes in the browser pane. This interface works similarly to the DOM Inspector familiar from modern web browsers, but is an experimental implementation with an engineer-level UI.
- Consolidated component grades
- Order of merging component grades has reversed - grades at the right-hand end of the gradeNames list now take priority over those at the left
- Progressive Enhancement becomes Context Awareness
fluid.event.makeEventFirer
has been moved tofluid.makeEventFirer
- Model sharing happens without additional configuring of the
changeApplier
that.model
should not be used directly- Preferences Framework
- Panels
- Message bundle keys
- Selectors
- Styles
- Enactors
- Renamed "fluid.prefs.enactors" to "fluid.prefs.enactor"
- Schema
%prefix
replaced by%templatePrefix
and%messagePrefix
- Preference Editor
- Preference model values now stored under a
preferences
model path
- Preference model values now stored under a
- Panels
For more details see: API Changes from 1.5 to 2.0
fluid.progress
- jQuery UI Slider version of
fluid.textfieldSlider
- The no JavaScript version of
fluid.uploader
For more details see: Deprecated in 2.0
- Demands blocks
- Component lifecycle events
preInit
,postInit
andfinalInit
- Component events
onAttach
andonClear
- Several Preferences Framework enactor styles
- Several Preferences Framework preference editor styles and selectors
For more details see: API Changes from 1.5 to 2.0
- FLUID-4581: Move markup to html5
- FLUID-6064: Remove aria-role application from Uploader and Pager
1.5.0 - 2014-06-17
- Preferences Framework
- Redesigned UI Options component
- Substantial improvements to the Infusion IoC system
- Updated versions of jQuery and jQuery UI
- Significant refactoring to the Pager component
For more details see: API Changes from 1.4 to 1.5
- The Fluid Skinning System (FSS)
- Demands blocks
fluid.applyGradeLinkage
grade- All components that are not
autoInit
- Returning non-component material from a creator functions
- Manually attaching components to trees
- Manual lifecycle points:
preInit
,postInit
,finalInit
- Manual component initialization
- Legacy IoC expressions
returnedPath
returnedOptions
- Change Applier guards
- Change Applier event type
MERGE
fluid.makeSuperApplier
fluid.model.copyModel
- Merge policy:
preserve
fluid.tryCatch
fluid.event.getEventFier
unicast
events- Progress events
onProgressBegin
afterProgressHidden
fluid.model.setBeanValue
fluid.model.getBeanValue
fluid.lightbox
fluid.keyForValue
- Path utilities in DataBinding.js
fl-ProgEnhance-basic
class name- Renderer API
For more details see: Deprecated in 1.5
- Framework
fluid.alias
removedfluid.merge
reverse merge policy removed
- Uploader
- Removed Flash version
- Removed support for Firefox 3.x's implementation of HTML5 upload
For more details see: API Changes from 1.4 to 1.5
- FLUID-4337: Error when resolving listener specified by global name to boiled event
- FLUID-4693: On current Chrome (18) layout reorderer demos will throw an exception when moving an element back to its original position
- FLUID-5368: Using
fluid.transforms.arrayToSetMembership
with any other transformations in modelRelay option causes the source array value disappear - FLUID-5432: VoiceOver doesn't announce the remove buttons in Uploader
1.4.1 - 2016-12-02
- FLUID-6064: Remove aria-role application from Uploader and Pager
1.4.0 - 2010-10-14
- New for the Fluid Skinning system:
- A new more modular reset system, including support for contextualized resets
- New themes for accessibility
- More layout container sizes (thanks to Gary Thompson and Unicon)
- Expanded documentation and examples
- A new FSS contributor gallery with portlet and form styles: http://wiki.fluidproject.org/display/fluid/Fluid+Contributor+Gallery
- Improved user experience for Uploader, including error handling
- Completely redesigned UI Options component, involving:
- Three different versions of the interface
- Greatly improved styling
- Extensively refactored code
- The Fluid Skinning system is easier to override: !importants have been removed
- Substantial improvements to the Infusion IoC system
- Updated versions of jQuery and jQuery UI
- All view components require DataBinding.js as a dependency
- FLUID-4078: The HTML5 Upload strategy incorrectly interprets the fileSizeLimit option in megabytes instead of kilobytes.
- FLUID-4159: The Uploader cannot be instantiated as a child component in an IoC tree
1.3.1 - 2011-02-25
- Better progress information for the HTML5 version of Uploader
- Pager uses the Renderer by default
- Simplified markup for the Uploader
- FLUID-3946: Tab order inconsistent in layout reorderer
- FLUID-4017: Total file progress information is inaccurate when uploading files with the HTML 5 version of Uploader
- FLUID-4018: The "Stop" button is unavailable in the HTML 5 version of Uploader
- FLUID-4108: ProgressiveEnhancement.js causes errors in IE7 when included in any page
1.3.0 - 2010-12-23
- Sneak Peek at the new Inversion of Control (IoC) system
- Uploader support for HTML 5
- Flash-free for modern browsers!
- Substantially improved keyboard and screen reader accessibility
- Comprehensive automatic progressive enhancement based on browser capabilities
- Tons of accessibility improvements
- Better feedback for the Progress component
- Enhanced screen reader support for the Inline Edit component
- Location and movement announcements for the Reorderer component
- No wrap option for the Reorderer component
- ChangeApplier now supports transactions
- Renderer improvements
- FLUID-1822: Image Reorderer does not provide context for screen reader user (Accessibility)
- FLUID-2652: JAWS announces that an inline edit area is a button
- FLUID-3494: FastXmlPull parser is not threadsafe, through use of global Regexp objects
- FLUID-3507: ChangeApplier doesn't handle wildcards in change request paths
- FLUID-3899:
primeCacheFromResources
fails with exception if IoC system is included
1.2.1 - 2010-09-10
- FLUID-3679: JavaScript error "'script.parentNode' is null or not an object" on IE when running multiple instances of fluid (swfobject.js)
- FLUID-3692: The README and license information for fastXmlPull.js incorrectly includes reference to LGPL
1.2.0 - 2010-04-15
- Mobile FSS themes: stable, full-featured support for iPhone and Android
- Rich Text InlineEdit now supports the new CKEditor 3 rich text editor
- Improved internationalization for Undo
- Better ARIA support for Inline Edit and Undo
- Ubiquitous UTF-8 support
- Support for jQuery 1.4.2 and jQuery UI 1.8
- Paths/names of dependencies have been updated
For more details see: Upgrading to Infusion 1.2
- Bug fixes for Renderer, data binding, Inline Edit, Reorderer, and the keyboard-a11y plugin
- FLUID-2054: Cannot Tab to the 'Browse More" button with Flash 10, using FF2
- FLUID-2252: Inline Edit Rich Text - edited text lacks keyboard focus
- FLUID-3077: Text inside inline editor is being lost after canceling the text edit.
- FLUID-3592: Cannot grab layout reorderable objects with mouse cursor
1.2.0-beta.1 - 2010-04-07
A pre-release of 1.2.0.
1.1.3 - 2010-09-01
- FLUID-3679: JavaScript error "'script.parentNode' is null or not an object" on IE when running multiple instances of fluid (swfobject.js)
1.1.2 - 2009-10-16
- New Demo Portal with improved component demos
- Sneak Peak for Mobile FSS iPhone theme
- Uploader support for Firefox 3.5 and improved experience for Internet Explorer
- FLUID-2022: The "Add more" button is not present in Flash 10 version of uploader
- FLUID-2582: Uploader is dependent on ProgressiveEnhancement.js, which is not included in InfusionAll.js
- FLUID-2980: Renderer decorators can only be attached to one node at a time
- FLUID-3121: Reorderers confuse handling of 'container' as selector/element
- FLUID-3131: The default afterMove event listener code for the Image Reorderer doesn't get invoked, causing no results to be sent back to the server.
1.1.1 - 2009-08-13
- FLUID-3077: Text inside inline editor is being lost after canceling the text edit.
- FLUID-1320: Typing "Click here to edit" is equivalent to erasing all the text
- FLUID-2967: Item will drop to the right of an element when it should have dropped at the left.
- FLUID-3054: tiny_mce Inline Edit text editor fails when used with advanced theme
- FLUID-2277: Can't select text: using IE
1.1.0 - 2009-06-02
- Provides the ability to create custom builds:
- Adds jQuery UI Themes for working with FSS themes
- Adds new and powerful decorators for the Renderer:
- The "fluid" decorator instantiates any Fluid Infusion component bound to the markup
- New support for removing arbitrary attributes and CSS classes
- Updates the Uploader:
- User can manually switch to the standard non-Flash http file uploader
- Uploader Browse button now respects DOM
z-index
in Flash 10
- Pager: Improved handing of column sorting
- Updates the User Interface Options:
- Better cross browser support
- Better keyboard and screen reader accessibility
- Changes some class names in the FSS and components
- Changes some Framework API
For more details see: Upgrading from Infusion 1.0 to Infusion 1.1.x
- FLUID-2371: Resizing the text does not change the size of the text's container, in the dialog
- FLUID-2374: Pressing the "enter" key after changing the value in a textfield, has no effect
- FLUID-2383: jQuery UI Slider is not screen reader accessible
- FLUID-2412: Reset doesn't work after saving the initial cookie
- FLUID-2722: Autobinding not working for
<textarea>
elements
1.0.0 - 2009-04-09
- New data binding framework: the ChangeApplier
- New UI Options features:
- table of contents
- contrast
- line spacing
- 3 new Fluid Skinning System themes with graphics: Coal, Slate, and Inverted High Contrast
- New preview component: Progress (previously part of the Uploader component)
- Better error handling for the Uploader
- Up to date ARIA support for the Reorderer
- Ability to create custom packages for each component
- Substantial UI Options improvements and refinements, including:
- A better user interface: improved layout, easier to use, increased contrast
- Configurable strategy for persisting user preferences, using cookies by default
- Stable API
- Consistency across the board: standardized APIs, class names, and source code layout
For more details see: Upgrading to Infusion 1.0
- Remove
No Preference
from UI Options
- FLUID-1825: Undo should not require model to be inside 'value'
- FLUID-2121: Focus is not placed on the first focusable item in the user interface options dialog
- FLUID-2260: Activating the Reset or Cancel button will remove all elements of the UI Options dialog: using Opera
- FLUID-2379: [Uploader] The total file progress bar no longer has ARIA roles and states applied to it.
- FLUID-2392: In IE6 & IE7: Auto-binding not working properly - gets "behind"
- FLUID-2351: [Uploader] rev 6621 of Uploader.js and Progress.js crash FF on the server
0.8.1 - 2009-07-22
0.8.0 - 2009-02-20
- Fluid Skinning System
- Preview of User Interface Options
- FLUID-822: Upload: After pausing queue wont resume but seems to "get stuck"
- FLUID-954: Page won't scroll during DnD, using Opera
- FLUID-1145: Pressing the 'esc' key, while in an inline edit field, will erase the content; using IE
- FLUID-1824: [Keyboard accessibility] doesn't appear to be a way to make an elm un-activatable
- FLUID-2017: Cannot click on links in a rich text inline edit field because it changes into edit mode.
- FLUID-2053: Uploader not working with flash 9: using IE
- FLUID-2203: Clicking on the text area, causes the rich-text inline edit to close
0.7.0 - 2009-01-15
- Graceful degradation support in the Uploader
- FLUID-873: Tabbing through uploader breaks keyboard navigation, using IE6
- FLUID-1329: inline edit - undo/redo do not receive focus
- FLUID-2046: Renderer version of pager throws an error; using IE
0.6.0 - 2008-12-19
- Two new flavours of Inline Edit: Dropdown and Rich Text
- Sneak Peek of our new component: User Interface Options
- Preview of the Fluid Skinning System
- Completely Refactored Uploader
- Updated Pager API
- Inline Edit's
finishedEditing
function to be removed in v0.9
- FLUID-492: JAWS difficulty exiting Virtual PC Cursor to navigate in Lightbox
- FLUID-844: Inline Edit assumes there will always be a container element wrapping the edit field. For simple scenarios, this is an unnecessary burden for the developer.
- FLUID-1317: Can't tab to the undo/redo icons in Opera
- FLUID-1616: The function
selectable
clashes with jQuery UIui.selectable.js
- FLUID-1624: List number of moved item disappears while reorderering a sortable list
0.6.0-beta.1 - 2008-10-31
A pre-release of 0.6.0.
0.5.0 - 2008-09-30
- New Inline Edit feature: Undo
- Added
fluid.version
property
- Improved/expanded Reorderer events
- Updated Reorderer API to match styles of other components
- Renamed Lightbox to Image Reorderer
- Renamed Layout Customizer to Layout Reorderer
For more details see: Upgrading to version 0.5
- The Lightbox name is deprecated and replaced by Image Reorderer
- The Layout Customizer name is deprecated and replaced by Layout Reorderer
- FLUID-572: Reorderer: calls to document.writeln() while moving an item can cause the page to break.
- FLUID-1137: Runtime Error when dragging a nested reorderable
- FLUID-1322: The undo/redo icons are not in the correct tab order
- FLUID-1323: Focus does not remain on undo/redo button after pressing enter
0.5.0-beta.1 - 2008-08-28
A pre-release of 0.5.0.
0.4.0 - 2008-07-30
- Preview versions of two new components:
- Inline Edit
- Pager
- Keyboard-a11y plugin: Ability to add/remove elements from the list of selectables
- Improved keyboard support for Uploader
- FLUID-602: Progress tests partially fail on IE6 and IE7
- FLUID-904: Uploader inside a table element - removing a file from the list causes the uploader to disappear.
- FLUID-956: Can only tab to the "Add Files" button in the pop-up version of uploader on first tab cycle, using IE
0.4.0-beta.1 - 2008-06-26
A pre-release of 0.4.0.
0.3.0 - 2008-06-02
- Layout Customizer
- Preview version of Uploader
- Keyboard accessibility plugin for jQuery
- Uploader design pattern
- Reorder supports multiples simultaneous key mappings
- Simplified API for creating a Reorderer for grid, list and portlets/layouts
- FLUID-134: Cannot nest Reorderers
- FLUID-401: In IE 6+, you have to press the arrow key twice when attempting to move an item with the keyboard.
- FLUID-511: Key stroke captured when content of a selectable item has focus.
0.3.0-beta.1 - 2008-04-25
A pre-release of 0.3.0.
0.1.0 - 2007-11-30
- The Reorderer, a JavaScript library for sorting DOM elements
- The Lightbox, a component for organizing image thumbnails
- Drag and drop UI design patterns
- Checklists and protocols for doing UX walkthroughs
- Sample code, tutorials, and lots of documentation