6- 3.0.1: Renamed 'user:authenticate' PHP event to 'user:authenticated'.
7- 3.0.2: Renamed 'widget:table:record' javascript event to 'record.table.widget.controller.fred'.
8
9<h1>November 2015</h1>
10- 3.0.3: Restructered autoloading: Rsi helpers are now in their own folder; Fred also uses the main autoloader.
11- 3.0.4: Client config moved to dedicated client section (most notably: controller > view > html > formInvalidMessage moved to controller > client > formInvalidMessage).
12
13<h1>December 2015</h1>
14- 3.0.5: Renamed Rsi\\String to Rsi\\Str for PHP7 compatibility.
15- 3.0.6: Magic components-on-components have been replaced by dedicated Component::components() function.
16
17<h1>April 2016</h1>
18- 3.0.7: User authentication changed to support multi factor authentication.
19- 3.0.8: Minimum PHP version is now 5.5 (try..finally).
20
21<h1>October 2016</h1>
22- 3.0.9: Renamed cache->instance to cache->provider, and introduced altProvider.
23
24<h1>November 2016</h1>
25- 3.0.10: Splitted Minify to seperate Handlers, and configuration accordingly.
26
27<h1>December 2016</h1>
28- 3.0.11: Renamed Rsi\\Record::combine() to Rsi\\Record::mergeKey().
29
30<h1>February 2017</h1>
31- 3.0.12: Moved Rsi::validXmlTag() to Rsi\\Xml::validTag().
32
33<h1>March 2017</h1>
34- 3.0.13: The Rsi\\Fred\\Controller\\Widget::CHILD_ID_SEPARATOR changed to '__' to comply with use in JavaScript.
35- 3.0.14: Centralized TOTAL_* constants in Rsi\\Fred\\Controller (removed from Controller\\Provider and Controller\\Widget\\Grid)
36- 3.0.15: Moved ini.php to root (out of public root).
37
38<h1>May 2017</h1>
39- 3.0.16: Moved Rsi numbers related functions to Rsi\\Number helper.
40- 3.0.17: Renamed Mobile component to Client. Added Bot detection.
41
42<h1>June 2017</h1>
43- 3.0.18: Moved and renamed Rsi\\Http::checkEmail() to Rsi\\Valid::email().
44
45<h1>July 2017</h1>
46- 3.0.19: Added mode parameter to Rsi\\File::serialize() and jsonEncode().
47
48<h1>September 2017</h1>
49- 3.0.20: Moved FTP and cURL wrappers to Rsi\\Wrapper namespace.
50
51<h1>October 2017</h1>
52- 3.0.21: Replace View::fileVersion() with Location component.
53
54<h1>February 2018</h1>
55- 3.0.22: Prefix all CSS-classes with 'fred-' (check own markup, possible script selectors, and use of form.extra).
56
57<h1>April 2018</h1>
58- 3.0.23: Moved CSV wrapper to Rsi\\Wrapper namespace.
59
60<h1>July 2018</h1>
61- 3.0.24: Moved controller specific config to 'controllers' section.
62
63<h1>August 2018</h1>
64- 3.0.25: Wrapped everything after the async callback parameter into an options array.
65
66<h1>August 2019</h1>
67- 3.0.26: Changed the Log ignore delimiter from '|' to '#'.
68
69<h1>October 2019</h1>
70- 3.0.27: Moved the Rsi\\Http::setCookie parameters into a single $options array.
71
72<h1>February 2020</h1>
73- 3.0.28: Rsi\\Http::inSubnet() now (only) accepts CIDR notation. Check Security component proxies, whitelist, and blacklist, Stats.ignoreAddr, and Subnet authenticator.
74
75<h1>April 2020</h1>
76- 3.0.29: Prefixed widget action trigger with Rsi\\Fred\\Controller\\Widget::EVENT_ACTION_PREFIX.
77
78<h1>May 2020</h1>
79- 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!
80- 3.0.31: Replace controller.captionOk and captionCancel (and other specific widget texts) with a more generic controller.texts array.
81- 3.0.32: Rename js widget.table.checkNew() to pollNew().
82
83<h1>June 2020M.h1>
84- 3.0.33: Fragments now completely replace the selected element.
85- 3.0.34: Renamed Security::whitelist to allowlist, and blacklist to blocklist.