Skip to content

Latest commit

 

History

History
2645 lines (2466 loc) · 306 KB

CHANGELOG.md

File metadata and controls

2645 lines (2466 loc) · 306 KB

Changelog

Full Changelog

v4.1.1 (2021-02-01)

Full Changelog

Fixed bugs:

  • Fixed an issue where .gitattributes was preventing framework downloads

v4.1.0 (2021-01-31)

Full Changelog

Implemented enhancements:

v4.0.5 (2021-01-31)

Full Changelog

Deprecations:

  • CodeIgniter\Database\ModelFactory is now deprecated in favor of CodeIgniter\Config\Factories::models()
  • CodeIgniter\Config\Config is now deprecated in favor of CodeIgniter\Config\Factories::config()
  • HTTP Layer Refactor: Numerous deprecations have been made towards a transition to a PSR-compliant HTTP layer. See the User Guide

Mime Type Detection

  • Config\Mimes::guessExtensionFromType now only reverse searches the $mimes array if no extension is proposed (i.e., usually not for uploaded files).
  • The fallback values of UploadedFile->getExtension() and UploadedFile->guessExtension() have been changed. UploadedFile->getExtension() now returns $this->getClientExtension() instead of ''; UploadedFile->guessExtension() now returns '' instead of $this->getClientExtension(). These changes increase security when handling uploaded files as the client can no longer force a wrong mime type on the application. However, these might affect how file extensions are detected in your application.

Implemented enhancements:

  • Bug: controller routing on modules not working #3927
  • CLI: method prompt should accept array validation rules #3766
  • Validation: permit_empty, optional arguments #3670
  • php 8 support #3498
  • getRoutesOptions should return the controller and method if available #3445
  • before function in FilterInterface is missing response param #2085
  • Feature Request: Centralized loggedInUser before RC #2055

Fixed bugs:

  • Bug: UploadedFile::store() can't return null #4183
  • Bug: BaseBuilder::getCompiledDelete() runs real query #4180
  • Bug: Deprecated: Required parameter $userAgent follows optional parameter $body in /opt/lampp/htdocs/framework-4.0.4/system/HTTP/IncomingRequest.php on line 161 #4172
  • Bug: table template closes tbody after tfoot #4155
  • Bug: delete_cookie() helper not working #4149
  • Bug: Required parameter $userAgent follows optional parameter $body in #4148
  • Bug: spark issue #4144
  • Bug: PostgreSQL driver issues #4142
  • Bug: phpunit coverage report causes Cannot declare class Config\App, because the name is already in use #4114
  • Bug: Wrong file/line in exceptions created by "factory" methods #4110
  • Bug: Request::withMethod() uses deprecated code #4109
  • Bug: View rendering, extracted variables overwrites existed variables(arguments and etc.) #4108
  • Bug: Loss of escape value and data in the model #4087
  • Bug: classes overwrites parameter defaults, phpDoc's defined in interfaces #4086
  • Bug: getRandomName Return file extension .csv when upload docx or xlsx becouse mimetype application/octet-stream are set #4084
  • Bug: Required parameter $from follows optional parameter $verbs #4076
  • Bug: username input form shows root as a default value #4062
  • Bug: Issue with pagination #4045
  • Bug: Model calls builder before initializing #4036
  • Bug: can't run migrations when CI_ENVIRONMENT = testing #4033
  • Bug: can't get environment variable with dot #4026
  • Bug: CodeIgniter model not recognizing custom deletedField in find queries #3999
  • Bug: assertSee() can not assert title tag. #3984
  • Bug: RAR file detected as CSV #3979
  • Bug: Session Initialization via DatabaseHandler #3978
  • Bug: required_with validation rule does not work with arrays #3965
  • Bug: helper cookie not working #3939
  • Bug: Uploaded SRT files are saved as CSV #3921
  • Bug: Pre-commit hook for Phpstan and sniffer stop working after e111f04d74569e413c5aede3ed9bd9fa1ce7dca2 #3920
  • Bug: Documentation Example Leads to Bug #3914
  • Bug: Route filter runs twice #3902
  • Bug: Premature empty check in Model->update function. #3896
  • Bug: Sqldrv problems to insert when change DBPrefix #3881
  • Bug: CI4 won't recognise current namespace for language files #3867
  • Unexpected validation bug #3859
  • Bug: single_service does not set service's arguments correctly #3854
  • Bug: debugbar should not insert code in code tag #3847
  • Parser won't properly parse tags that have a similar name #3841
  • Bug: insertBatch not generating createdField #3838
  • Bug: Parser - Replacements happening even if key does not fully matches { value } #3825
  • Bug: Parser preg_replace_callback exception if template has # #3824
  • Translation function 'lang' does not work as described #3822
  • Bug: File rewrite.php is always lost in large-request unhandled error #3818
  • Bug: Model::builder() ignores parameter #3793
  • Bug: Warning no tests found in CodeIgiter\Tests... #3788
  • Bug: Class '\CodeIgniter\Database\pdo\Connection' not found #3785
  • Bug: Composer php spark migrate error #3771
  • Bug: ORDER BY RANDOM ON SQLite3 #3768
  • Bug: CLI: generateDimensions fails with a uncaught exception when exec is disabled #3762
  • Bug: createTable if not exists not working #3757
  • Bug: SQLite drop column corrupts table cache #3752
  • Bug: route filters don't apply for different methods #3733
  • /system/Images/Image.php image()->copy() mkdir #3732
  • Bug: route bug #3731
  • page not redirecting. when i redirecting by calling function #3729
  • Bug: \Config\Services::image()->flatten() #3728
  • Bug: Parser will overwrite the value if the initial variable is same #3726
  • Bug: Validating Json Requests #3719
  • Bug: view caching not work on windows #3711
  • Bug: getRoutesOptions return wrong when I have >2 routes has same name, but different method (HTTPVerb) #3700
  • Bug: Validation with request raw body. #3694
  • Image format webp is not preserve transparent #3690
  • problem: #3686
  • Documentation Error #3668
  • Bug: BaseBuilder's query is wrong #3659
  • Bug: The lifetime of the CSRF check cookie cannot be set to 0 (Session). #3655
  • Bug: isRedirect does not respond depending on how redirects are set up. #3654
  • Bug: SQL Error when countAllResults, groupBy and DBPrefix used together #3651
  • Bug: helper current_url() return wrong protocol #3648
  • Bug: IncomingRequest::setLocale() #3640
  • CodeIgniter\Database\Exceptions\DatabaseException #8 Unable to connect to the database. #3639
  • Bug: Cannot use view filter on array values #3630
  • Bug: Changelog navigation is not working properly #3625
  • Bug: Routing 404 Override confusion under route group #3623
  • Bug: Target batch not found when running php spark migrate:rollback #3620
  • Bug: getHeaders returns Array with no values #3616
  • Ignore this, was a false report #3611
  • Bug: Incorrect type that fails strict_types=1 #3610
  • The isAJAX method does not exist in filters #3604
  • Bug: current\_url\(\) helper returns wrong url with slash between host and port #3603
  • Bug: Connection ID unknown immediately after connection #3601
  • Bug: Join Query is not working in Library #3600
  • Bug: Database cache not working #3597
  • Bug: Issue in the route, redirect to parent domain, if you put / at the end of url #3595
  • Bug: Segments Also Include The Segments In BASE_URL #3594
  • Bug: Route Filters doesn't restart in FeatureTestCase. #3591
  • Bug: CURL call returns always code 200 in case de server uses HTTP/2 #3586
  • Bug: Language folders inside locale folders NOT Working ! #3582
  • Bug: Uninitialized string offset: 1 CI 4 #3573
  • Deprecated assertArraySubset in PHPUnit8 used in FeatureResponse::assertJSONFragment #3562
  • Wrong HTTP status code #3558
  • Bug: Invalid serialization data for DateTime object #3553
  • Bug: Setting session expires parameter via $this->sessionExpiration #3543
  • Bug: Upload file validation, $model->validate return true if failed #3532
  • Bug: Inconsistent behavior of view renderer on Windows and Linux #3529
  • Bug: Add dash to parser plugin regex #3523
  • Bug: When Cronjob run the ip address of the request is 0.0.0.0 #3512
  • Bug: Inconsistency in replace() method #3510
  • Bug: setPath function in UploadedFile.php is writing the index.html wrong #3506
  • Bug: Cannot get session data after server redirecting #3503
  • Bug: Database group defined in .env doesn't work #3497
  • Bug: I cant upload mp4 files #3494
  • Bug: Error message for matches rule doesn't support nested params #3492
  • CI_VERSION = '4.0.0-beta.4'; session 文件file缓存问题失效问题;session_start(): Failed to decode session object. Session has been destroyed #3485
  • Bug: onlyDeleted() conflicts to paginate() #3482
  • Bug: Unable to connect to the database #3477
  • Bug: Argument 1 passed to CodeIgniter\Config\Services::request() must be an instance of Config\App or null, instance of BackEnd\Config\App #3475
  • Bug: Fatal error running #3473
  • Bug: set() doesn't work on DateTime database field types #3471
  • before() Filters that are executed are missing from codeigniter debug toolbar. #3470
  • Bug: Model insert method always insert with current datetime on updatedField #3469
  • Bug: The search function in the documentation is not working #3458
  • Bug: env variable database.default.dsn not working for mysqli #3456
  • Bug: #3453
  • Bug: form_textarea in form_helper does not create specified 'rows' #3452
  • Bug: afterUpdate event return array instead of key value #3450
  • Using Cronjob with php line argument while using Crontab redirects the script and never executes #3444
  • Bug: Support for SameSite cookie setting missing #3442
  • Bug: Validation mime_in SVG files not working correctly #3439
  • Bug: Cannot declare class Config\Paths, because the name is already in use #3434
  • Bug: delete_cookie() helper function not working #3433
  • Bug: insertBatch not working correctly #3432
  • Feature request : CodeIgniter\File with SplFileInfo does not have a method to rewrite parts of the file only to append an CSV style row #3431
  • Bug: SMTP to port 465 should use TLS from the start #3429
  • Bug: Form data and file is not receiving well formed with PUT Method #3417
  • Bug: form_textarea helper row and col defaults not overwriting when defined as $extra #3412
  • Encryption Class does not allow to change digest parameter from SHA512 to SHA256 or others #3404
  • Bug: table.Array in first() ... - and complex primary keys! ;-) #3394
  • Error: Email SMTP configured wrong gives error #3390
  • Bug: CodeIgniter\Router\Router hasLocale returns true even if {locale} is absent #3386
  • Bug: Logs Collector isn't collecting logs for Debug Toolbar #3376
  • Bug: Entity's original is not set #3370
  • Bug: warning in Routes.php #3369
  • Bug: Model can not insert Entity #3368
  • Bug: stringify_attributes() looks unfinished. #3363
  • Bug: php spark migrate throws wrongful CodeIgniter\Database\Exceptions\DatabaseException Unable to connect to the database #3359
  • Bug: Image watermark after save.. text not align in center middle when resolution lower and higher. #3356
  • Bug: SQL Lite driver with Builder -> InsertBatch has intermittend lastError reporting issues #3350
  • Bug: isCLI error when calling a controller from a Command Line #3342
  • Bug: missing clear upgrade instructions #3332
  • Bug: API requests with a trailing forward slash #3330
  • Bug: Pager pagination ( page value in url ) #3328
  • Bug: View layout name hierarchy is not displaying correctly on Debugbar Views #3327
  • Bug: php spark migrate on testing environment doesn't work #3309
  • Bug: Empty Entity date attributes receive current timestamp when accessed #3251
  • Bug: no Filter arguments passed #3216
  • Bug: Url Helper have a bug #3180
  • $pager->links() not working inside view layouts #3164
  • Bug: AH01075: Error dispatching request on Basic CI4 #3110
  • Bug: Using assertJSONFragment with respond() in ResponseTrait #3079
  • Bug: Filters 'except' option not removing DebugToolbar comment for view #3002
  • Bug: useSoftDeletes with like function #2380

