Revision History
The feature-u project adheres to Semantic Versioning. Each release is documented on this page (in addition to the Github Release Notes), and contains migration instructions.
Versioned Docs
feature-u maintains version-specific documentation for all of it's releases (linked below) ... ex: https://feature-u.js.org/0.1.0/. This allows you to match the correct documentation to the specific version you are using. For your convenience the base https://feature-u.js.org/ will always reference the most current release.
Summary:
| Release | What | When | 
|---|---|---|
| v3.0.0 | Hooks and Aspect Plugin Changes | February, 5, 2020 | 
| v2.1.1 | Playful Features | December 9, 2019 | 
| v2.1.0 | appInit() Life Cycle Hook | July 19, 2019 | 
| v2.0.0 | React Hooks | May 10, 2019 | 
| v1.0.1 | Docs Update | September 5, 2018 | 
| v1.0.0 | UI Composition | August 14, 2018 | 
| v0.1.3 | Establish Polyfill Strategy | July 2, 2018 | 
| v0.1.0 | Initial Release | March 6, 2018 | 
Details:
v3.0.0 - Hooks and Aspect Plugin Changes (February, 5, 2020)
Full Docs • GitHub Release • GitHub Content • Diff
NOTE: This release contains minor breaking changes from prior releases. A trivial retrofit of client code may be necessary (depending on your usage).
- Changed: For redux users, the - Application Life Cycle Hooksthat promote the redux- appStateparameter, are now being passed the redux- getStatefunction. To obtain the- appStateyou merely invoke:- getState(). This gives async long-running processes access to the most current state changes (over time) ... thanks @sylvainlg!!- Please Note: Prior to this release, these parameters were promoted directly by feature-u (using conditional logic that detected the feature-redux aspect). This coupling has been removed. These parameters are now promoted though the feature-redux aspect, using the new - Aspect.injectParamsInHooks()hook (mentioned below). As a result, you must update- feature-reduxto V3 or greater.
- Added: For Aspect Extension users, a new - Aspect.injectParamsInHooks()Aspect Life Cycle Method has been added that allows the Aspect to promote- namedParamsinto the feature's- Application Life Cycle Hooks.
- Changed: For Aspect Extension users, Aspect Plugins no longer have one specific method that is required. Rather the requirement is to specify something (so as to not have an empty plugin that does nothing). Please refer to the "No Single Aspect Method is Required" discussion in the - Aspect Life Cycle Methods.
- Docs: Documentation improvements include: - For Aspect Extension users, a new section was added that
highlights how 
Custom Aspect Pluginsare typically promoted through a constructor.
 
- For Aspect Extension users, a new section was added that
highlights how 
v2.1.1 - Playful Features (December 9, 2019)
Full Docs • GitHub Release • GitHub Content • Diff
NOTE: This release is a non-breaking change (i.e. no prior API was impacted).
- Added: The - Playful Features Videowas added ... a feature-u presentation that builds concepts, and demonstrates them in a real world app (- eatery-nod-w).
- Security: Address potential security vulnerabilities in dependent libs (mostly devDependencies completely unrelated to deployment)! 
- Docs: Documentation improvements include: - Sample code for the app's mainline startup process was simplified
by extracting Aspectplugin accumulation/configuration through anaspects/directory (see:Aspect AccumulationandlaunchApp()). This is consistent with how features are accumulated.
 
- Sample code for the app's mainline startup process was simplified
by extracting 
v2.1.0 - appInit() Life Cycle Hook (July 19, 2019)
Full Docs • GitHub Release • GitHub Content • Diff
NOTE: This release is a non-breaking change (i.e. no prior API was impacted).
- Added: A new - Feature.appInit()Application Life Cycle Hook was added, supporting blocking async initialization.
- Added: In support of - Feature.appInit(), the- showStatus()optional callback parameter was added to- launchApp()allowing the application domain to communicate blocking "persistent" status messages to the end user.
- Docs: Documentation improvements include: - Changed the sample application reference to
eatery-nod-w(fromeatery-nod).
 
