FRED™  3.0
FRED™: Framework for Rapid and Easy Development
Release notes

October 2015

  • 3.0.1: Renamed 'user:authenticate' PHP event to 'user:authenticated'.
  • 3.0.2: Renamed 'widget:table:record' javascript event to 'record.table.widget.controller.fred'.

November 2015

  • 3.0.3: Restructered autoloading: Rsi helpers are now in their own folder; Fred also uses the main autoloader.
  • 3.0.4: Client config moved to dedicated client section (most notably: controller > view > html > formInvalidMessage moved to controller > client > formInvalidMessage).

December 2015

  • 3.0.5: Renamed Rsi\String to Rsi\Str for PHP7 compatibility.
  • 3.0.6: Magic components-on-components have been replaced by dedicated Component::components() function.

April 2016

  • 3.0.7: User authentication changed to support multi factor authentication.
  • 3.0.8: Minimum PHP version is now 5.5 (try..finally).

October 2016

  • 3.0.9: Renamed cache->instance to cache->provider, and introduced altProvider.

November 2016

  • 3.0.10: Splitted Minify to seperate Handlers, and configuration accordingly.

December 2016

  • 3.0.11: Renamed Rsi\Record::combine() to Rsi\Record::mergeKey().

February 2017

  • 3.0.12: Moved Rsi::validXmlTag() to Rsi\Xml::validTag().

March 2017

  • 3.0.13: The Rsi\Fred\Controller\Widget::CHILD_ID_SEPARATOR changed to '__' to comply with use in JavaScript.
  • 3.0.14: Centralized TOTAL_* constants in Rsi\Fred\Controller (removed from Controller\Provider and Controller\Widget\Grid)
  • 3.0.15: Moved ini.php to root (out of public root).

May 2017

  • 3.0.16: Moved Rsi numbers related functions to Rsi\Number helper.
  • 3.0.17: Renamed Mobile component to Client. Added Bot detection.

June 2017

  • 3.0.18: Moved and renamed Rsi\Http::checkEmail() to Rsi\Valid::email().

July 2017

  • 3.0.19: Added mode parameter to Rsi\File::serialize() and jsonEncode().

September 2017

  • 3.0.20: Moved FTP and cURL wrappers to Rsi\Wrapper namespace.

October 2017

  • 3.0.21: Replace View::fileVersion() with Location component.

February 2018

  • 3.0.22: Prefix all CSS-classes with 'fred-' (check own markup, possible script selectors, and use of form.extra).

April 2018

  • 3.0.23: Moved CSV wrapper to Rsi\Wrapper namespace.

July 2018

  • 3.0.24: Moved controller specific config to 'controllers' section.

August 2018

  • 3.0.25: Wrapped everything after the async callback parameter into an options array.

August 2019

  • 3.0.26: Changed the Log ignore delimiter from '|' to '#'.

October 2019

  • 3.0.27: Moved the Rsi\Http::setCookie parameters into a single $options array.

February 2020

  • 3.0.28: Rsi\Http::inSubnet() now (only) accepts CIDR notation. Check Security component proxies, whitelist, and blacklist, Stats.ignoreAddr, and Subnet authenticator.

April 2020

  • 3.0.29: Prefixed widget action trigger with Rsi\Fred\Controller\Widget::EVENT_ACTION_PREFIX.

May 2020

  • 3.0.30: JSON numeric check is now optional (and default off). Thouseands seperator is now default a dot. Turning JSON numeric check back on with the latter might result in incorrect data!
  • 3.0.31: Replace controller.captionOk and captionCancel (and other specific widget texts) with a more generic controller.texts array.
  • 3.0.32: Rename js widget.table.checkNew() to pollNew().

June 2020

  • 3.0.33: Fragments now completely replace the selected element.
  • 3.0.34: Renamed Security::whitelist to allowlist, and blacklist to blocklist.

September 2020

  • 3.1.0: Removed jQuery-UI (include it yourself, use native/HTML5 functions, or check out RSI-ui). Check ui-* CSS rules. Javascript local day names array, both normal and short, now start on monday (was sunday).
  • 3.1.1: Autoloading for most javascript files (select frequently used widgets in fred/js/script.php).
  • 3.1.2: Event name notation now uses dashes instead of dots (there is now only one dot, in front of "fred"; to comply with jQuery namespace spec/usage).
  • 3.1.3: Javascript: moved rsi.normalize() to rsi.extra.str.normalize(). Include or autoload /fred/js/rsi/extra/str.js.
  • 3.1.4: Event name notation now uses colons instead of dashes, for everything. And the order has been turned around (start at the highest level - fred, and the actuel event at the end). Each widget now also has its own event namespace, so derived widgets have the events of the parent in their own namespace.

April 2021

  • 3.1.5: Renamed proxy::alias() to Proxy::unique() (since it collides with Thing::alias()).

December 2021

  • 3.1.6: Changed $replace_if_exists parameter to $action (ACTION_INSERT, ACTION_REPLACE, or new ACTION_CREATE = insert ignore) for Db::insert().

January 2022

  • 3.1.7: Renamed \Rsi\Http::urlGetContents() to \Rsi\Http::get().

February 2022

  • 3.1.8: Changed Log::ignore (array of filters) to Log::convert (key = filter, value = new priority or false to ignore)
  • 3.1.9: Specific Widget\Char::AUTOCOMPLETE option (false = 'off'). Char::SUGGEST => false is not working anymore.

July 2022

  • 3.1.10: Where clause is now required for Db::update and delete (empty = all).

October 2022

  • 3.1.11: Changed Str::PASSWORD_CHARS to Str::CHARS_PASSWORD.
  • 3.1.12: Security fix for Widget\File.

April 2023

  • 3.2.0: Changed single index reference to array of indexes (including indexes for parent widgets).

April 2024

  • 3.3.0: Added $options (extra connection options) as first parameter to Db::createPdo.

May 2024

  • 3.4.0: Changed 'or' Db::multiOperator to '|' (was '^').

February 2026

  • 3.4.1: Add TUS upload to File widget.
  • 3.5.0: Removed Stream component (we hardly knew ya).