diff --git a/changelog.md b/changelog.md index 0a743732d8..2c01fec774 100644 --- a/changelog.md +++ b/changelog.md @@ -3,6 +3,41 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## 6.2.0 - 2025-01-xx + +### Added + +- Multi-currency support. If you set `ENABLE_EXCHANGE_RATES=true` and optionally `ENABLE_EXTERNAL_RATES=true` Firefly III will try to calculate all foreign currencies back to your native currency. This is a work in progress, not all fields and all places will support this yet. Please check out the [documentation](#). +- Notifications support Nfty, Pushover, Slack and Discord. +- Many new security related notifications. +- #5523 +- #8531 +- #8307 +- #7945 +- #6760 +- #6557 + +### Changed + +- Firefly III requires PHP 8.4. +- #9501 +- Docker container no longer runs under root. +- "Bills" are now called "subscriptions" to better reflect their purpose. + +### Removed + +- Removed support for PHP 8.3 and lower. +- Removed Docker support for linux/arm/v7, linux/arm/v8 and linux/386. Sorry. + +### Fixed + +- #9532 +- #7288 + +### API + +- API changes related to new features are [documented](#). + ## 6.1.25 - 2024-12-19 ### Fixed diff --git a/composer.json b/composer.json index bfad00bff7..cbabb0f7ef 100644 --- a/composer.json +++ b/composer.json @@ -84,12 +84,9 @@ "bacon/bacon-qr-code": "2.*", "diglactic/laravel-breadcrumbs": "^9", "gdbots/query-parser": "^3.0", - "genealabs/laravel-model-caching": "^11.0", "guzzlehttp/guzzle": "^7.8", "jc5/google2fa-laravel": "^2.0", "jc5/recovery": "^2", - "laravel-json-api/laravel": "^5.0", - "laravel-json-api/non-eloquent": "^4.0", "laravel-notification-channels/pushover": "^4.0", "laravel/framework": "^11", "laravel/passport": "^12", diff --git a/composer.lock b/composer.lock index 75bfaf5864..d034bb85d7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "232d05ea287cfd97dde3fb95805a9b5a", + "content-hash": "19d10c2c3cd2c2a8d4b12d9d01a34491", "packages": [ { "name": "bacon/bacon-qr-code", @@ -1182,130 +1182,6 @@ }, "time": "2021-12-05T19:44:35+00:00" }, - { - "name": "genealabs/laravel-model-caching", - "version": "11.0.1", - "source": { - "type": "git", - "url": "https://github.com/mikebronner/laravel-model-caching.git", - "reference": "2a38f0f1ed3554cf2da272d66c4d08a7885f196b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mikebronner/laravel-model-caching/zipball/2a38f0f1ed3554cf2da272d66c4d08a7885f196b", - "reference": "2a38f0f1ed3554cf2da272d66c4d08a7885f196b", - "shasum": "" - }, - "require": { - "genealabs/laravel-pivot-events": "^10.0|^11.0", - "illuminate/cache": "^10.0|^11.0", - "illuminate/config": "^10.0|^11.0", - "illuminate/console": "^10.0|^11.0", - "illuminate/container": "^10.0|^11.0", - "illuminate/database": "^10.0|^11.0", - "illuminate/http": "^10.0|^11.0", - "illuminate/support": "^10.0|^11.0", - "php": ">=8.1" - }, - "require-dev": { - "doctrine/dbal": "^3.3", - "fakerphp/faker": "^1.11", - "laravel/legacy-factories": "^1.3", - "laravel/nova": "^4.0", - "orchestra/testbench": "^8.0|^9.0", - "orchestra/testbench-browser-kit": "^8.0", - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^10.0", - "slevomat/coding-standard": "^7.0|^8.14", - "squizlabs/php_codesniffer": "^3.6", - "symfony/thanks": "^1.2" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "GeneaLabs\\LaravelModelCaching\\Providers\\Service" - ] - } - }, - "autoload": { - "psr-4": { - "GeneaLabs\\LaravelModelCaching\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike Bronner", - "email": "hello@genealabs.com" - } - ], - "description": "Automatic caching for Eloquent models.", - "support": { - "issues": "https://github.com/mikebronner/laravel-model-caching/issues", - "source": "https://github.com/mikebronner/laravel-model-caching/tree/11.0.1" - }, - "time": "2024-03-14T23:34:57+00:00" - }, - { - "name": "genealabs/laravel-pivot-events", - "version": "11.0.0", - "source": { - "type": "git", - "url": "https://github.com/mikebronner/laravel-pivot-events.git", - "reference": "16e974d80160774641f4323f5ffb757b79f300d3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mikebronner/laravel-pivot-events/zipball/16e974d80160774641f4323f5ffb757b79f300d3", - "reference": "16e974d80160774641f4323f5ffb757b79f300d3", - "shasum": "" - }, - "require": { - "illuminate/database": "^8.0|^9.0|^10.0|^11.0", - "illuminate/support": "^8.0|^9.0|^10.0|^11.0" - }, - "require-dev": { - "orchestra/testbench": "^9.0", - "phpunit/phpunit": "^10.5", - "symfony/thanks": "^1.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "GeneaLabs\\LaravelPivotEvents\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike Bronner", - "email": "hello@genealabs.com", - "homepage": "https://genealabs.com", - "role": "Developer" - } - ], - "description": "This package introduces new eloquent events for sync(), attach(), detach() or updateExistingPivot() methods on BelongsToMany relation.", - "homepage": "https://github.com/mikebronner/laravel-pivot-events", - "keywords": [ - "eloquent events", - "eloquent extra events", - "laravel BelongsToMany events", - "laravel pivot events", - "laravel sync events" - ], - "support": { - "issues": "https://github.com/mikebronner/laravel-pivot-events/issues", - "source": "https://github.com/mikebronner/laravel-pivot-events" - }, - "time": "2024-03-14T23:24:54+00:00" - }, { "name": "graham-campbell/result-type", "version": "v1.1.3", @@ -1934,618 +1810,6 @@ }, "time": "2022-03-31T05:55:34+00:00" }, - { - "name": "laravel-json-api/core", - "version": "v5.0.1", - "source": { - "type": "git", - "url": "https://github.com/laravel-json-api/core.git", - "reference": "e2f6696580166f7b6384318e28168252c2bd20f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel-json-api/core/zipball/e2f6696580166f7b6384318e28168252c2bd20f4", - "reference": "e2f6696580166f7b6384318e28168252c2bd20f4", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/auth": "^11.0", - "illuminate/contracts": "^11.0", - "illuminate/http": "^11.0", - "illuminate/support": "^11.0", - "php": "^8.2" - }, - "require-dev": { - "phpunit/phpunit": "^10.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "LaravelJsonApi\\Core\\": "src/Core", - "LaravelJsonApi\\Contracts\\": "src/Contracts" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Cloud Creativity Ltd", - "email": "info@cloudcreativity.co.uk" - }, - { - "name": "Christopher Gammie", - "email": "contact@gammie.co.uk" - } - ], - "description": "Contracts and support classes for Laravel JSON:API packages.", - "homepage": "https://github.com/laravel-json-api/core", - "keywords": [ - "JSON-API", - "jsonapi", - "jsonapi.org", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel-json-api/core/issues", - "source": "https://github.com/laravel-json-api/core/tree/v5.0.1" - }, - "time": "2024-11-30T16:31:42+00:00" - }, - { - "name": "laravel-json-api/eloquent", - "version": "v4.4.0", - "source": { - "type": "git", - "url": "https://github.com/laravel-json-api/eloquent.git", - "reference": "fd7ebf898fb6e78bcbb8cba1a3b0e0d2554df244" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel-json-api/eloquent/zipball/fd7ebf898fb6e78bcbb8cba1a3b0e0d2554df244", - "reference": "fd7ebf898fb6e78bcbb8cba1a3b0e0d2554df244", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/database": "^11.0", - "illuminate/support": "^11.0", - "laravel-json-api/core": "^4.3.2|^5.0.1", - "php": "^8.2" - }, - "require-dev": { - "orchestra/testbench": "^9.0", - "phpunit/phpunit": "^10.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "4.x-dev" - } - }, - "autoload": { - "psr-4": { - "LaravelJsonApi\\Eloquent\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Cloud Creativity Ltd", - "email": "info@cloudcreativity.co.uk" - }, - { - "name": "Christopher Gammie", - "email": "contact@gammie.co.uk" - } - ], - "description": "Serialize Eloquent models as JSON:API resources.", - "homepage": "https://github.com/laravel-json-api/eloquent", - "keywords": [ - "JSON-API", - "jsonapi", - "jsonapi.org", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel-json-api/eloquent/issues", - "source": "https://github.com/laravel-json-api/eloquent/tree/v4.4.0" - }, - "time": "2024-11-30T17:36:37+00:00" - }, - { - "name": "laravel-json-api/encoder-neomerx", - "version": "v4.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel-json-api/encoder-neomerx.git", - "reference": "077c745a0c3caca535d30cacbb36b8daee29b812" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel-json-api/encoder-neomerx/zipball/077c745a0c3caca535d30cacbb36b8daee29b812", - "reference": "077c745a0c3caca535d30cacbb36b8daee29b812", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^11.0", - "illuminate/support": "^11.0", - "laravel-json-api/core": "^4.3.2|^5.0.1", - "laravel-json-api/neomerx-json-api": "^5.0.3", - "php": "^8.2" - }, - "require-dev": { - "phpunit/phpunit": "^10.5" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "LaravelJsonApi\\Encoder\\Neomerx\\ServiceProvider" - ] - }, - "branch-alias": { - "dev-develop": "4.x-dev" - } - }, - "autoload": { - "psr-4": { - "LaravelJsonApi\\Encoder\\Neomerx\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Cloud Creativity Ltd", - "email": "info@cloudcreativity.co.uk" - }, - { - "name": "Christopher Gammie", - "email": "contact@gammie.co.uk" - } - ], - "description": "Encode JSON:API resources using the neomerx/json-api package.", - "homepage": "https://github.com/laravel-json-api/encoder-neomerx", - "keywords": [ - "JSON-API", - "jsonapi", - "jsonapi.org", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel-json-api/encoder-neomerx/issues", - "source": "https://github.com/laravel-json-api/encoder-neomerx/tree/v4.1.0" - }, - "time": "2024-11-30T17:28:56+00:00" - }, - { - "name": "laravel-json-api/exceptions", - "version": "v3.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel-json-api/exceptions.git", - "reference": "1969ba640de3ec288e0a447532c9b43e0941d475" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel-json-api/exceptions/zipball/1969ba640de3ec288e0a447532c9b43e0941d475", - "reference": "1969ba640de3ec288e0a447532c9b43e0941d475", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^11.0", - "illuminate/pipeline": "^11.0", - "laravel-json-api/core": "^4.3.2|^5.0.1", - "laravel-json-api/validation": "^4.2", - "php": "^8.2" - }, - "require-dev": { - "laravel-json-api/testing": "^3.0", - "orchestra/testbench": "^9.0", - "phpunit/phpunit": "^10.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "LaravelJsonApi\\Exceptions\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Cloud Creativity Ltd", - "email": "info@cloudcreativity.co.uk" - }, - { - "name": "Christopher Gammie", - "email": "contact@gammie.co.uk" - } - ], - "description": "JSON:API exception parsing for Laravel applications.", - "homepage": "https://github.com/laravel-json-api/exceptions", - "keywords": [ - "JSON-API", - "jsonapi", - "jsonapi.org", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel-json-api/exceptions/issues", - "source": "https://github.com/laravel-json-api/exceptions/tree/v3.1.0" - }, - "time": "2024-11-30T17:20:13+00:00" - }, - { - "name": "laravel-json-api/laravel", - "version": "v5.0.2", - "source": { - "type": "git", - "url": "https://github.com/laravel-json-api/laravel.git", - "reference": "53045c6a55b4923e3cfadc085fd5f0b7c8c79cfc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel-json-api/laravel/zipball/53045c6a55b4923e3cfadc085fd5f0b7c8c79cfc", - "reference": "53045c6a55b4923e3cfadc085fd5f0b7c8c79cfc", - "shasum": "" - }, - "require": { - "ext-json": "*", - "laravel-json-api/core": "^5.0.1", - "laravel-json-api/eloquent": "^4.4", - "laravel-json-api/encoder-neomerx": "^4.1", - "laravel-json-api/exceptions": "^3.1", - "laravel-json-api/spec": "^3.1", - "laravel-json-api/validation": "^4.2", - "laravel/framework": "^11.0", - "php": "^8.2" - }, - "require-dev": { - "laravel-json-api/testing": "^3.0.2", - "orchestra/testbench": "^9.0", - "phpunit/phpunit": "^10.5" - }, - "type": "library", - "extra": { - "laravel": { - "aliases": { - "JsonApi": "LaravelJsonApi\\Core\\Facades\\JsonApi", - "JsonApiRoute": "LaravelJsonApi\\Laravel\\Facades\\JsonApiRoute" - }, - "providers": [ - "LaravelJsonApi\\Laravel\\ServiceProvider" - ] - }, - "branch-alias": { - "dev-develop": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "LaravelJsonApi\\Laravel\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Cloud Creativity Ltd", - "email": "info@cloudcreativity.co.uk" - }, - { - "name": "Christopher Gammie", - "email": "contact@gammie.co.uk" - } - ], - "description": "JSON:API for Laravel applications.", - "homepage": "https://github.com/laravel-json-api/laravel", - "keywords": [ - "JSON-API", - "jsonapi", - "jsonapi.org", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel-json-api/laravel/issues", - "source": "https://github.com/laravel-json-api/laravel/tree/v5.0.2" - }, - "time": "2024-12-03T20:43:07+00:00" - }, - { - "name": "laravel-json-api/neomerx-json-api", - "version": "v5.0.3", - "source": { - "type": "git", - "url": "https://github.com/laravel-json-api/neomerx-json-api.git", - "reference": "836342be5eb4bcf6c3734c7f8e82c9ceec3be550" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel-json-api/neomerx-json-api/zipball/836342be5eb4bcf6c3734c7f8e82c9ceec3be550", - "reference": "836342be5eb4bcf6c3734c7f8e82c9ceec3be550", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.4|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.17", - "mockery/mockery": "^1.4.4", - "phpmd/phpmd": "^2.11.1", - "phpunit/phpunit": "^9.5.10", - "scrutinizer/ocular": "^1.8", - "squizlabs/php_codesniffer": "^3.6.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "5.x-dev" - } - }, - "autoload": { - "files": [ - "src/I18n/format.php" - ], - "psr-4": { - "Neomerx\\JsonApi\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "neomerx", - "email": "info@neomerx.com" - }, - { - "name": "Christopher Gammie", - "email": "contact@gammie.co.uk" - } - ], - "description": "Framework agnostic JSON API (jsonapi.org) implementation", - "homepage": "https://github.com/neomerx/json-api", - "keywords": [ - "JSON-API", - "api", - "json", - "jsonapi", - "jsonapi.org", - "neomerx" - ], - "support": { - "issues": "https://github.com/neomerx/json-api/issues", - "source": "https://github.com/laravel-json-api/neomerx-json-api/tree/v5.0.3" - }, - "time": "2024-11-29T17:49:31+00:00" - }, - { - "name": "laravel-json-api/non-eloquent", - "version": "v4.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel-json-api/non-eloquent.git", - "reference": "3a28054ba3abd38323ec7c926419fc2a229766dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel-json-api/non-eloquent/zipball/3a28054ba3abd38323ec7c926419fc2a229766dd", - "reference": "3a28054ba3abd38323ec7c926419fc2a229766dd", - "shasum": "" - }, - "require": { - "laravel-json-api/core": "^4.3.2|^5.0.1", - "php": "^8.2" - }, - "require-dev": { - "orchestra/testbench": "^9.0", - "phpunit/phpunit": "^10.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "4.x-dev" - } - }, - "autoload": { - "psr-4": { - "LaravelJsonApi\\NonEloquent\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Cloud Creativity Ltd", - "email": "info@cloudcreativity.co.uk" - }, - { - "name": "Christopher Gammie", - "email": "contact@gammie.co.uk" - } - ], - "description": "Construct JSON:API resources for non-Eloquent classes.", - "homepage": "https://github.com/laravel-json-api/non-eloquent", - "keywords": [ - "JSON-API", - "jsonapi", - "jsonapi.org", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel-json-api/non-eloquent/issues", - "source": "https://github.com/laravel-json-api/non-eloquent/tree/v4.1.0" - }, - "time": "2024-11-30T17:51:30+00:00" - }, - { - "name": "laravel-json-api/spec", - "version": "v3.1.0", - "source": { - "type": "git", - "url": "https://github.com/laravel-json-api/spec.git", - "reference": "75a7a77de4421d58b0f38e2c94fae728b9d3690e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel-json-api/spec/zipball/75a7a77de4421d58b0f38e2c94fae728b9d3690e", - "reference": "75a7a77de4421d58b0f38e2c94fae728b9d3690e", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^11.0", - "illuminate/pipeline": "^11.0", - "illuminate/support": "^11.0", - "laravel-json-api/core": "^4.3.2|^5.0.1", - "php": "^8.2" - }, - "require-dev": { - "orchestra/testbench": "^9.0", - "phpunit/phpunit": "^10.5" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "LaravelJsonApi\\Spec\\ServiceProvider" - ] - }, - "branch-alias": { - "dev-develop": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "LaravelJsonApi\\Spec\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Cloud Creativity Ltd", - "email": "info@cloudcreativity.co.uk" - }, - { - "name": "Christopher Gammie", - "email": "contact@gammie.co.uk" - } - ], - "description": "Validate JSON documents for compliance with the JSON:API specification.", - "homepage": "https://github.com/laravel-json-api/spec", - "keywords": [ - "JSON-API", - "jsonapi", - "jsonapi.org", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel-json-api/spec/issues", - "source": "https://github.com/laravel-json-api/spec/tree/v3.1.0" - }, - "time": "2024-11-30T16:59:19+00:00" - }, - { - "name": "laravel-json-api/validation", - "version": "v4.2.0", - "source": { - "type": "git", - "url": "https://github.com/laravel-json-api/validation.git", - "reference": "635e942e44f01186ddea1c7a29d8e2d0de2c1540" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel-json-api/validation/zipball/635e942e44f01186ddea1c7a29d8e2d0de2c1540", - "reference": "635e942e44f01186ddea1c7a29d8e2d0de2c1540", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/contracts": "^11.0", - "illuminate/support": "^11.0", - "laravel-json-api/core": "^4.3.2|^5.0.1", - "php": "^8.2" - }, - "require-dev": { - "orchestra/testbench": "^9.0", - "phpunit/phpunit": "^10.5" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "LaravelJsonApi\\Validation\\ServiceProvider" - ] - }, - "branch-alias": { - "dev-develop": "4.x-dev" - } - }, - "autoload": { - "psr-4": { - "LaravelJsonApi\\Validation\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Cloud Creativity Ltd", - "email": "info@cloudcreativity.co.uk" - }, - { - "name": "Christopher Gammie", - "email": "contact@gammie.co.uk" - } - ], - "description": "Laravel validation for JSON:API resources.", - "homepage": "https://github.com/laravel-json-api/validation", - "keywords": [ - "JSON-API", - "jsonapi", - "jsonapi.org", - "laravel" - ], - "support": { - "issues": "https://github.com/laravel-json-api/validation/issues", - "source": "https://github.com/laravel-json-api/validation/tree/v4.2.0" - }, - "time": "2024-11-30T17:11:17+00:00" - }, { "name": "laravel-notification-channels/pushover", "version": "4.0.0",