- Changed the sample application reference to
v2.0.0 - React Hooks (May 10, 2019)
Full Docs • GitHub Release • GitHub Content • Diff
NOTE: This release is a non-breaking change (i.e. no prior API was impacted). A major V2 version bump strictly reflects the significance of this hooks enhancement.
- Added: The - useFassets()function has been added in support of React Hooks, providing functional component access to the- Fassets object. This is an alternative to accessing- fassetsthrough Higher Order Components (using:- withFassets()).- This greatly simplifies the UI implementation, and can be seen in action in the eatery-nod-w project (see the React Hooks section). 
- Fixed: React Component validation has been shored up by using the - react-ispackage.- This impacts components passed to the - withFassets()API, and the- fassetValidations.compvalidation utility.- Background: As of react-redux V7, - connect()returns a React.memo() component type, which is an object and NOT a function ... breaking feature-u's prior component validation.
- Docs: Documentation improvements include: - Improved the concepts and feature-segregation diagrams. 
- Added a fundamental artifacts introduction to the - Benefitschapter.
 
- Internal: Docs generation now uses the formal folding-menu gitbook plugin 
v1.0.1 - Docs Update (September 5, 2018)
Full Docs • GitHub Release • GitHub Content • Diff
NOTE: This release is a non-breaking change (i.e. no API was affected).
- Docs: Documentation improvements include: - The - Basic Conceptschapter has been completely re-written to fully introduce you to all feature-u concepts and terminology.- Diagrams are used to put everything in perspective ("with circles and arrows and a paragraph on the back of each one explaining what each one was to be used as evidence against us" ... Arlo Guthrie – Alice's Restaurant). - This is a must read to get you "up to speed" quickly! 
- All diagrams are now styled to be visible in all themes (including dark mode). 
- All code samples utilize a feature.js module (previously index.js). 
- The - src/app.jssample (found in- Launching Your Application), has been streamlined.
 
- Added: A new - assertNoRootAppElm()convenience function has been added (see:- Injecting DOM Content).
v1.0.0 - UI Composition (August 14, 2018)
Full Docs • GitHub Release • GitHub Content • Diff • Migration Notes
NOTE: This release contains breaking changes from prior releases. A retrofit of client code is necessary (see the Migration Notes link above).
- Review: New UI Composition - Beginning with feature-u V1 - Cross Feature Communicationhas been completely re-designed to include- UI Compositionas a core offering of feature-u (thanks @jeffbski for the design collaboration)!- This refactor promotes one solution for all - Cross Feature Communication(i.e. Actions, Selectors, UI Components, API, etc.), making it comprehensive and universal.
- This is an extremely powerful enhancement, and even extends to things like - Feature Based Routes.
- It represents a significant step forward in providing seamless feature-based development! 
 - At a high level, the following items have been impacted (more detail can be found at - Cross Feature Communication):- In an effort to standardize terminology (and remove ambiguity), the term - fassets(feature assets) is being used throughout, replacing- publicFace(on the aspect definition side) and- app(on the usage side).
- The - Feature.fassetsaspect replaces- Feature.publicFace, providing a more formal set of directives, supporting things like contractual arrangements (of usage and definition), and validation of resources.
- The - fassetsobject replaces the- appobject, to programmatically access cross-feature resources.
- The - managedExpansion()function has been renamed to- expandWithFassets().
- The new - withFassets()higher-order component (HOC) auto-wires named feature assets as component properties.
 - In addition, if you are using any of the feature-u extended aspect plugins, you must install the latest version, as they now pass through the new - fassetsobject.
- Docs: Documentation improvements include: - The docs have been enhanced in several areas, including API clarifications, improved cross-navigation between API/Guide, additional points of interest, examples, etc. Take a peek (always improving). 
- Several diagrams have been added to the docs. You know what they say: "a picture is worth a thousand words"! 
- Our docs now employ a dynamic left-nav menu, that only exposes sub-sections of the active section. As a result, we now promote more left-nav sub-section links, improving the visualization of "where you are at" in larger topics. 
 
v0.1.3 - Establish Polyfill Strategy (July 2, 2018)
Full Docs • GitHub Release • GitHub Content • Diff
NOTE: This release is a non-breaking change (i.e. no API was affected).
- Review: A new policy is in affect where polyfills are the responsibility of the client app, when the target JavaScript engine is inadequate (such as the IE browser). Please refer to - Potential Need for Polyfillsfor more information.- As a result, all previous code patches related to es2015+ polyfill issues were removed, in favor of polyfilling at the app-level. 
- Internal: The most current babel version/configuration is now used to transpile the library's es5 distribution. 
- Internal: The most current docs version/configuration (i.e. GitBook, JSDoc) is now used to generate our documentation. 
v0.1.0 - Initial Release (March 6, 2018)
Full Docs • GitHub Release • GitHub Content
This is where it all began ...
- Holy Guacamole Batman! ... This commit has no parents!!