Compare commits

...

26 Commits

Author SHA1 Message Date
github-actions[bot]
e929cf7cb0 Merge pull request #11762 from firefly-iii/release-1771564191
🤖 Automatically merge the PR into the develop branch.
2026-02-20 06:10:03 +01:00
JC5
528fda08e9 🤖 Auto commit for release 'develop' on 2026-02-20 2026-02-20 06:09:51 +01:00
James Cole
6f605e5fd2 Remove phpstan thing. 2026-02-20 06:08:43 +01:00
James Cole
7c76fc7721 Fix various issues and code quality things. 2026-02-20 06:04:21 +01:00
James Cole
474680dbbf Fix issue with invitee mail. 2026-02-20 05:44:51 +01:00
James Cole
8babc144fe Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2026-02-19 20:03:30 +01:00
James Cole
6eb14f8a96 Fix #11752 2026-02-19 19:55:52 +01:00
github-actions[bot]
c4786586fb Merge pull request #11760 from firefly-iii/release-1771527037
🤖 Automatically merge the PR into the develop branch.
2026-02-19 19:50:46 +01:00
JC5
a22cc889b9 🤖 Auto commit for release 'develop' on 2026-02-19 2026-02-19 19:50:37 +01:00
James Cole
9ea7bd3b01 Update audit config. 2026-02-19 19:45:49 +01:00
James Cole
8d68cef8a5 Fix #11744 2026-02-19 19:34:22 +01:00
James Cole
b383ac1a95 Fix https://github.com/firefly-iii/firefly-iii/issues/11757 2026-02-19 19:27:18 +01:00
James Cole
d2bfb2e9df Fix https://github.com/firefly-iii/firefly-iii/issues/11734 2026-02-16 20:40:32 +01:00
github-actions[bot]
0afec28e5f Merge pull request #11743 from firefly-iii/release-1771253383
🤖 Automatically merge the PR into the develop branch.
2026-02-16 15:49:51 +01:00
JC5
e60e0bb99e 🤖 Auto commit for release 'develop' on 2026-02-16 2026-02-16 15:49:43 +01:00
Sander Dorigo
02064445bc Fix missing objects thing 2026-02-16 15:29:13 +01:00
github-actions[bot]
386bb811a8 Merge pull request #11742 from firefly-iii/release-1771230440
🤖 Automatically merge the PR into the develop branch.
2026-02-16 09:27:29 +01:00
JC5
653fa53da2 🤖 Auto commit for release 'develop' on 2026-02-16 2026-02-16 09:27:20 +01:00
Sander Dorigo
63d4572863 Merge branch 'develop' of https://github.com/firefly-iii/firefly-iii into develop 2026-02-16 09:22:36 +01:00
Sander Dorigo
9eb31fc777 Remove check for #11735 2026-02-16 09:22:30 +01:00
github-actions[bot]
7fd33035a6 Merge pull request #11741 from firefly-iii/release-1771230058
🤖 Automatically merge the PR into the develop branch.
2026-02-16 09:21:05 +01:00
JC5
5a87f6b2c0 🤖 Auto commit for release 'develop' on 2026-02-16 2026-02-16 09:20:58 +01:00
Sander Dorigo
cbebd7928f Fix #11738 2026-02-16 09:16:42 +01:00
github-actions[bot]
73089c2084 Merge pull request #11737 from firefly-iii/release-1771214139
🤖 Automatically merge the PR into the develop branch.
2026-02-16 04:55:46 +01:00
JC5
34260f2a4f 🤖 Auto commit for release 'develop' on 2026-02-16 2026-02-16 04:55:39 +01:00
James Cole
c3872aa738 Fix header in changelog. 2026-02-15 19:44:38 +01:00
27 changed files with 223 additions and 140 deletions

View File