Closed issues:

  • Seed Command in document Not found #4154
  • I18n/L10n: auto update translations #4151
  • Calling update() with an Entity throws an error #4143
  • BaseConfig property issue #4140
  • Bug: #4126
  • Bug: a new installation of codeignitor 4.0.4 show 404 error Sorry! Cannot seem to find the page you were looking for. #4111
  • Bug PHP SPARK MIGRATE #4101
  • Pagination work in local, but error in server #4096
  • updated_at field is filled with the current timestamp when inserting new data along with created_at #4038
  • Config for pager #4030
  • setUpdateBatch #4025
  • Empty html-file created when moving uploaded files with $img->move() #4020
  • php spark serve error on php 8 #3980
  • Bug: PHP8 session flush data is not deleted #3974
  • PHP8: Deprecate required param after optional #3957
  • Undefined function #3954
  • Missing function locale_set_default(...) in Codeigniter 4 #3953
  • Language\en\Language.php is only used in testing #3948
  • Bug: locale_set_default causing "Whoops" failure in MacOS PHP 7.3.9 on develop branch #3933
  • Pdo driver not found #3922
  • Mysqli Backup utility? #3906
  • Relationships - Many to many #3885
  • Bug: How can remove Codeinatore default icon #3883
  • How Can remove CodeIgniter4 icon #3882
  • Codeigniter review 2021 #3880
  • url_title doesn't work with decimal number in title #3878
  • IncomingRequest Class "hasFile" function does not exist as described in the documentation. #3852
  • Dynamically changing supported languages #3844
  • CodeIgniter\Database\Exceptions\DatabaseException #8 #3826
  • Blank page show #3812
  • Bug: folder tests not found #3807
  • Typo in the doc: cache_info() #3800
  • only_full_group_by - mysqli_sql_exception #1055 - MySql 5.7.24 #3795
  • Dev: Split ModelTest #3792
  • The formatMessage function of the Language class works intermittently #3784
  • .htaccess problem with syntax #3778
  • The page does not open correctly:( #3770
  • Restore method for CodeIgniter Model. #3767
  • Bug: Model update() only set first array value #3764
  • Bug: CLI: Exception view shows full path #3763
  • Bug: Maximum execution time exceeds while handling IPv6 Reverse Proxy IPs #3760
  • Fabricators documentation error #3743
  • is\_unique is not considering the db prefix in checking for unique values in db #3741
  • Grouping routes should let me pass additional variables within the closure function #3691
  • cannot find Ftp library. #3679
  • Make sessions never expire with $config['sess_expiration'] = -1 #3677
  • Migration trouble #3624
  • Files as optional in validation rules #3619
  • $_SERVER should not have .env file info #3615
  • Bug pars xml #3588
  • Bug: When have multi filter class, and "before" function return true,other filters after this filter not working #3579
  • can not install on linux os #3572
  • Incorrect grouping function names in documentation #3551
  • New Edge Browser missing from user agents config #3513
  • Form validation does not have a rule to validate if field value differs from a string #3462
  • updateBatch does not accept entities #3451
  • Support PSR4 #3405
  • CodeIgniter4 is ready to work with PHP 7.4? #3389
  • Using CodeIgniter4 with Oracle Database #3388
  • Can't get Controllers subfolder working #3347
  • Why redirect()->to() doesn't work inside events Model? #3346
  • Bug: requests PUT type without segment redirects to index method instead update method #3343
  • Migrations not working #3317
  • CURL Error htts SSL #3314
  • codeigniter composer global installer #3266
  • Bug: Migrations Deprecated #3195
  • Managed to reproduce this issue. Was uploading an image with jquery.dm-uploader.min.js, and trying to do some image manipulation, but when I got this error: #3174
  • Make the Model work without auto_increment primary key #3134
  • Call to undefined function CodeIgniter\Debug\current_url() #3106
  • Bug: select() & selectSum() not consistent / aligned with docs #3019
  • Remove /public in URL not working if using localhost #2930
  • The problem is in getting the file sharing by Mime #2732
  • Migration on PostgreSQL failes for tables with foreign keys #2575
  • Automatic Entity cast for Parser #2317
  • Feature: Cache Driver - Serialize/Unserialize Objects #2111
  • Model set $escape problem #1929
  • \I18n\Time setTimezone does not work as expected #1807
  • TODO Database utility backup builder #1257
  • Port FTP library from CI3 #506
  • Port MSSql Database driver from CI3 #503

Merged pull requests:

v4.0.4 (2020-07-15)

Full Changelog

Implemented enhancements:

  • Bug: incorrect type - system/Database/MYSQLi/Connection.php #2996
  • Bug: CI_DEBUG incorrect type and fails strict validation #2975

Fixed bugs:

  • Bug: Fix protocol version for DownloadResponse #3320
  • Bug: Add Honeypot::$container to env file #3318
  • Bug: Add multibyte support on DOMParser::see() #3324
  • Bug: Image width debug-bar has conflict #3323
  • Bug: Setting Encryption Service Key in app/Config/Encyption.php #3297
  • Bug: CodeIgniter\I18n -> Class 'Locale' not found #3294
  • bug cURL - Parse header and Body #3261
  • Bug: Forced HTTPS wrong redirect #3260
  • Bug: #3255
  • Testing ajax header problems #3246
  • Bug: Url's not working #3245
  • Missing code formatting for migration block in documentation #3243
  • Hint message in tutorial does not correspond to the example code shown #3242
  • How to call resource route #3239
  • Can't successfully validate CLI::prompt when field param has periods #3233
  • Bug: set_checkbox, set_radio not working default true. #3228
  • Bug: Validation wrong behaviour - Session mixed with internal validator state #3210
  • Bug: CLI: Smell on reading parameters #3205
  • Bug: MySQL Errors are not reported #3204
  • Bug: Error exception layout when its an error inside a view where code can go outside the limits #3199
  • Bug: MessageFormatter argType of "String" isn't valid #3191
  • Bug: pagination not working with segment #3188
  • Bug: is_image validation is vulnerable #3184
  • Bug: model->save() insert/update data #3177
  • Bug: The CLI::color cannot create multicolored strings if ordering of strings is reversed #3173
  • Bug: Missing function locale_set_default(...) #3171
  • Router RegEx not working. #3169
  • Bug: BaseBuilder::insertBatch() has 3 params and not 4 #3158
  • Bug: Issue using image library when original image and resized are the same size #3146
  • Bug: cannot call constructor on controller. #3145
  • Bug: CodeIgniter 4.0.3 Controller will not display pdf files in browser #3144
  • Bug: $request->getVar('test', FILTER_VALIDATE_INT) does not work if the input is an array #3128
  • Bug: A wrong escape on BaseBuilder::set() #3127
  • Bug: Can't override Translations Package Files / Keys #3125
  • Bug: Validation rules max_size #3122
  • Bug: Pagination not working with soft deleted items #3121
  • Bug: SQLite3 database file created in /public folder #3113
  • Bug: RedisHandler does not working on sessionExpiration is zero #3111
  • Bug: Implicit controller methods failing #3105
  • Bug: Custom Validation Error Messages #3097
  • Bug: API\ResponseTrait::respondNoContent return content-type header #3087
  • Bug: Running Feature Tests on multiple endpoints using filters #3085
  • Bug: FeatureResponse::isOk and redirects #3072
  • Documentation: "First Application" form validating before submitting #3071
  • Bug: Fatal error: Cannot declare class CodeIgniter\Exceptions\PageNotFoundException #3067
  • Bug: Risky feature tests with Controller returns #3063
  • Bug: Documentation news app project #3054
  • Bug: ClassMethod #3050
  • Bug: CodeIgniter\Router\RouteCollection->fillRouteParams() ErrorException on 'from' parameter containing regex pattern with '|' symbol #3048
  • Bug: Database connection #3043
  • Bug: Route redirection not working #3041
  • Bug: Model::getValidationRules() cant handle ::$validationRules if its a string #3039
  • Bug: Body data from curlrequest become unreadable when endpoint return long data #3034
  • Bug: File Validation not validate correctly. #3032
  • Bug: Fatal error when no user-agent is available #3029
  • Bug: Not possible manipulate results of renderSection() on View Layouts #3028
  • Bug: Helpers at non-default locations are not found #3026
  • Bug: Most validation rules enforce requirement of the field #3025
  • Bug: #3021
  • Bug: getPostGet($index) return $_POST if there is no $index in post and get #3020
  • Bug: Multiple File Uploads validation rule "uploaded[inputName]" does not work when the input name is an Array #3018
  • Bug: delete_files() and hidden directories #3015
  • Bug: Model::Insert() does not throw exception when object without data is passed as parameter #2998
  • Bug: Force download #2995
  • Bug: The example of "The Test Class“ is not working in Documets #2993
  • Bug: Difference in behaviour of native DateTime::setTimezone() and CI's Time:setTimezone() #2989
  • Bug: Blank Page on Production Server #2980
  • Bug: Mistake in uri_string() documentation #2972
  • Bug: route_to() does not return relative part of the path #2971
  • Bug: Encrypter->decrypt issue? #2970
  • Bug: form_upload second parameter VALUE is not used in source code #2967
  • Bug: There's no way to change default spark serve port using code #2966
  • Bug: 'method' is an empty string in PATH_INFO causes Unhandled Exception #2965
  • Bug: URI class - working with segments is really strange #2962
  • Bug: Documentation Issue #2960
  • Query Builder set update not working correctly #2959
  • Bug: Validation permit_empty does no work together with required_with and required_without #2953
  • Bug: Validation tries to validate inputs even for empty values with no required parameter #2951
  • Bug: Request URI segment is our of range CI 4.0.3 #2949
  • Bug: start migration in manual mode #2942
  • valid_url rule from validation not working correctly same as valid_url|required #2941
  • redirect route when route is more complex #2937
  • set_value does not work with NULL as second parameter #2935
  • Bug: init of $data arrays in controllers #2933
  • Bug: Translation key separated by dot #2932
  • Bug: Model Instantiation #2924
  • Model #2923
  • Bug: CURLRequest baseURI option in user guide #2922
  • Bug: Not bug, but Fix Documentation, please #2920
  • Bug: Postgresql API call delete use ->connID->affected_rows after Model::delete() got error #2918
  • Multiple table query Model first #2885
  • Bug: pager "prev" and "next" links pointing to wrong URIs #2881
  • Bug: Automatic no CLI colors for Windows terminals #2849
  • Bug: $format in ResourceController is ignored #2828
  • Bug: "Type is not supported" in Postgresql POST restful #2812
  • Bug: Cookie Helper and Response class issue #2783
  • Bug: Models, useSoftDeletes not found in findAll #2658
  • Feature: About the SameSite COOKIE RFC changes for PHP > 7.3 #2374

Closed issues:

  • Language folders inside locale folders #3300
  • Encryption Class - Decrypting: authentication failed #3258
  • form_upload second parameter VALUE was not used in source code, i found a way to do it. #3256
  • erorr line in resize image using fit in visual studio code #3249
  • Testing withSession() generates an error. #3190
  • Why is getGetPost() returning all data instead of null when index not found? #3187
  • Request setGlobal not works #3186
  • Cannot extend core HTTPException class #3178
  • Add this relationship in model. #3170
  • Execute bootstrapEnvironment() & detectEnvironment() before Services::exceptions() #3138
  • Bag pars array to xml #3092
  • utf-8 slug character doesn't work in url #3089
  • Grammar in comment #3064
  • line 374 in system/Entity.php json_encode add JSON_UNESCAPED_UNICODE #3059
  • Link to User Guide on README.md #3053
  • How to set private properties in CodeIgniter\Database\BaseResult::getCustomResultObject() #3051
  • url_title not detecting some special characteres #3038
  • Error: No input file specified. #3030
  • Can findAll function in modeling data accept 3rd parameter reset #3024
  • Class 'App\Models\UserModel' not found #3014
  • Image reorient with exif #3006
  • set cookieHTTPOnly not work #2999
  • [Feature request] Slugs Link #2988
  • [Feature request] End processing app #2982
  • Pager should have getTotalResults method function #2954
  • URL rewrite problem #2925
  • Translation file not get correct locale in 4.0.3 #2921
  • Why this route does not work ? #2919
  • Cache redis or memcached #2909
  • Cookie helper not woking #2848
  • Bug: Routing group filter not working on nested or complex routes #2390

Merged pull requests:

v4.0.3 (2020-05-01)

Full Changelog

Fixed bugs:

  • Bug: is_unique validation rule with model->save() fails #2906
  • Bug: Debugging toolbar not showing #2893
  • Bug: database query bug #2890
  • Bug: Routes - missing (:id) #2889
  • Bug: Typo example "Using Named Routes" #2888
  • Bug: I am able to make POST request to a GET route #2880
  • Bug: Argument 1 passed to CodeIgniter\Database\BaseResult::getFirstRow() must be of the type string, null given, called in /system/Model.php on line 383 #2877
  • Bug: Can't override already defined language in pager #2875
  • Installation Problem: Composer installation halts while installing kint-php/kint #2863
  • Bug: composer require codeigniter4/translations without stable version #2862
  • Bug: Method Spoofing Validation #2855
  • Bug: You made it just as impossible to get going as Laravel – BUMMER! #2850
  • Bug: localised validation messages #2845
  • Bug: Commands discovery in custom namespaces #2840
  • Bug: When the $index parameter of getGetPost or getPostGet is null, you will get an error result #2839
  • Bug: delete_cookie() doesn't work #2836
  • Bug: Model save method not working if PRIMARY KEY is VARCHAR #2835
  • Bug: Alias Filter with Multiple Filter Class Doesn't Work #2831
  • Bug: Kint Config isnt loaded #2830
  • Bug: RouteCollection::resource() doesn't work with grouped rules #2829
  • Bug: $forge Property in Seeder Class Never Initialize #2825
  • Bug: getSegments() returns an array with 2 empty strings when accessing / #2822
  • Bug: Cell Caching in View Cells and SOLVE! #2821
  • Bug: saveData option doesn't work in Views #2818
  • Bug: Validation placeholder not being replaced #2817
  • Bug: Problems with QueryBuilder when run multiple queries one by one #2800
  • Bug: Routing placeholder in "controller"part of route doesn't work #2787
  • Bug: session()->push() Strange behavior #2786
  • Bug: php spark serve #2784
  • Bug: Can't paginate query with group by #2776
  • Bug: negotiateLocale bug in Safari with fr-ca locale #2774
  • Bug: Controller in Sub Directory is not working #2764
  • Bug: rename release By "v" #2763
  • Bug: db query '?' bind is not working when use sql with ':=' operator. #2762
  • Bug: Multiple select validation problem #2757
  • Bug: Official Site is not working #2749
  • Bug: Logger context placeholders {file} and {line} are wrong #2743
  • Bug: Decimal validation fails without leading digit #2740
  • Bug: Model insert Created_at and updated_at get when new record added #2737
  • Bug: appendHeader 500 error if header does not exist #2730
  • Bug: codeigniter4 download link 404 resource not found #2727
  • Bug: Logger path property ignored #2725
  • Bug: $this->request->getPost() is empty when json is send by postman #2720
  • Bug: open path /0 at uri got error "Class Home does not exist" on development environment #2716
  • Bug: calling countAllResults after find($id) produce wrong result #2705
  • Bug: $routes->cli() accessible via web browser if autoroute is true #2704
  • Bug: Controllers and Views in subdirectories not working #2701
  • Bug: undefined model method should throw exception #2688
  • Bug: The custom error config of validation is not working #2678
  • Bug: Can't test redirect()->route('routename'), while redirect()->to('path') is working with ControllerTester #2676
  • Bug: php spark migrate:create File -n NameSpace doesn't create migration class under NameSpace/Database/Migrations directory with composer autoload #2664
  • Bug: \I18n\Time object displaying +1 year when object date is set to 2021-12-31 #2663
  • Bug: Route options filter didn't working #2654
  • Bug: Error in Seeder #2653
  • Bug: spark no longer lists function when used by without any parameters #2645
  • Bug: Number Helper, Currency Fraction issue #2634
  • Bug: forceHTTPS method ignores baseURL configuration when redirecting #2633
  • While serving Application on CLI using different port debugbar is still using a default 8080 port #2630
  • Bug: spark migrate -all with appstarter #2627
  • Bug: Problem when compiled vendor as PHAR file #2623
  • Bug: debugbar javascript error #2621
  • Bug: ResourceController json response always empty #2617
  • Bug: Chrome logger does not work. #2616
  • Bug: #2608
  • User Guide is not in HTML in the download file #2607
  • Unnecessary files in the download installation #2606
  • Bug: Class 'Kint\Renderer\Renderer' not found #2605
  • Bug: Codeigniter4/framework composer.json not updated #2601
  • [Docs] Loading Environment into Configuration documentation described wrong #2554
  • Bug: Sessions dont work on PostgreSQL #2546
  • Bug: router service adds backslash to controllername if route is configured #2520
  • Bug: JSONFormatter->format() cannot handle errordata, only outputs it's own error #2434
  • Bug: HTTP Feature Testing only runs the FIRST test #2393
  • Bug: Spark issue with PHP install location #2367
  • spark route issue #2194

Closed issues:

  • Modular MVP on CI4 #2900
  • About javascript: void (0); #2887
  • Entity returns null when used on the model #2838
  • php spark migrate -g does not work #2832
  • Bug: Namespacing of app/Config folder vs. app/Controller #2826
  • Controller Call to a member function getPost() on null #2823
  • QueryBuilder - Does not support JOIN in UPDATE #2799
  • Database model error when limiting delete() #2780
  • codeigniter4/codeigniter4 package not exists in packagist #2753
  • datamap Entities not works! #2747
  • Error: Call to undefined function CodeIgniter\CLI\mb_strpos() #2746
  • CodeIgniter\Log\Logger::logPath property is never used. #2738
  • Bug: set_radio() in Form Helper does not work when radio button value equals "0" #2728
  • Array validation has a problem #2714
  • delete cookie not working #2700
  • remove default language local from url #2682
  • OpenSSLHandler: Encrypt/Decrypt #2680
  • RESTFUL API with CORS problem #2667
  • I guess there's no the third parameter #2657
  • set ci4 repo default branch = master #2643
  • BUG: 4.0.2 Kint not found #2639
  • Feature: Migrate:Rollback/Refresh confirmation in production environment #2385

Merged pull requests:

4.0.2 (2020-02-25)

Full Changelog

Fixed bugs:

  • Bug: Your requirements could not be resolved to an installable set of packages. #2613

Merged pull requests:

  • Removed unused test class that was causing appstarter not to work from CLI. #2614 (lonnieezell)
  • [UG] Fix all Sphinx warnings #2611 (LittleJ)
  • [UG] Sphinx_rtd_theme fixes and improvements #2610 (LittleJ)

v4.0.1 (2020-02-24)

Full Changelog

Fixed bugs:

  • Bug: Difficult architecture of the codeigniter4 project #2602
  • Bug: mentioned rc4 in the changelog file of V4 userguide #2599

Merged pull requests:

  • [doc] Removal of the 'rc' parameter from the installation / update co… #2604 (jlamim)

4.0.0 (2020-02-24)

Full Changelog

Fixed bugs:

  • Bug: CI cant display error with API Response Trait #2586
  • Bug: testOrHavingBy() requires a select #2584
  • Bug: Email->validateEmail() on wrong email address leads to TypeError #2580
  • Bug: $forge->dropColumn not allowing arrays #2576
  • Bug: CI4 set ID to NULL when I try insert a row #2557
  • "Required" rules are not being enforced at all by the model #2555
  • Bug: Debug Bar showing before the head tag #2545
  • Bug: Docs / Library Reference / Validation: missing important information on reset() method #2535
  • Bug: system/Config/BaseService.php getSharedInstance() will not return mocks with non-lowercase key #2534
  • Bug: multi-column WHERE not prefixed #2532
  • Bug: CodeIgniter\Files\File::getSize() - wrong type of result #2476
  • Bug: Move work with $_GET['page'] from Model to Pager #2467
  • Bug: ImageHandler has no reality checks #2421
  • Bug: No default HTTP protocol version is set when creating a new Response #2383
  • Bug: Filter wildcards ignore default methods #2455
  • trailing slash cause redirect to root #2445
  • Bug: Commands cannot accept many paths #2148

Closed issues:

  • Add an 'alpha_numeric_punct' rule to FormatRules #2549
  • Feature: Forge, Adding Foreign key for table already created #2543
  • Error In UserGuide #2530
  • Lack of test on Travis for PHP 7.4 and tests don't run on upcoming PHP versions #2293
  • Feature: model helper #2292
  • Issue with layouts renderer and sections => merge sections in one view #2491
  • Update package dependency version for kint-php/kint #2373

Merged pull requests:

v4.0.0-rc.4 (2020-02-07)

Full Changelog

Fixed bugs:

  • Bug: Class 'Locale' not found when I try to use Time::parse() #2519
  • Bug: Wrong Links for pager when having subfolders #2505
  • View Cell render not be call initController #2500
  • Bug: user guide compile failed. #2492
  • Bug: setAutoRoute to false not working #2480
  • Bug: CodeIgniter\Router\Router->checkRoutes() strpos() expects parameter 1 to be string, array given #2479
  • Bug: Unable to use ul() helper with out modification #2473
  • Bug: Cannot pass value in the function in ControllerTest #2470
  • Bug: $useTimestamps cause insert() exception #2469
  • Bug: prototype of setBody($data); method in CodeIgniter\HTTP\Message should be changed to setBody(string $data); #2466
  • Don't update it. It's rubbishBug: #2463
  • Bug: Autoload over Composer #2461
  • Bug: The docs say composer install instead of composer required #2457
  • Bug: if not CSPEnaled but i have some #2456
  • Bug: IsAJAX() relies on inconsistent headers #2454
  • Bug: #2448
  • Bug: Double use where and etc #2444
  • Bug: Double use esc function with form_input and etc... #2443
  • Bug: Entity casts do not cast the original data #2441
  • Bug: namespace view returns empty value #2440
  • Bug: php spark Call to undefined function CodeIgniter\Autoloader\get_filenames() #2439
  • Bug: Curly brace deprecation #2430
  • Bug: Routes and Namespace #2423
  • Bug: Validation not working #2418
  • Bug: Baseservice - getSharedInstance #2414
  • Bug: base_url() and redirect() not honoring baseURL with paths #2409
  • form_input double escaping data why ? #2405
  • Bug: initController not called in ResourceController #2404
  • Bug: #2397
  • URL Helper safe_mailto UTF8Bug: #2396
  • CSRF Filter redirect back not working #2395
  • Bug: 404 error page override with cache #2391
  • Bug: Mixed migration formats don't order #2386
  • Bug: \CodeIgniter\Model::validate() returns TRUE if $data is empty #2384
  • Bug: Usage of static::methodName in CodeIgniter\Config\Services prevents Service overriding #2376
  • Bug: Duplicate headers in response #2375
  • Bug: Nothing work with minimal config (DIRECTORY SEPARATOR) #2370
  • Bug: current_url function not working as expected. #2365
  • Bug: localhost development server after edit the content not updated or reloaded #2363
  • Bug: with the parser, nl2br in a foreach duplicates entries. #2360
  • Bug: Prevents the use of global functions with parameters [Validation] #2357
  • Bug: lang('app.name') should prefer APPPATH.Language/Validation/en/app.php over installed packages #2354
  • Bug: Inappropriate delimiter used in fillRouteParams #2353
  • Bug: Please there is issue on the time and date guide in codeigniter 4 #2351
  • Bug: Model()->find(null) should return null value #2350
  • Bug: URL, Redirect and Pagination misbehave #2347
  • Bug: Toolbar ErrorException Division by zero #2340
  • Bug: Cannot pass a string param with a space to a custom parser plugin #2318
  • Bug: Logger Path Duplicated #2286
  • Bug: Email: SMTP Protocol Implementation @ Data Termination #2274
  • Bug: Redirect to route ignores path set in baseurl #2119

Closed issues:

  • $routes not do the job as well #2531
  • Multiple composer.json handling in codeigniter!! #2528
  • Mention about events in the upgrading doc pages #2521
  • Missing Constant in E-Mail #2512
  • Image Manipulation Class #2498
  • Schema param in the .env file #2483
  • system\Database\MigrationRunner->regress() resets instance variable $namespace to null #2474
  • Issue passing data to views #2464
  • currentURL & previousURL doesnt work in parser #2460
  • Double quotes #2459
  • Feature about Localization #2419
  • Documentation Fix Needed #2412
  • No such file or Directory found In Ubuntu 19.10 #2394
  • previous_url() not loading the base path together #2378
  • Wrong Logo on GitHub page #2372
  • How to use the pagination with view parser? #2371
  • Feature Request: Validation: in_db[table.field] #2366
  • Feature request #2361
  • Feature: AJAX route option #2310
  • Return value of CodeIgniter\Database\BaseConnection::getConnectStart() must be of the type float, null returned #2158
  • Create Security Guideline #73

Merged pull requests:

v4.0.0-rc.3 (2019-10-19)

Full Changelog

Fixed bugs:

  • Route can not work: Controller or its method is not found #2299
  • CURLRequest - supplied argument is not a valid File-Handle resource #Windows x64 #2202
  • FilterExceptions result in blank page #2077

Closed issues:

  • Codeigniter 4 not redirecting well. is not including the baseUrl well on redirect #2342
  • Session variable value set to 0 #2334
  • Undefined variable: errors SYSTEMPATH/Validation/Validation.php at line 651 #2331
  • Router Regex not working with controllers #2330
  • --host,--port and others are not working #2329
  • Type juggling can be eliminated if these three small changes are made #2326
  • url_title doesn't handle diacritics #2323
  • View Cell Feature ? #2322
  • autoRoute function issue in case of sub-directory #2319
  • Can't store multidimensional data with Session Library #2309
  • Model()->find() return NULL for existing row #2306
  • Requesting Model::getValidationRules() documentation #2304
  • Routes Not working #2301
  • ViewPath cannot be moved only another path added #2291
  • Version not updated? #2287
  • _remap is not working #2277
  • Debug Toolbar error not found tpl error and fix #2275
  • cURL request returns 404 #2250
  • Problem with renaming deleted_at column inside model #2248
  • App\Config\Routes loaded twice #2203
  • Feature idea: Model results by key #2167
  • Remove "separator" comment between function declarations? #2146
  • find() is returning one character string instead of boolean #2096
  • Database Groups in Migrations #2087
  • "Cannot call session save handler in a recursive manner" #2056
  • Model afterInsert return originals? #2045
  • debug toolbar renderTimeline couses a non well formed numeric value encountered error #2034
  • Mysql update , affectedRows return bug #2003
  • Add validation on exists database before created #1759

Merged pull requests:

v4.0.0-rc.2b (2019-09-28)

Full Changelog

Merged pull requests:

v4.0.0-rc.2.1 (2019-09-28)

Full Changelog

Closed issues:

  • listTables() failing to use correct prefix #2210
  • Query Builder Class documentation #2140

v4.0.0-rc.2 (2019-09-27)

Full Changelog

Fixed bugs:

  • Add magic __isset to classes with __get #2219
  • CIDatabaseTestCase double-deletes tables #2206
  • Locals problems #2195
  • Translations are not loaded from composer repository #2120

Closed issues:

  • Query grouping not working for HAVING clause #2247
  • $builder->like() not support for HAVING clause #2242
  • invalid switch parameter #2239
  • DateTime::createFromFormat() parameter incorrect #2238
  • strlen() expects parameter string, integer given #2237
  • ini_set() expects parameter 2 to be string, integer given #2236
  • ini_set() expects parameter 2 to be string, integer given #2235
  • # ini_set() expects parameter 2 to be string, integer given #2234
  • Extending The Model #2223
  • BUG curl_setopt_array(): supplied argument is not a valid file-handle resource #2222
  • How do I dynamically modify the configuration? #2214
  • Document the "whoops" error page #2198
  • Fail to open system/bootstrap.php #2193
  • Function lang() / Type of return value #2192
  • Can we use codeigniter 4 on live server?? #2188
  • Custom query in model CI4 #2187
  • conflict between php zlib.output_compression and output buffering #2182
  • API Trait documentation fix - failValidationError #2176
  • Validation issue on multiple file upload #2175
  • exif_read_data #2161
  • Database count methods #2159
  • Devstarter $salt #2156
  • Migration migrate, rollback and create problems #2147
  • Query Builder getWhere Crash #2143
  • View: $parser->render(); #2086
  • Return value of lang() must be of the type string, array returned #2075
  • Wrong links for pager #2016
  • base_url() value dropped between namespaces #1942
  • Unable to use _remap without default method in controller #1928
  • RESTful resources #1765

Merged pull requests:

v4.0.0-rc.1 (2019-09-03)

Full Changelog

Implemented enhancements:

  • BaseConfig should support array values with dot syntax #454

Closed issues:

  • [internal function]: CodeIgniter\Debug\Exceptions->shutdownHandler() #2173
  • Message->setHeader allowing duplicates #2170
  • CLI: Exit status #2163
  • QB countAllResults shouldn't use LIMIT settings #2152
  • BaseBuilder::get() resets query even if reset = false #2141
  • Some migrations not running #2139
  • Migrations Refactor Namespaces #2138
  • $primaryKey forcefully 'needs' to be auto_increment #2133
  • response data not set #2124
  • RESTful behaviour #2122
  • Redis #2121
  • Toolbar download bug #2117
  • Packagist not updated with latest release? #2115
  • Fatal error Installing using composer #2114
  • Allow loading Common.php function overrides #2101
  • Result from database was auto encoded when using Entity #2088
  • Honeypot does not close the form #2084
  • Imagick Image library handler return array instead of boolean #2029
  • Migrations command should use the UTC datetime when creating new migrations #2018
  • FileLocator->getNamespaces with parameter #1866

Merged pull requests:

v4.0.0-beta.4 (2019-07-25)

Full Changelog

Fixed bugs:

  • Controller filters match too loosely. #2038

Closed issues:

  • File->getDestination fails without extension #2103
  • User Guide: UploadedFile Class #2102
  • Worries about postgresql errors #2097
  • README.md - Link to Announcement on Forums is a 404? #2094
  • Entity castAsJson returns an empty array #2080
  • Migrations Sequential field information is required #2076
  • function gussExtension return wrong result, return csv instead of right answer "txt" or "text" #2066
  • Unexpected empty "query" property when returning CodeIgniter\HTTP\URI #2062
  • Multiple rules for file upload always return false #2061
  • The assets of the public_folder are not loaded #2047
  • Modify Model's deleted field to be a date #2041
  • Filter Config not quite working with Routes? #2037
  • force_https() doesn't redirect #2033
  • URI segments passed in as method parameters skips segments with value as 0 (zero) #2032
  • /System/Debug/Toolbar/Collectors/Routes.php on line 83 #2028
  • php spark not working #2025
  • PR#2012 caused 404 exception in spark #2021
  • Cache config #2017
  • CodeIgniter\Entity Setter doesn't work #2013
  • validation match[x] don't work anymore... if custom setter is used. #2006
  • Paths issue when moving Views outside of app folder #1998
  • View Parser Register Plugins as closures not works! #1997
  • View Parser site_url not works? #1995
  • CURLRequest not respecting debug flag #1994
  • Entity null values cause database error #1992
  • SQLite driver throws exception when using dropForeignKey #1982
  • Security: DotEnv loads DB password plaintext in $_SERVER #1969
  • Feature: FK Constraint Enable/Disable #1964
  • redirect($namedRoute) missing helpful exception #1953

Merged pull requests:

v4.0.0-beta.3 (2019-05-06)

Full Changelog

Fixed bugs:

  • travis-ci build broken #1830
  • [Re-opened] 404 File not found when running CodeIgniter on local Apache web server and virtual hosts #1400
  • MySQLi SSL verify #1219

Closed issues:

  • SQLite driver doesn't drop indexes when dropping a table #1983
  • About mysqli options MYSQLI_OPT_INT_AND_FLOAT_NATIVE #1979
  • Toolbar won't accept custom collectors #1971
  • 404 Error in pathinfo mode #1965
  • A controller parameter without default value creates ReflectionException error #1948
  • Wrong datetime on history debug toolbar #1944
  • Appstarter is not working after installation #1941
  • AppStarter Vanilla Installation - No hint that writable directory is not writable #1934
  • Updating appstarter with composer does not take composer.phar into account #1932
  • Problem with extending core class. #1922
  • Debug Toolbar causes error if an array is provided as session value since Beta 2 #1919
  • Wrong controller filter processing because of faulty regular expression generation #1907
  • Toolbar not supporting IE11 (realXHR.responseURL) #1905
  • Validation Always Print Error Message #1903
  • Using soft deletes can lead to mysql ambiguous exception #1881
  • Error when running php spark serve (spaces in folder names) #1880
  • Class 'CodeIgniter\Filters\DebugToolbar' not found #1871
  • Should unmatched cache() return null? #1870
  • Class 'CodeIgniter\Test\CIUnitTestCase' not found when testing in Appstarter project #1864
  • Public methods in system/Controller #1849
  • Controller in folder - method not accessible unless I set a route on Linux - Windows OK #1841
  • Routing to hardcoded ids does not work #1838
  • Form Validation: required_with and required_without implementations #1837
  • Events.php on method $callable parameter accepts only callable #1835
  • Controller response property overriding by ControllerResponse inPHPUnit #1834
  • ValidationInterface run method $data attribute should be nullable #1833
  • Fail to render view in a view with layout #1826
  • UploadedFile::move and File::move have different implementation #1825
  • Missing documentation: parser is not able to handle nested loops #1821
  • Is hashId function missing? #1801
  • Parser is not able to handle nested loops #1799
  • Routing rules order [suspended / probably csrf] #1798
  • I need to call session() if I want to be able to use old() in the forms. #1795
  • Output getting buffered when running via command line #1792
  • Wrong CodeIgniter::handleRequest method definition #1786
  • File::move is not moving file #1785
  • Question about date helper #1783
  • Intention or bug? File::move does not update path #1782
  • Small typos in documentation section "Taking Advantage of Spl" #1781
  • Documentation mistake: Model::save does not return a boolean only #1780
  • Toolbar::run produces incompatible data for json_encode #1779
  • History::setFiles may crash when reading empty file #1778
  • Can't set subquery as WHERE condition. #1775
  • Ignoring 'required' validation rule for inserts. #1773
  • save() method trying to insert instead of update #1770
  • Controller Test / Feature Testing output issues #1767
  • MigrationRunner::version should return "current version string on success" #1766
  • DIRECTORY_SEPARATOR / Different Behavior under Windows #1760
  • HTTP Feature Testing not working #1710
  • alpha4->5 requires to have primary key in every model/table #1706
  • route_to('name'); does not work for other subdomains #1697
  • Router issue - overwriting. #1692
  • Using Memcache as Session Handler cause exception during regenerate. #1676
  • Model's without primary keys get pagination counts wrong #1597
  • Unable set ENVIRONMENT with Spark #1268
  • WIP Improve unit tests #512

Merged pull requests:

v4.0.0-beta.1 (2019-03-01)

Full Changelog

Fixed bugs:

  • Sequential Migrations don't run to the correct version #1666

Closed issues:

  • Back references not working in route #1761
  • setDefaultController not working as expected #1758
  • Spark doesn't work when using devstarter #1748
  • required_with and required_without validation rules #1735
  • validation rule password never match #1728
  • Entities errors #1727
  • Loading namespace helpers doesn't work as expected CI4 alpha5 #1726
  • spark migrate:latest ErrorException alpha5 #1724
  • redirect()->to lost $baseURL config #1721
  • Bug Report: Seeding #1720
  • Spark missing arguments #1718
  • Model required validation rule not working #1717
  • ZendEscaper - duplicate? #1716
  • Why we required form pointed to correct url? #1713
  • Why there is only 1 function in ArrayHelper? Can we introduce more? #1711
  • CodeIgniter\Model::cleanValidationRules() must be of the type array, string given #1707
  • alpha 4->5 query param binding #1705
  • failValidationError($description) #1702
  • Bug : changing viewsDirectory misses errors folder when exception occures #1701
  • Cannot define complex routes , i.e. date #1700
  • lang bug or not? (empty translations) #1698
  • Issue Extend Core Class #1653
  • Turn OFF getMyProperty() method during DB save. #1646
  • Model class crashes when handling complex validation rules #1574
  • Database ForgeTest hiccup #1478
  • SQLLite3 Forge needs better column handling #1255
  • TODO BaseConnection needs better error handling #1254
  • Model Alternative Keys #428

Merged pull requests:

v4.0.0.0-alpha.5 (2019-01-30)

Full Changelog

Implemented enhancements:

  • Cache system should support site-wide prefixes #1659

Fixed bugs:

  • Problem with Database BaseBuilder binds #1226

Closed issues:

  • DB query not working with disabled escaping #1687
  • migrate:refresh ArgumentCountError #1682
  • Do I need to clear old session files manually? #1681
  • Pagination / pager->links() double encodes links #1680
  • Document Method Spoofing for forms. #1668
  • insertBatch with escape=false still escapes values #1667
  • Filters should not be case sensitive #1664
  • RouteCollection::discoverRoutes incomplete #1662
  • Feature request make is_unique - more than one field. #1655
  • Toolbar logs tab - not logging #1651
  • DebugToolbar - too much recursion #1650
  • [documentation] Typing mistake in transaction example #1639
  • Transaction documentation error and/or bug #1638
  • Bug : pagination broken when using 1 as perPage #1628
  • View data not being passed between each call? #1621
  • Composer Installation downloads app and application folder. #1620
  • countAllResults() should respect soft deletes #1617
  • redirect function don't redirect to base_url #1611
  • Memory issue - Toolbar collects every query #1607
  • Pls remove string type in parameter $group at Database::forge #1605
  • SQL JOIN : bad aliasing on join with prefixed db tables #1599
  • Model's update method fails when validation rules exist #1584
  • maybe need to modify session garbage collector section. (FileHandler) #1565
  • Maybe routes has problem. [setTranslateURIDashes] #1564
  • ErrorException Trying to get property 'affected_rows' of non-object #1559
  • UG - typo in Managing Apps #1558
  • Database migration uses wrong database when initialising migration classes #1532
  • Database migration table not correctly created when a non-default database connection is used #1531
  • MYSQL : orderBy() considers CASE statement as a column #1528
  • getCompiledSelect() return query without binds #1526
  • Commit pre-hook misbehaving #1404
  • Lack of proper instruction in documentation for changing Application and System folder name #1366
  • SubQueries (tables from outside of the current model) #1175
  • FileHandler Garbage Collector fails to delete expired session files. #942

Merged pull requests:

v4.0.0-alpha.5 (2018-12-15)

Full Changelog

v4.0.0-alpha.4 (2018-12-15)

Full Changelog

Implemented enhancements:

  • WIP Vagrant and/or Docker support #1452

Closed issues:

  • Custom routing rule not match the User Guide #1609
  • Memory leak - binds not being cleared after find() #1604
  • Soft deletes need parentheses around proceeding query? #1592
  • Cannot use Model first() and update() in table without primary key #1583
  • tried to allocate #1578
  • Database Migrations inconsistent info about sequential type #1577
  • Wrong or not precise documentation of magic __get and __set methods in section Handling Business Logic #1568
  • Entity's fill method is not supporting key mapping #1567
  • Ability to add namespace to FileLocator class #1552
  • Should log file contain plain text database username passwords etc? #1542
  • Issues with redirects - had to use exit to make it work and blank page #1501
  • Use of undefined constant BASEPATH #1439
  • MYSQL : BETWEEN operator loses condition value on JOIN in (:) used #1403
  • The problem in catching exceptions #1274
  • TODO Language needs improved locating #1262
  • Email attachment #1008

Merged pull requests:

v4.0.0-alpha.3 (2018-11-30)

Full Changelog

Implemented enhancements:

  • Events should pass it's arguments by reference #1298
  • Feature request. Small but useful. Entity class. #1176

Fixed bugs:

  • \Config\Database::connect returns unexpected result for custom config values #1533
  • Old() - Seems to have an issue with retrieving array values #1492
  • Language is not merging with modules #1433
  • RedirectResponse does not set cookies #1393
  • ThrottleTest intermittent failure #1382
  • Support replacer functions on validations #1363
  • Filter on route group only attach / #1247
  • TypeError in MemcachedHandler::__construct() #1204
  • Required_without validation rule #1007
  • Division by zero - fresh install #979

Closed issues:

  • need change file_exists to is_file? #1543
  • Docs : some links are broken due to lack of prefix CodeIgniter4 #1537
  • Spelling mistake /wrong function reference in documentation "Handling Business Logic" #1535
  • Sample code in Entity documentation contains useless statement #1534
  • Model events why is there no beforeFind? #1527
  • [Documentation] Bug in code example for "Validating $_POST data" #1520
  • Before filters with sessions break php spark serve #1519
  • Missing documentation for placeholders in validation errors #1503
  • no $baseURL set will be notice "The baseURL value must be set" #1476
  • $field parameter as string at Forge::addField #1474
  • FeatureTestCaseTest still broken #1446
  • Unit test output not captured #1435
  • Response setJSON body <?php{ problem #1430
  • Migrations.classNotFound #1420
  • Controller helper Form validate('groupname') error with rules group #1419
  • Use the update() in BaseBuilder method #1414
  • Spark error #1408
  • Fix class namespacing in the user guide #1401
  • 404 File not found error when running CodeIgniter on local Apache web server and virtual hosts #1391
  • boolean cast in entity and validation error for required, in_list[0,1] #1372
  • guessExtension() #1367
  • insert() doesn't return boolean but CodeIgniter\Database\MySQLi\Result #1365
  • Entity json-array casting not functioning as expected #1359
  • An error occurs in View Class #1358
  • URI Routing bug #1354
  • Query binding - long names with funcs #1353
  • Bug report: Important bug in is_unique with DBGroup different than defined in $defaultGroup #1326
  • Environment Configuration file #1309
  • Can't call run() method with params from migrate:latest #1308
  • TODO ImageMagickHandler needs resizing fixed #1261
  • TODO CURLRequest needs helpers #1259
  • TODO Toolbar needs logging #1258
  • TODO BaseBuilder error handling #1250
  • TODO Database migrations need more flexibility #1249
  • Kint problem, chinese characters #1177
  • CSP + DebugBar #1165
  • The _remap function is wrong in the development (CI_DEBUG) #1137
  • Debug Bar Routes params bug #1104
  • Session expire time refresh by xhr/ajax request. #1074

Merged pull requests:

v4.0.0-alpha.2 (2018-10-26)

Full Changelog

Implemented enhancements:

  • Filter in the router #1315
  • Making Views path changeable #1296

Fixed bugs:

  • Error in user guide for session config #1330
  • Route in the News Tutorial Routes are ERROR all over. #1240
  • Time testing in travis-ci wonky #1229

Closed issues:

  • CLI CommandRunner is trying to instantiate abstract classes #1349
  • redirect()-> problem #1346
  • Question new form validation rule #1332
  • Download Response Not working #1331
  • Incorrect Error Message ? #1328
  • Wrong variable reference #1324
  • Model Pagination: Problem with total rows #1318
  • Should display an exception when minimum PHP version not met. #1307
  • News Tutorial Error on form submit #1301
  • Small Typo Correction #1299
  • Making config variable global as CI3 #1297
  • Config files aren't discovered automatically when using the config() function. #1293
  • News Tutorial post riute still not working #1292
  • Form Validation #1290
  • News Tutorial Routes #1288
  • I want to separate responsibility of Cast from Entity. #1287
  • error 404 in routing with controller in subdirectories #1276
  • TODO Extending helpers #1264
  • TODO MockResponse needs cookies solution #1263
  • TODO url_helper needs fixing #1260
  • TODO FileLocator better path checking #1252
  • TODO FileLocator filename sanitizing #1251
  • BUG in form_hidden with associative array #1244
  • Save entity after selected find results in null data #1234
  • System/Database/Database.php::loadForge returns Connection when using custom DBDriver #1225

Merged pull requests:

v4.0.0-alpha.1 (2018-09-29)

Full Changelog

Implemented enhancements:

  • Parser plugins should be allowed to have non-paired directives #547
  • Modify View Parser to support quoted phrases #537
  • Move Formatting functionality from the API namespace to it's own namespace #451
  • Add method spoofing for forms. #432
  • Add overwrite option to UploadedFile->move() #275
  • Add Download method to Response object. #208
  • Cache/Session fallback to predis/predis composer package if phpredis not available #192
  • View: saveData #181
  • url_helper implementation #157
  • Add true 'prepare' functionality to Queries #131
  • Add :hash placeholder for URI parameters #130
  • [URI] Provide ability for query vars manipulation #119
  • [FilesCollection] Allow getFiles with dot syntax #112
  • Database to fire events #105
  • New Toolbar Collector for Events #84
  • Debug Toolbar Enhancements #83
  • Add indexing functions to Forge #65
  • Refactor DB Backup to stream to file instead of holding in memory #64
  • Add support for foreign keys to the Forge #63
  • Headers must support multiple headers with same name #16
  • Add 'secure' option for Routes #10
  • [Test Helper] assertLogged #9
  • Additional Logger Enhancements #8
  • Implement Content Secure Policy #6
  • Replace our escaper with Zend Escaper #5
  • Redirect Security #4
  • Reverse Routing #3

Fixed bugs:

  • Testing output buffer not closed #1230
  • XML formater xmltoarray indexed array incorrect #577
  • stringify_attributes method MUST escape the values #282
  • base_url() function doesn't work properly when it used on page with uri segments #240
  • mysqli update bug #229
  • database update #201
  • Paginating Multiple Results - user Guides #196
  • 'Filters' Bug #188
  • POST and debugbar #172
  • url_helper functions don't correctly apply $baseURL #155
  • Routes ending in '/' redirect oddly #147
  • Error when trying access URI with Global Function's name #136
  • CLI problem with progress complete's message #135

Closed issues:

  • validation error #1214
  • How to use Controller own constructer? #1208
  • autoload psr4 is not right. #1205
  • multiple rules in validate() for File Upload not working #1201
  • can't use the same model to update, delete and insert record #1193
  • $myModel->find(string "value-of-my-primary-key") #1188
  • Undefined variable: _SESSION in command php spark #1183
  • Typographical error #1179
  • CSP + .kint d(foo) #1174
  • DebugBar -> Server Error 500 #1170
  • NULL in select is escaped (mysqli_sql_exception) #1169
  • Routing for "cli" actions. #1166
  • Create Auto-discovery system #1161
  • Routing wrong default value #1139
  • $session->push gets wrong #1136
  • Toolbar Oldest files delete bug #1135
  • redirect helper : redirectResponse is ignored #1127
  • redirect to route ignore baseurl #1126
  • redirect->route wrong docu or default values #1125
  • #1109 breaks route setup/uri parsing #1114
  • [TESTS] Session tests for php 7.2 #1106
  • set_cookie - not working #1103
  • safe_mailto - not working #1102
  • CLI tool sorting wrong #1099
  • Issues with redirect #1098
  • Can't use validate with regex_match[] #1084
  • problem with redirect() withInput() when validation #1081
  • Redis Handler Fails #1079
  • about cache path #1078
  • validation error #1077
  • #Request. Features for REST server. #1076
  • Database Migrations #1075
  • Codeigniter/Model - Select Database Table Fields #1072
  • New Config helper #1071
  • HTTP\ResponseTest Language Problem #1069
  • CLI Error #1068
  • Entity _options dates #1061
  • class Locale not found when using I18n/Time on xampp localhost #1059
  • Cookie not working #1057
  • Where is class 'MessageFormatter' #1054
  • Is CI 4 ready for production, please? #1051
  • Router 404 #1050
  • Toolbar - memory usage #1049
  • Session saving #1045
  • $Email->initialize($config) not work! #1042
  • Class '\CodeIgniter\Database\postgre\Connection' not found #1038
  • Tutorial controller Pages and file_exists() case sensitivity #1030
  • options base_uri not being based from curlrequest client instantiation #1029
  • Missing method in db result #1022
  • Email Config $fromEmail not work #1021
  • Class 'CodeIgniter\PageNotFoundException' not found #1016
  • Redirect glitch #1013
  • CSRF Error #1012
  • Php serv CLI stopped working #1006
  • Unit testing broken in travis-ci #1003
  • empty php_errors.log file #1001
  • [Help] setVar('body', $view, 'raw') #1000
  • It's blank page and set $baseURL #999
  • Unable to use another controller'method in one controller? #997
  • CodeIgniter\Session\Handlers\FileHandler Class and writable\session Directory not found while using .env #994
  • route_to() function not work if greater than 3 parameters. #992
  • Redirect Back #991
  • helper method should accept more than one filename.... #987
  • New Feature Request - Sub queries using query builder class #985
  • MySQL join / missing value for field which was used in join. #983
  • Documentation - Session Library - session()->start() #982
  • Cache with handler file woking incorrect on windown os #978
  • Formatter for: "content-type: application/json" #977
  • route_to function working incorrect #975
  • Getters and Setters in the Model #974
  • About Replacing Core Classes! #973
  • CodeIgniter 4 should use PSR-2 #972
  • Model Validations and Insert/Update Batchs #967
  • function old() not allow input name type array #966
  • test #963
  • namespace error in centos7 #959
  • Session cannot be saved #958
  • Model calling Query Builder replace() #957
  • gzuncompress(): data error #956
  • Additional space in a parameter which is a string (mysql) #955
  • Pager with search queries #950
  • IncomingRequest getUserAgent problem only object #948
  • url_helper current_url https fix. #947
  • Validation "matches" rule is not getting the label from the corresponding field #946
  • no luck setting up user_guide #944
  • mysqli_sql_exception: No such file or directory #943
  • Major Security Flaw - Database Credentials get leaked. #935
  • Debug Toolbar is not loaded when CSP is enabled #934
  • This is a problem with frequent operations #933
  • Redirects not working #931
  • Model fillPlaceholders() rule reference #930
  • session in not working on database #925
  • Twig #919
  • setDefaultNamespace Sub directories #917
  • Load language issue #913
  • Find a bug ,CSRFVerify #912
  • validation form_error() #911
  • About Filters matching rules #908
  • Prepared Query Update problem #904
  • Model::first() ambiguous id error #903
  • Add Model beforeDelete property #902
  • passing form_validation() errors with redirect() to any view | and include methods for post only by using [ HTTP verbs in routes ] and Resource route #900
  • Database failover error on postgresql #899
  • valid_email validation error #898
  • Multi language ( on same page ) support #891
  • About environnement error_reporting #889
  • Subfolders for lang() #887
  • Urgent issues #875
  • remark #871
  • Bug fix mysqli transaction function call #870
  • Debugbar SSL request javascript problem #867
  • Backslashes being escaped in where conditions. #866
  • Model::delete method #865
  • about SessionHandlerInterface error #864
  • Respond Error Pages by Content-Type #863
  • When codeigniter 4 will be released ? #860
  • Catch in Controllers/Checks.php #859
  • View render function LFI(local arbitray file include) issue #857
  • Suggestion regarding codeigniter 4 #856
  • Problem with using Entity class (Could not execute App\Entities::__construct()) #855
  • Config Unexpectedly Being Overwritten by $_ENV variable #853
  • Use PHP 7.0 or 7.1 typehints? #847
  • There is something wrong with ViewTest::testRenderScrapsDataByDefault #846
  • Session in filter #840
  • Moved uploaded files doesn't retain new filename. #839
  • Unable to use like in where? #838
  • Status of the version #837
  • when set cache to file, when get a error #836
  • Bug toolbar #834
  • Table name can not use the alias #831
  • Validation - permit_empty #830
  • Unable to install Codeigniter using composer #829
  • Throttler usage #827
  • Display Label on Form Validation #826
  • Question about Filters #824
  • uri->getHost() #815
  • Error changing databases CodeIgniter\Database\MySQLi\Connection::dbSelect() #813
  • Create a skeleton system for codeigniter #806
  • Feature - CLI Prompt with Validation #800
  • Routing problem /sth-abc->App:sth/foo (ok) and /sth/abc->App:sth/foo (nok) #799
  • Update with delete value #796
  • redirect()->to() is changing value of the base64 parameter #790
  • View Parser escaping data even if passed 'raw' as context in setData() #788
  • Cant instantiate Parser Directly. #787
  • about redis error #783
  • Validation issue and routing issue #782
  • Query binding stopped working #781
  • Entity exception in line 270 and 143 (current version). #780
  • about Error Handling #778
  • $this->CI->request->getIPAddress() protected #776
  • How do you access the $this bound data of the controller in the view? Ci3 is OK, ci4 doesn't seem to work #775
  • I wish I could call the $this of the controller in the business model. What's the solution? #774
  • Ignore_value should be the value of ID, how do I get it? #772
  • Can you increase the function of unique values in the test database? #771
  • about where(null) #770
  • redirect()->to() problem with output buffering #769
  • Class 'App\Models\NewsModel' not found #766
  • Undefined property: Config\App::$errorViewPath #765
  • Zend/Escaper too big ,its not necessary #764
  • .htaccess on php7.0.12 nts not work. #763
  • DebugBar Routes Collector throws ErrorException when optional parameter is not passed to controller #762
  • Debug View change page structure #761
  • Debug Tool: Show view filepath #758
  • PHPCBF - CodeIgniter4-Standard #757
  • about errorViewPath #745
  • Combine Composer with Install #744
  • I have multiple applications. How can I share helpers and Class Map in multiple applications? #742
  • I have multiple applications. How can I share helpers and Class Map in multiple applications? #741
  • When can the fourth version be released, too much #738
  • about Sub-directories #737
  • About 【Use Config\Services as CodeIgniter\Services】 #735
  • Mysqli Driver doesn't throw sql level exceptions / error #734
  • LogicException #403 - CSRF #733
  • User guide for ci4 is not responsive on mobile.(screen width less then 769px) #730
  • Composer intall, as described in documentation, points to different github repository(!) #726
  • Fatal error when trying to run using PHP built in server #725
  • Passing array as argument in Parser Plugin not working #724
  • $request->uri->getSegment(); return error #722
  • Double quotation in getFieldData(); #721
  • Should Model class implement the magic setter/getter methods for protected properties? #720
  • Forge class trying to create UNSIGNED integer fields in Postgresql #719
  • Tests Failing #717
  • Form validation not working when Passing Empty array [ ] #715
  • Redirects to wrong incomplete URL #710
  • pg_escape_literal() expects parameter 1 to be resource, boolean given #709
  • Separate DebugToolbar from CI_DEBUG #707
  • common.php #706
  • Parser::parsePair fails if template contains a $ sign #705
  • view parser throws InvalidArgumentException #704
  • Auto redirect to root folder #703
  • ErrorException #1 htmlspecialchars() expects parameter 1 to be string #702
  • Support for Labels in Validation #696
  • Why is system/bootstrap.php lowercase? #695
  • To much escaping in where #691
  • session in DB not working #690
  • imagecopyresampled(): supplied resource is not a valid Image resource #689
  • Postgres json column search error #680
  • multiple File upload issue #679
  • Postgres Json type error on save #677
  • show strange chracters in kint.php inside system/ThirdParty folder. #676
  • Need Parser plugin for validation errors. #675
  • Fatal error: Cannot use Config\Services as Services #674
  • Routing issue - bad args in function call. #672
  • Entity Concerns #662
  • Undefined method CLIRequest::isSecure() #656
  • PREG_QUOTE and SQL String Binding #655
  • Discussions on Pagination hasNext() and hasPrevious() #651
  • Feature requested- Auth and Template Engine #647
  • route_to doesn't work for post routes #642
  • CURL response header parsing (100-continue) #638
  • Q: Support of array notations is not longer supported? #627
  • Formvalidation not skip validation rules if field not required and field data empty #614
  • Route naming and Groups #612
  • Image resizing issue #610
  • Too much escaping negative int (int < 0) #606
  • Problem with Sth3Model loading from Sth2Model when Sth3Model is in subdiretory (Subdir1) #605
  • I'm not sure but captcha seems currently unavailable. Would it be included in ci4? #604
  • Issue with UploadFile [tempName == name/originalName] ? #602
  • Command Line Seeding Error #601
  • form_open_multipart('', [], $hidden) #598
  • Minor issue with docs - form helper (there is no html_escape function) - shoud be esc #595
  • $session->destroy() and $session->stop() do not work? #592
  • file upload issue #591
  • \IncomingRequest method getFiles() - Should really return only arrays? #590
  • Third argument '$param' missing in validation getErrorMessage #589
  • Error on Postgre insertID #587
  • \InputRequest $request->getFiles() doesn't return FileCollection instance #586
  • Documentation out of date? discoverLocal() #581
  • Storing data #580
  • Propose Moving Model::classToArray() method to Entity class as public method #579
  • camelize helper function incorrect #576
  • helper function uses include instead of include_once #575
  • system/Validation/Views/list.php fix #574
  • [FEATURE] Model Class: updateWhere() #572
  • Model Order #571
  • Minor thing with View file not found exception... #570
  • Error: redirect() - ltrim() expects parameter 1 to be string, object given #568
  • Tutorial is Wrong #562
  • Model Hooks/Events Suggestion #557
  • Initialize on Model __construct #556
  • Event trigger "pre_system" not found #555
  • Validation Issues #550
  • Model Entity suggestion #549
  • CodeIgniter\Files\File() and FileNotFoundException issue with creating new files #548
  • override core files #546
  • CodeIgniter\Format\JSONFormatter needs a look. #544
  • getenv non covered system method #543
  • Couldn't manage without index.php #541
  • Debug bar: Uncaught ErrorException: str_repeat(): Second argument has to be greater than or equal to 0 #538
  • Create localization filters for View Parser to aid in formatting numbers #536
  • Create lang plugin for the View Parser #535
  • Minor: Debug bar showing htmlentities (<strong>) #531
  • Autoloading not functional with custom namespaces outside application dir #529
  • where i extends Controller, and rewrite __construct, get error #527
  • Debug/ImageException.php failed to open stream: No such file or directory #525
  • Superglobals reset #524
  • Bring ENV definition back out to the index file. #519
  • Exception issue #517
  • Port Zip library from CI3 #505
  • Port Encryption library from CI3 #504
  • Port SQLite database driver from CI3 #502
  • A template engine suggession in this phase #500
  • __set in \App\Entities\Sample doesnt works #499
  • Router rule: (:alphanum) doesn't work #498
  • Undefined index: host #497
  • Unreasonable default parameter #482
  • Model issues #479
  • Route Blocking #474
  • Class 'CodeIgniter\Hooks\Hooks' not found #473
  • Work with entities and validation bug #472
  • route bug or not? #470
  • serve.php option --host no effect on line 37 #469
  • File class should stand on its own #468
  • Database can't save connect instances because var "$group" default is NULL #466
  • redirect() issue #465
  • Join not working in Query Builder #464
  • If the controller’s method's parameter has a default value , the program will show 500 error #461
  • Wrong ROOTPATH on console #460
  • Rename "public" Folder Not Working #453
  • Environment File #452
  • Currency Localisation Not Working #448
  • session getFlashdata() is not removing the flash data #446
  • CURLRequest: HTTPHEADER and POSTFIELDS #445
  • Language Line Prepend Recommendation #443
  • Debug Toolbar Array Post Data #442
  • Migration File & Class Name Issues #437
  • Validation Rule Constants #436
  • CURLRequest: Only variables should be passed by reference #434
  • CLI new commands #433
  • issue in phpunit #429
  • Model Class To Array Does Not Use Get Magic Method Or Allowed Fields Property #427
  • Response 404 not same satus get it #425
  • Response Trait Fail Server Error Method #424
  • Validation Required Rule Only Accepts Arrays or Strings #423
  • CLI with parameters is not working #422
  • API Response Trait :: failValidationError() Status Code 422 #420
  • Validation Get & Set Rule Group #419
  • One-Off Validation for a Single Value #418
  • Language File Array Support #414
  • Pagination: How to trans string param when using $pager->links()? #413
  • Validation Exceptions #412
  • Incorrect .htaccess #410
  • Call to a member function getResult() on boolean #409
  • Writable directory question #407
  • Paginate Class #406
  • Base URL Not Working With HTTPS #396
  • How to current page detailed information on router or etc? #393
  • timer long time getElapsedTime problem #390
  • Problem with system bootstrap file needs to be fixed! #389
  • redirect reverseRoute problem #387
  • Hooks::on not working (it was working some time ago) #383
  • disable coveralls auto comment on pull request #382
  • phpunit don't work (fatal error) on PHP 7.0.0 #373
  • session id validation when using php7.1 #371
  • travis test coverage report service #370
  • The efficiency of 'insertBatch' function #368
  • Run phpunit with --coverage-text/html got Error: Undefined variable: matchIP #363
  • Extending Core Classes #358
  • Validation field name issue? #356
  • Old Cache-Control header tag remove? #355
  • $this->request->getPost() // Subkey not included data #353
  • Routes static parameter problem not found page #352
  • bug-form_open_multipart #345
  • Recently ci4 everything goes well? I look ci the space named #336
  • Request setBody not working #332
  • HTTP/URI, CreateURIString yield unexpected result (http:/// instead of http://) #331
  • session class: inconsistency on get() between document and code #330
  • Model.php Return Type Object causes Error when Saving. (Fixed with this modification) #329
  • a bug about set() #325
  • google map in Mysqli Could be a Mistake #324
  • Modules Controllers sub-directory problem #322
  • Post action after Toolbar -> Vars -> Headers Content-Type 2 lines #321
  • Database builder->table() connection reference problem #320
  • RedisHandler, Session regenerate id problem #318
  • view_cell optional variables array_key_exists null fix. #317
  • sessionDriver Database not available #315
  • Add support for Content-MD5 headers #314
  • Scalar type declaration 'string' must be unqualified #312
  • Now ci4 product development can be used? Or how long before they can be released? Very much looking forward #311
  • Sessions in Debug Bar Could be a Mistake #310
  • Should namespaces be used or fully written at method heads #309
  • More filtering issues with Query #306
  • Too much escaping in DB? #302
  • Error Cell caching #297
  • A suggestion for debug exceptions layout #295
  • getSharedInstance doesn't work on costum services #294
  • Separated services default with trait #292
  • HTML-Purifier #291
  • Implement native ORM #289
  • Igniter 4 services #287
  • Error Documentation - Tutorial #286
  • Request is doing the filter_var even if value is not in the $_REQUEST array #285
  • controller routing #284
  • URI Routing issues #278
  • Email Library #276
  • sql error #273
  • DB Needs Transactions implemented. #268
  • Error Call to undefined method CodeIgniter\Database\MySQLi\Connection::close() #267
  • Application/ThirdParty folder necessity #265
  • ErrorException when Connecting to Multiple Databases #255
  • Toolbar.php :: ErrorException: Array to string conversion #254
  • The Hooks feature does not work #248
  • $baseUrl problem with Router #238
  • File upload bugs #236
  • standardize comments #234
  • 3.1.0 Email Library Corrupting PDF Attachments #220
  • Error DotEnv.php on line 121 #216
  • Typography Helper #214
  • Security Helper #213
  • Number Helper #212
  • Text Helper #211
  • Inflector Helper #210
  • HTML Helper #209
  • FileSystem "Helper" #207
  • Date Helper #206
  • Cookie Helper #205
  • Missing {memory_usage} ? #197
  • Exception or disable toolbar for specific URI #195
  • Config Settings Usability #186
  • Binders #185
  • Mess Detector rules #184
  • Coding Standards Fixer rules #183
  • Code Sniffer Rules #182
  • Placing view template outside of the 'Views' dir when using view() #180
  • Controller return output instead of echo view #179
  • Honeypot Filter #176
  • Form Helper #174
  • ILIKE-based portion of the query for PostgreSQL #173
  • “&get_instance()” in the Ci3 how to use it? #166
  • system/Database/BaseConnection.php Change in getFieldNames() method #164
  • Error in session FileHandler and BaseHandler #152
  • No listFields() method in Postgre connection #151
  • Controller Filters #150
  • insert bug #149
  • Router striping real dirpath from the urls. #148
  • Problem throw error for default controller #146
  • Routing issues. #145
  • Pagination Library #142
  • [i18n] Localization In Core #141
  • Language #140
  • Parser #139
  • Application directory is missing the Helpers folder #133
  • HTTP/Request.php Error #132
  • Public properties issue? #124
  • ci4 support websocket it? #121
  • View Cells #116
  • Cache Engine #115
  • Image Class #114
  • Uploader Class #113
  • API Response Trait #86
  • phpDocumentor bug #85
  • Reserved method name #76
  • Provide Throttler Filter #75
  • Ensure docs are updated for current code. #72
  • Writing Testing Docs #71
  • Update Tutorial #70
  • Review Contribution Guidelines #69
  • Database Connection setDatabase() and getVersion() methods #68
  • BaseConfig getEnvValue type juggling #67
  • Migrations should track history per db group. #66
  • Allow passing custom config values to Config\Database::connect() #62
  • SessionInterface: unset() vs remove() #60
  • Remove Query Builder caching #59
  • Why is $getShared = false the default? #55
  • Why IncomingRequest has setCookie()? #52
  • AutoRoute and method arguments #45
  • Rename the loader class #39
  • exit() prevents from testing #31
  • getHeaders #27
  • SYSDIR #25
  • Coding style checker #21
  • Test folder structure #20
  • Namespace for test case classes #17
  • Missing protocolVersion in response header #15
  • Problem with Code Coverage Reporting #13
  • Class 'Config\App' not found #12
  • Can't get Code Coverage #7
  • APPPATH, SYSPATH and similar constants. Rename? #2

Merged pull requests:

* This Changelog was automatically generated by github_changelog_generator