@@ -402,16 +402,16 @@
},
{
"name": "friendsofphp/php-cs-fixer",
"version": "v3.94.0",
"version": "v3.94.1",
"source": {
"type": "git",
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
"reference": "883b20fb38c7866de9844ab6d0a205c423bde2d4"
"reference": "d1a3634e29916367b885250e1fc4dfd5ffe3b091"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/883b20fb38c7866de9844ab6d0a205c423bde2d4",
"reference": "883b20fb38c7866de9844ab6d0a205c423bde2d4",
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d1a3634e29916367b885250e1fc4dfd5ffe3b091",
"reference": "d1a3634e29916367b885250e1fc4dfd5ffe3b091",
"shasum": ""
},
"require": {
@@ -494,7 +494,7 @@
],
"support": {
"issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
"source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.94.0"
"source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.94.1"
},
"funding": [
{
@@ -502,7 +502,7 @@
"type": "github"
}
],
"time": "2026-02-11T16:44:33+00:00"
"time": "2026-02-18T12:24:42+00:00"
},
{
"name": "psr/container",

View File

@@ -47,7 +47,7 @@ class CreatesDatabase extends Command
return Command::FAILURE;
}
if ('mysql' !== config('database.default')) { // @phpstan-ignore larastan.noEnvCallsOutsideOfConfig */
if ('mysql' !== config('database.default')) {
$this->friendlyInfo(sprintf('CreateDB does not apply to "%s", skipped.', config('database.default')));
return 0;

View File

@@ -25,13 +25,14 @@ declare(strict_types=1);
namespace FireflyIII\Events\Model\TransactionGroup;
use FireflyIII\Events\Event;
use Illuminate\Support\Facades\Log;
class UserRequestedBatchProcessing extends Event
{
public TransactionGroupEventObjects $objects;
public function __construct(
public TransactionGroupEventFlags $flags
) {
Log::debug(__METHOD__);
$this->objects = new TransactionGroupEventObjects();
}
}

View File

@@ -192,6 +192,7 @@ class StandardMessageGenerator implements MessageGeneratorInterface
case WebhookResponse::BUDGET->name:
$basicMessage['content'] = [];
if ($model instanceof Budget) {
$model->refresh();
$enrichment = new BudgetEnrichment();
$enrichment->setUser($model->user);
@@ -201,6 +202,7 @@ class StandardMessageGenerator implements MessageGeneratorInterface
$basicMessage['content'] = $transformer->transform($model);
}
if ($model instanceof BudgetLimit) {
$model->refresh();
$user = $model->budget->user;
$enrichment = new BudgetLimitEnrichment();
$enrichment->setUser($user);
@@ -224,6 +226,8 @@ class StandardMessageGenerator implements MessageGeneratorInterface
break;
case WebhookResponse::TRANSACTIONS->name:
$model->refresh();
/** @var TransactionGroup $model */
$transformer = new TransactionGroupTransformer();
@@ -243,6 +247,8 @@ class StandardMessageGenerator implements MessageGeneratorInterface
break;
case WebhookResponse::ACCOUNTS->name:
$model->refresh();
/** @var TransactionGroup $model */
$accounts = $this->collectAccounts($model);
$enrichment = new AccountEnrichment();

View File

@@ -45,11 +45,9 @@ class CategoryReportController extends Controller
use AugumentData;
use TransactionCalculation;
/** @var GeneratorInterface Chart generation methods. */
private $generator;
private GeneratorInterface $generator;
/** @var OperationsRepositoryInterface */
private $opsRepository;
private OperationsRepositoryInterface $opsRepository;
/**
* CategoryReportController constructor.

View File

@@ -107,20 +107,10 @@ trait SupportsGroupProcessingTrait
// remove generic statistics:
$repository->deleteStatisticsForPrefix('all_', $dates);
// remove for no tag, no cat, etc.
if (0 === $objects->budgets->count()) {
Log::debug('No budgets, delete "no_category" stats.');
$repository->deleteStatisticsForPrefix('no_budget', $dates);
}
if (0 === $objects->categories->count()) {
Log::debug('No categories, delete "no_category" stats.');
$repository->deleteStatisticsForPrefix('no_category', $dates);
}
if (0 === $objects->tags->count()) {
Log::debug('No tags, delete "no_category" stats.');
$repository->deleteStatisticsForPrefix('no_tag', $dates);
}
Log::debug('Done with remove period statistics for all objects.');
// ALWAYS remove for no tag, no cat, etc.
$repository->deleteStatisticsForPrefix('no_budget', $dates);
$repository->deleteStatisticsForPrefix('no_category', $dates);
$repository->deleteStatisticsForPrefix('no_tag', $dates);
}
private function collectDatesFromJournals(Collection $journals): Collection

View File

@@ -62,7 +62,7 @@ class NotifiesAboutNewInvitation implements ShouldQueue
$url = route('invite', [$invitee->invite_code]);
try {
Mail::to($email)->send(new InvitationMail($invitee, $admin, $url));
Mail::to($email)->send(new InvitationMail($email, $admin, $url));
} catch (Exception $e) {
Log::error($e->getMessage());
Log::error($e->getTraceAsString());

View File

@@ -52,6 +52,7 @@ class NotificationSender
return;
}
Log::error('Could not send notification :(.');
Log::error($e->getMessage());
Log::error($e->getTraceAsString());
}

View File

@@ -150,6 +150,18 @@ class ExportDataGenerator
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
public function __construct()
{
$this->accounts = new Collection();

View File

@@ -71,6 +71,12 @@ class AvailableBudgetEnrichment implements EnrichmentInterface
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
private readonly bool $convertToPrimary; // @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
@@ -102,6 +108,12 @@ class AvailableBudgetEnrichment implements EnrichmentInterface
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
private array $currencies = [];
private array $currencyIds = [];
private array $ids = [];

View File

@@ -71,6 +71,12 @@ class BudgetLimitEnrichment implements EnrichmentInterface
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
private array $currencies = [];
private array $currencyIds = [];
private Carbon $end;

View File

@@ -73,6 +73,12 @@ class PiggyBankEnrichment implements EnrichmentInterface
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
private array $accounts = []; // @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
@@ -104,6 +110,12 @@ class PiggyBankEnrichment implements EnrichmentInterface
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
private array $amounts = [];
private Collection $collection;
private array $currencies = [];

View File

@@ -68,6 +68,12 @@ class PiggyBankEventEnrichment implements EnrichmentInterface
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
private array $accountIds = []; // @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
@@ -99,6 +105,12 @@ class PiggyBankEventEnrichment implements EnrichmentInterface
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
private Collection $collection;
private array $currencies = [];
private array $groupIds = [];

View File

@@ -77,6 +77,12 @@ class SubscriptionEnrichment implements EnrichmentInterface
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
private readonly bool $convertToPrimary;
private ?Carbon $end = null;
private array $mappedObjects = [];

View File

@@ -115,6 +115,18 @@ class TransactionGroupEnrichment implements EnrichmentInterface
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
public function __construct()
{
$this->dateFields = ['interest_date', 'book_date', 'process_date', 'due_date', 'payment_date', 'invoice_date'];

View File

@@ -73,6 +73,12 @@ class WebhookEnrichment implements EnrichmentInterface
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
private array $ids = []; // @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
@@ -104,6 +110,12 @@ class WebhookEnrichment implements EnrichmentInterface
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
// @phpstan-ignore-line
private array $responses = [];
private array $triggers = [];
private array $webhookDeliveries = [];

View File

@@ -448,7 +448,7 @@ class Navigation
$locale = Steam::getLocale();
// define period to increment
$increment = 'addDay';
$format = $this->preferredCarbonFormat($start, $end);
$format = $this->preferredCarbonLocalizedFormat($start, $end);
$displayFormat = (string) trans('config.month_and_day_js', [], $locale);
$diff = $start->diffInMonths($end, true);
// increment by month (for year)

View File

@@ -2217,7 +2217,7 @@ class OperatorQuerySearch implements SearchInterface
// changed from includeTags to includeAnyTags for #8632
$ids = array_values($tags->pluck('id')->toArray());
$index = count($this->includeAnyTags);
$this->includeAnyTags[$index] = array_unique(array_merge($this->includeAnyTags[$index], $ids));
$this->includeAnyTags[$index] = array_unique(array_merge($this->includeAnyTags[$index] ?? [], $ids));
}
break;
@@ -2252,7 +2252,7 @@ class OperatorQuerySearch implements SearchInterface
if ($tags->count() > 0) {
$ids = array_values($tags->pluck('id')->toArray());
$index = count($this->includeAnyTags);
$this->includeAnyTags[$index] = array_unique(array_merge($this->includeAnyTags[$index], $ids));
$this->includeAnyTags[$index] = array_unique(array_merge($this->includeAnyTags[$index] ?? [], $ids));
}
break;

View File

@@ -246,7 +246,7 @@ class UpdatePiggyBank implements ActionInterface
Log::warning(sprintf('Cannot remove %s from piggy bank.', $amount));
$currency = $accountRepository->getAccountCurrency($account) ?? Amount::getPrimaryCurrency();
event(new RuleActionFailedOnArray($this->action, $array, trans('rules.cannot_remove_from_piggy', [
'amount' => Amount::formatAnything($amount, $currency, false),
'amount' => Amount::formatAnything($currency, $amount, false),
'name' => $piggyBank->name,
])));

View File

@@ -9,7 +9,7 @@ This release and several previous ones fix authentication problems mainly. Clean
As far as I know it all works as it should, but feel free to open new issues when necessary. My apologies for the mess.
## Fixed
### Fixed
- Removed Laravel Sanctum as it was unused.
- Migrated away from Laravel 10's kernel and bootstrap structure.

View File

@@ -127,6 +127,7 @@
"rector/rector": "^2.0",
"thecodingmachine/phpstan-safe-rule": "^1.4"
},
"suggest": {},
"autoload": {
"psr-4": {
@@ -197,6 +198,11 @@
},
"platform": {
"php": "8.4"
},
"audit": {
"ignore": {
"PKSA-y2cr-5h3j-g3ys": "Keys are not generated."
}
}
}
}

107
composer.lock generated
View File

@@ -1878,16 +1878,16 @@
},
{
"name": "laravel/framework",
"version": "v12.51.0",
"version": "v12.52.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
"reference": "ce4de3feb211e47c4f959d309ccf8a2733b1bc16"
"reference": "d5511fa74f4608dbb99864198b1954042aa8d5a7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/ce4de3feb211e47c4f959d309ccf8a2733b1bc16",
"reference": "ce4de3feb211e47c4f959d309ccf8a2733b1bc16",
"url": "https://api.github.com/repos/laravel/framework/zipball/d5511fa74f4608dbb99864198b1954042aa8d5a7",
"reference": "d5511fa74f4608dbb99864198b1954042aa8d5a7",
"shasum": ""
},
"require": {
@@ -2096,7 +2096,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
"time": "2026-02-10T18:20:19+00:00"
"time": "2026-02-17T17:07:04+00:00"
},
{
"name": "laravel/passport",
@@ -3922,39 +3922,36 @@
},
{
"name": "nunomaduro/collision",
"version": "v8.8.3",
"version": "v8.9.1",
"source": {
"type": "git",
"url": "https://github.com/nunomaduro/collision.git",
"reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4"
"reference": "a1ed3fa530fd60bc515f9303e8520fcb7d4bd935"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nunomaduro/collision/zipball/1dc9e88d105699d0fee8bb18890f41b274f6b4c4",
"reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4",
"url": "https://api.github.com/repos/nunomaduro/collision/zipball/a1ed3fa530fd60bc515f9303e8520fcb7d4bd935",
"reference": "a1ed3fa530fd60bc515f9303e8520fcb7d4bd935",
"shasum": ""
},
"require": {
"filp/whoops": "^2.18.1",
"nunomaduro/termwind": "^2.3.1",
"filp/whoops": "^2.18.4",
"nunomaduro/termwind": "^2.4.0",
"php": "^8.2.0",
"symfony/console": "^7.3.0"
"symfony/console": "^7.4.4 || ^8.0.4"
},
"conflict": {
"laravel/framework": "<11.44.2 || >=13.0.0",
"phpunit/phpunit": "<11.5.15 || >=13.0.0"
"laravel/framework": "<11.48.0 || >=14.0.0",
"phpunit/phpunit": "<11.5.50 || >=14.0.0"
},
"require-dev": {
"brianium/paratest": "^7.8.3",
"larastan/larastan": "^3.4.2",
"laravel/framework": "^11.44.2 || ^12.18",
"laravel/pint": "^1.22.1",
"laravel/sail": "^1.43.1",
"laravel/sanctum": "^4.1.1",
"laravel/tinker": "^2.10.1",
"orchestra/testbench-core": "^9.12.0 || ^10.4",
"pestphp/pest": "^3.8.2 || ^4.0.0",
"sebastian/environment": "^7.2.1 || ^8.0"
"brianium/paratest": "^7.8.5",
"larastan/larastan": "^3.9.2",
"laravel/framework": "^11.48.0 || ^12.52.0",
"laravel/pint": "^1.27.1",
"orchestra/testbench-core": "^9.12.0 || ^10.9.0",
"pestphp/pest": "^3.8.5 || ^4.4.1 || ^5.0.0",
"sebastian/environment": "^7.2.1 || ^8.0.3 || ^9.0.0"
},
"type": "library",
"extra": {
@@ -4017,35 +4014,35 @@
"type": "patreon"
}
],
"time": "2025-11-20T02:55:25+00:00"
"time": "2026-02-17T17:33:08+00:00"
},
{
"name": "nunomaduro/termwind",
"version": "v2.3.3",
"version": "v2.4.0",
"source": {
"type": "git",
"url": "https://github.com/nunomaduro/termwind.git",
"reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017"
"reference": "712a31b768f5daea284c2169a7d227031001b9a8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nunomaduro/termwind/zipball/6fb2a640ff502caace8e05fd7be3b503a7e1c017",
"reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017",
"url": "https://api.github.com/repos/nunomaduro/termwind/zipball/712a31b768f5daea284c2169a7d227031001b9a8",
"reference": "712a31b768f5daea284c2169a7d227031001b9a8",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"php": "^8.2",
"symfony/console": "^7.3.6"
"symfony/console": "^7.4.4 || ^8.0.4"
},
"require-dev": {
"illuminate/console": "^11.46.1",
"laravel/pint": "^1.25.1",
"illuminate/console": "^11.47.0",
"laravel/pint": "^1.27.1",
"mockery/mockery": "^1.6.12",
"pestphp/pest": "^2.36.0 || ^3.8.4 || ^4.1.3",
"pestphp/pest": "^2.36.0 || ^3.8.4 || ^4.3.2",
"phpstan/phpstan": "^1.12.32",
"phpstan/phpstan-strict-rules": "^1.6.2",
"symfony/var-dumper": "^7.3.5",
"symfony/var-dumper": "^7.3.5 || ^8.0.4",
"thecodingmachine/phpstan-strict-rules": "^1.0.0"
},
"type": "library",
@@ -4077,7 +4074,7 @@
"email": "enunomaduro@gmail.com"
}
],
"description": "Its like Tailwind CSS, but for the console.",
"description": "It's like Tailwind CSS, but for the console.",
"keywords": [
"cli",
"console",
@@ -4088,7 +4085,7 @@
],
"support": {
"issues": "https://github.com/nunomaduro/termwind/issues",
"source": "https://github.com/nunomaduro/termwind/tree/v2.3.3"
"source": "https://github.com/nunomaduro/termwind/tree/v2.4.0"
},
"funding": [
{
@@ -4104,7 +4101,7 @@
"type": "github"
}
],
"time": "2025-11-20T02:34:59+00:00"
"time": "2026-02-16T23:10:27+00:00"
},
{
"name": "nyholm/psr7",
@@ -10473,16 +10470,16 @@
},
{
"name": "fruitcake/laravel-debugbar",
"version": "v4.0.8",
"version": "v4.0.9",
"source": {
"type": "git",
"url": "https://github.com/fruitcake/laravel-debugbar.git",
"reference": "ad7a5b11c11bf7773c9acd04d0fe0d79a229b1c7"
"reference": "4eee2f032172fd6548028395d7a1adbd8eae2ba0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/fruitcake/laravel-debugbar/zipball/ad7a5b11c11bf7773c9acd04d0fe0d79a229b1c7",
"reference": "ad7a5b11c11bf7773c9acd04d0fe0d79a229b1c7",
"url": "https://api.github.com/repos/fruitcake/laravel-debugbar/zipball/4eee2f032172fd6548028395d7a1adbd8eae2ba0",
"reference": "4eee2f032172fd6548028395d7a1adbd8eae2ba0",
"shasum": ""
},
"require": {
@@ -10559,7 +10556,7 @@
],
"support": {
"issues": "https://github.com/fruitcake/laravel-debugbar/issues",
"source": "https://github.com/fruitcake/laravel-debugbar/tree/v4.0.8"
"source": "https://github.com/fruitcake/laravel-debugbar/tree/v4.0.9"
},
"funding": [
{
@@ -10571,7 +10568,7 @@
"type": "github"
}
],
"time": "2026-02-14T13:26:03+00:00"
"time": "2026-02-17T08:14:13+00:00"
},
{
"name": "hamcrest/hamcrest-php",
@@ -11857,16 +11854,16 @@
},
{
"name": "phpunit/phpunit",
"version": "12.5.11",
"version": "12.5.14",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "9b518cb40f9474572c9f0178e96ff3dc1cf02bf1"
"reference": "47283cfd98d553edcb1353591f4e255dc1bb61f0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9b518cb40f9474572c9f0178e96ff3dc1cf02bf1",
"reference": "9b518cb40f9474572c9f0178e96ff3dc1cf02bf1",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/47283cfd98d553edcb1353591f4e255dc1bb61f0",
"reference": "47283cfd98d553edcb1353591f4e255dc1bb61f0",
"shasum": ""
},
"require": {
@@ -11935,7 +11932,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
"source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.11"
"source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.14"
},
"funding": [
{
@@ -11959,20 +11956,20 @@
"type": "tidelift"
}
],
"time": "2026-02-10T12:32:02+00:00"
"time": "2026-02-18T12:38:40+00:00"
},
{
"name": "rector/rector",
"version": "2.3.6",
"version": "2.3.7",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
"reference": "ca9ebb81d280cd362ea39474dabd42679e32ca6b"
"reference": "9c46ad17f57963932c9788fd1b0f1d07ff450370"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/rectorphp/rector/zipball/ca9ebb81d280cd362ea39474dabd42679e32ca6b",
"reference": "ca9ebb81d280cd362ea39474dabd42679e32ca6b",
"url": "https://api.github.com/repos/rectorphp/rector/zipball/9c46ad17f57963932c9788fd1b0f1d07ff450370",
"reference": "9c46ad17f57963932c9788fd1b0f1d07ff450370",
"shasum": ""
},
"require": {
@@ -12011,7 +12008,7 @@
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
"source": "https://github.com/rectorphp/rector/tree/2.3.6"
"source": "https://github.com/rectorphp/rector/tree/2.3.7"
},
"funding": [
{
@@ -12019,7 +12016,7 @@
"type": "github"
}
],
"time": "2026-02-06T14:25:06+00:00"
"time": "2026-02-19T14:44:16+00:00"
},
{
"name": "sebastian/cli-parser",

View File

@@ -64,7 +64,7 @@ return [
'web' => [
'driver' => 'session',
'provider' => 'users',
'remember' => true,
'remember' => 364 * 24 * 60, // 364 days.
],
'remote_user_guard' => [
'driver' => 'remote_user_guard',

View File

@@ -78,8 +78,8 @@ return [
'running_balance_column' => (bool)envNonEmpty('USE_RUNNING_BALANCE', true), // this is only the default value, is not used.
// see cer.php for exchange rates feature flag.
],
'version' => '6.4.22',
'build_time' => 1771180835,
'version' => 'develop/2026-02-20',
'build_time' => 1771564054,
'api_version' => '2.1.0', // field is no longer used.
'db_version' => 28, // field is no longer used.

93
package-lock.json generated
View File

@@ -3246,13 +3246,13 @@
"license": "MIT"
},
"node_modules/@types/node": {
"version": "25.2.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz",
"integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==",
"version": "25.3.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz",
"integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==",
"dev": true,
"license": "MIT",
"dependencies": {
"undici-types": "~7.16.0"
"undici-types": "~7.18.0"
}
},
"node_modules/@types/node-forge": {
@@ -3747,9 +3747,9 @@
}
},
"node_modules/acorn": {
"version": "8.15.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"version": "8.16.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
"integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
"dev": true,
"license": "MIT",
"bin": {
@@ -3938,9 +3938,9 @@
}
},
"node_modules/asn1.js/node_modules/bn.js": {
"version": "4.12.2",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz",
"integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==",
"version": "4.12.3",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz",
"integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==",
"dev": true,
"license": "MIT"
},
@@ -4145,13 +4145,16 @@
"license": "MIT"
},
"node_modules/baseline-browser-mapping": {
"version": "2.9.19",
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz",
"integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==",
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz",
"integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==",
"dev": true,
"license": "Apache-2.0",
"bin": {
"baseline-browser-mapping": "dist/cli.js"
"baseline-browser-mapping": "dist/cli.cjs"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/batch": {
@@ -4192,9 +4195,9 @@
"license": "MIT"
},
"node_modules/bn.js": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz",
"integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==",
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.3.tgz",
"integrity": "sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==",
"dev": true,
"license": "MIT"
},
@@ -5094,9 +5097,9 @@
}
},
"node_modules/create-ecdh/node_modules/bn.js": {
"version": "4.12.2",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz",
"integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==",
"version": "4.12.3",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz",
"integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==",
"dev": true,
"license": "MIT"
},
@@ -5221,9 +5224,9 @@
}
},
"node_modules/css-loader": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.3.tgz",
"integrity": "sha512-frbERmjT0UC5lMheWpJmMilnt9GEhbZJN/heUb7/zaJYeIzj5St9HvDcfshzzOqbsS+rYpMk++2SD3vGETDSyA==",
"version": "7.1.4",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.4.tgz",
"integrity": "sha512-vv3J9tlOl04WjiMvHQI/9tmIrCxVrj6PFbHemBB1iihpeRbi/I4h033eoFIhwxBBqLhI0KYFS7yvynBFhIZfTw==",
"dev": true,
"license": "MIT",
"peer": true,
@@ -5245,7 +5248,7 @@
"url": "https://opencollective.com/webpack"
},
"peerDependencies": {
"@rspack/core": "0.x || 1.x",
"@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0",
"webpack": "^5.27.0"
},
"peerDependenciesMeta": {
@@ -5605,9 +5608,9 @@
}
},
"node_modules/diffie-hellman/node_modules/bn.js": {
"version": "4.12.2",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz",
"integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==",
"version": "4.12.3",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz",
"integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==",
"dev": true,
"license": "MIT"
},
@@ -5822,9 +5825,9 @@
}
},
"node_modules/elliptic/node_modules/bn.js": {
"version": "4.12.2",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz",
"integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==",
"version": "4.12.3",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz",
"integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==",
"dev": true,
"license": "MIT"
},
@@ -7150,9 +7153,9 @@
}
},
"node_modules/i18next": {
"version": "25.8.8",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-25.8.8.tgz",
"integrity": "sha512-gNTWXMBe9JBr6LAl2tqRfa6fn2EjrQJ3JBeH2jR+yIckwaJYdI7UfMQrnxzFjuFBb2FHy9Yn4gJB2BwLuC8/ZQ==",
"version": "25.8.11",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-25.8.11.tgz",
"integrity": "sha512-LZ32llTLGludnddjLoijHV7TbmVubU5eJnsWf8taiuM3jmSfUuvBLuyDeubJKS1yBjLBgb7As124M4KWNcBvpw==",
"funding": [
{
"type": "individual",
@@ -7920,9 +7923,9 @@
}
},
"node_modules/launch-editor": {
"version": "2.12.0",
"resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz",
"integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==",
"version": "2.13.0",
"resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.0.tgz",
"integrity": "sha512-u+9asUHMJ99lA15VRMXw5XKfySFR9dGXwgsgS14YTbUq3GITP58mIM32At90P5fZ+MUId5Yw+IwI/yKub7jnCQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8217,9 +8220,9 @@
}
},
"node_modules/miller-rabin/node_modules/bn.js": {
"version": "4.12.2",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz",
"integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==",
"version": "4.12.3",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz",
"integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==",
"dev": true,
"license": "MIT"
},
@@ -9735,9 +9738,9 @@
}
},
"node_modules/public-encrypt/node_modules/bn.js": {
"version": "4.12.2",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz",
"integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==",
"version": "4.12.3",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz",
"integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==",
"dev": true,
"license": "MIT"
},
@@ -11314,9 +11317,9 @@
}
},
"node_modules/undici-types": {
"version": "7.16.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
"integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
"version": "7.18.2",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz",
"integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==",
"dev": true,
"license": "MIT"
},

View File

@@ -732,7 +732,6 @@ Route::group(
// Users API routes:
Route::group(
[
'middleware' => ['auth:api,sanctum', 'bindings'],
'namespace' => 'FireflyIII\Api\V1\Controllers\System',
'prefix' => 'v1/users',
'as' => 'api.v1.users.',
@@ -749,7 +748,6 @@ Route::group(
// Batch API routes:
Route::group(
[
'middleware' => ['auth:api,sanctum', 'bindings'],
'namespace' => 'FireflyIII\Api\V1\Controllers\System',
'prefix' => 'v1/batch',
'as' => 'api.v1.batch.',

View File

@@ -81,9 +81,8 @@ Route::group(
// );
Route::group(
['middleware' => ['binders-only'], 'namespace' => 'FireflyIII\Http\Controllers\System'],
['namespace' => 'FireflyIII\Http\Controllers\System'],
static function (): void {
// Route::get('offline', static fn () => view('errors.offline'));
Route::get('health', ['uses' => 'HealthcheckController@check', 'as' => 'healthcheck'])->withoutMiddleware(['web']);
}
);