Compare commits

...

35 Commits

Author SHA1 Message Date
github-actions[bot]
cc0854c712 Merge pull request #11607 from firefly-iii/release-1769540197
🤖 Automatically merge the PR into the develop branch.
2026-01-27 19:56:46 +01:00
JC5
5c6aee0037 🤖 Auto commit for release 'develop' on 2026-01-27 2026-01-27 19:56:37 +01:00
James Cole
391f8c34cc Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2026-01-27 19:50:53 +01:00
James Cole
db6ed26d5a Fix bad pointer 2026-01-27 19:50:46 +01:00
github-actions[bot]
eece951036 Merge pull request #11606 from firefly-iii/release-1769539261
🤖 Automatically merge the PR into the develop branch.
2026-01-27 19:41:10 +01:00
JC5
3d7a62293b 🤖 Auto commit for release 'develop' on 2026-01-27 2026-01-27 19:41:01 +01:00
James Cole
2691dbe438 Add flag. 2026-01-27 19:36:35 +01:00
James Cole
fe971ec611 Add new setting. 2026-01-27 19:35:14 +01:00
github-actions[bot]
9e4c5435f0 Merge pull request #11605 from firefly-iii/release-1769538639
🤖 Automatically merge the PR into the develop branch.
2026-01-27 19:30:49 +01:00
JC5
cdb2b91813 🤖 Auto commit for release 'develop' on 2026-01-27 2026-01-27 19:30:39 +01:00
James Cole
f4cf158d21 Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop
# Conflicts:
#	app/Factory/TransactionJournalFactory.php
2026-01-27 19:25:56 +01:00
James Cole
b19f1d0353 Restore use of NullArrayObject 2026-01-27 19:25:23 +01:00
github-actions[bot]
eb2c612476 Merge pull request #11604 from firefly-iii/release-1769534159
🤖 Automatically merge the PR into the develop branch.
2026-01-27 18:16:08 +01:00
JC5
e89eede8a0 🤖 Auto commit for release 'develop' on 2026-01-27 2026-01-27 18:15:59 +01:00
James Cole
00e09c4bd9 Fix #11601 2026-01-27 18:08:52 +01:00
James Cole
33e63434a3 Fix null pointers 2026-01-27 18:04:31 +01:00
James Cole
1b68e5374a Fix nulls 2026-01-27 18:04:16 +01:00
James Cole
f93e55f9b0 Fix null pointer. 2026-01-27 18:03:39 +01:00
James Cole
4a3f62df89 Fix call to old object. 2026-01-27 18:02:47 +01:00
James Cole
0c5ac39d5e Update composer packages 2026-01-27 18:00:17 +01:00
github-actions[bot]
ccb44d6fbd Merge pull request #11595 from firefly-iii/release-1769407906
🤖 Automatically merge the PR into the develop branch.
2026-01-26 07:11:54 +01:00
JC5
b9fe074080 🤖 Auto commit for release 'develop' on 2026-01-26 2026-01-26 07:11:46 +01:00
James Cole
033281ff51 Fix routes and add batch finish command. 2026-01-26 06:56:10 +01:00
github-actions[bot]
5e8d23ba91 Merge pull request #11592 from firefly-iii/release-1769398904
🤖 Automatically merge the PR into the develop branch.
2026-01-26 04:41:52 +01:00
JC5
35509f19ad 🤖 Auto commit for release 'develop' on 2026-01-26 2026-01-26 04:41:44 +01:00
github-actions[bot]
5e56eeb22e Merge pull request #11591 from firefly-iii/release-1769370043
🤖 Automatically merge the PR into the develop branch.
2026-01-25 20:40:53 +01:00
JC5
e921bb3ebe 🤖 Auto commit for release 'develop' on 2026-01-25 2026-01-25 20:40:43 +01:00
James Cole
353cd0f4f1 Try to fix call to trusted proxies 2026-01-25 20:36:25 +01:00
James Cole
1376ed16cf Rename file. 2026-01-25 20:32:10 +01:00
github-actions[bot]
36646b9c05 Merge pull request #11590 from firefly-iii/release-1769368675
🤖 Automatically merge the PR into the develop branch.
2026-01-25 20:18:02 +01:00
JC5
0b20c9d53b 🤖 Auto commit for release 'develop' on 2026-01-25 2026-01-25 20:17:55 +01:00
James Cole
b91d8661bc Clean up authentication. 2026-01-25 20:13:53 +01:00
James Cole
b684f3fc70 Merge pull request #11589 from mateuszkulapl/dark-mode-improvements
apply user-selected light/dark mode to form elements (checkboxes, date picker) #8613 #7620
2026-01-25 19:20:16 +01:00
mergify[bot]
c8a235b0b0 Merge branch 'develop' into dark-mode-improvements 2026-01-25 18:14:52 +00:00
mateuszkulapl
229db34d13 fix: apply user-selected light/dark mode to form elements (checkboxes, date picker) #8613 #7620 2026-01-25 18:45:19 +01:00
26 changed files with 895 additions and 667 deletions

View File

@@ -4,6 +4,7 @@ Over time, many people have contributed to Firefly III. Their efforts are not al
Please find below all the people who contributed to the Firefly III code. Their names are mentioned in the year of their first contribution.
## 2026
- mateuszkulapl
- Gianluca Martino
- embedded

View File

@@ -0,0 +1,71 @@
<?php
declare(strict_types=1);
/*
* BatchController.php
* Copyright (c) 2026 james@firefly-iii.org
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
namespace FireflyIII\Api\V1\Controllers\System;
use FireflyIII\Api\V1\Controllers\Controller;
use FireflyIII\Events\Model\TransactionGroup\CreatedSingleTransactionGroup;
use FireflyIII\Events\Model\TransactionGroup\TransactionGroupEventFlags;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class BatchController extends Controller
{
private JournalRepositoryInterface $repository;
/**
* UserController constructor.
*/
public function __construct()
{
parent::__construct();
$this->middleware(function ($request, $next) {
$this->repository = app(JournalRepositoryInterface::class);
return $next($request);
});
}
public function finishBatch(Request $request): JsonResponse
{
$journals = $this->repository->getUncompletedJournals();
if (0 === count($journals)) {
return response()->json([], 204);
}
/** @var TransactionJournal $first */
$first = $journals->first();
$group = $first?->transactionGroup;
if (null === $group) {
return response()->json([], 204);
}
$flags = new TransactionGroupEventFlags();
$flags->applyRules = 'true' === $request->get('apply_rules');
event(new CreatedSingleTransactionGroup($group, $flags));
return response()->json([], 204);
}
}

View File

@@ -58,6 +58,8 @@ class UserController extends Controller
});
}
public function finishBatch(): JsonResponse {}
/**
* This endpoint is documented at:
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/users/deleteUser

View File

@@ -50,6 +50,7 @@ use FireflyIII\Services\Internal\Destroy\JournalDestroyService;
use FireflyIII\Services\Internal\Support\JournalServiceTrait;
use FireflyIII\Support\Facades\Amount;
use FireflyIII\Support\Facades\FireflyConfig;
use FireflyIII\Support\NullArrayObject;
use FireflyIII\User;
use FireflyIII\Validation\AccountValidator;
use Illuminate\Support\Collection;
@@ -126,7 +127,7 @@ class TransactionJournalFactory
foreach ($transactions as $index => $row) {
$row['batch_submission'] = $batchSubmission;
Log::debug(sprintf('Now creating journal %d/%d', $index + 1, count($transactions)));
$journal = $this->createJournal($row);
$journal = $this->createJournal(new NullArrayObject($row));
if ($journal instanceof TransactionJournal) {
$collection->push($journal);
}
@@ -162,7 +163,7 @@ class TransactionJournalFactory
*
* @SuppressWarnings("PHPMD.ExcessiveMethodLength")
*/
private function createJournal(array $row): ?TransactionJournal
private function createJournal(NullArrayObject $row): ?TransactionJournal
{
Log::debug('Now in TransactionJournalFactory::createJournal()');
$row['import_hash_v2'] = $this->hashArray($row);
@@ -345,7 +346,7 @@ class TransactionJournalFactory
return $journal;
}
private function hashArray(array $row): string
private function hashArray(NullArrayObject $row): string
{
unset($row['import_hash_v2'], $row['original_source']);
@@ -356,7 +357,7 @@ class TransactionJournalFactory
$json = microtime();
}
$hash = hash('sha256', $json);
Log::debug(sprintf('The hash is: %s', $hash), $row);
Log::debug(sprintf('The hash is: %s', $hash), $row->getArrayCopy());
return $hash;
}
@@ -576,7 +577,7 @@ class TransactionJournalFactory
/**
* Link a piggy bank to this journal.
*/
private function storePiggyEvent(TransactionJournal $journal, array $data): void
private function storePiggyEvent(TransactionJournal $journal, NullArrayObject $data): void
{
Log::debug('Will now store piggy event.');
@@ -591,10 +592,10 @@ class TransactionJournalFactory
Log::debug('Create no piggy event');
}
private function storeMetaFields(TransactionJournal $journal, array $transaction): void
private function storeMetaFields(TransactionJournal $journal, NullArrayObject $transaction): void
{
foreach ($this->fields as $field) {
$this->storeMeta($journal, $transaction, $field);
$this->storeMeta($journal, $transaction->getArrayCopy(), $field);
}
}
@@ -614,7 +615,7 @@ class TransactionJournalFactory
$factory->updateOrCreate($set);
}
private function storeLocation(TransactionJournal $journal, array $data): void
private function storeLocation(TransactionJournal $journal, NullArrayObject $data): void
{
if (!in_array(null, [$data['longitude'], $data['latitude'], $data['zoom_level']], true)) {
$location = new Location();

View File

@@ -61,36 +61,38 @@ class ConfigurationController extends Controller
*/
public function index(): Factory|\Illuminate\Contracts\View\View
{
$subTitle = (string) trans('firefly.instance_configuration');
$subTitleIcon = 'fa-wrench';
$subTitle = (string) trans('firefly.instance_configuration');
$subTitleIcon = 'fa-wrench';
Log::channel('audit')->info('User visits admin config index.');
// all available configuration and their default value in case
// they don't exist yet.
$singleUserMode = FireflyConfig::get('single_user_mode', config('firefly.configuration.single_user_mode'))->data;
$isDemoSite = FireflyConfig::get('is_demo_site', config('firefly.configuration.is_demo_site'))->data;
$siteOwner = config('firefly.site_owner');
$singleUserMode = FireflyConfig::get('single_user_mode', config('firefly.configuration.single_user_mode'))->data;
$isDemoSite = FireflyConfig::get('is_demo_site', config('firefly.configuration.is_demo_site'))->data;
$siteOwner = config('firefly.site_owner');
$enableExchangeRates = FireflyConfig::get('enable_exchange_rates', config('cer.enabled'))->data;
$useRunningBalance = FireflyConfig::get('use_running_balance', config('firefly.feature_flags.running_balance_column'))->data;
$enableExternalMap = FireflyConfig::get('enable_external_map', config('firefly.enable_external_map'))->data;
$enableExternalRates = FireflyConfig::get('enable_external_rates', config('cer.download_enabled'))->data;
$allowWebhooks = FireflyConfig::get('allow_webhooks', config('firefly.allow_webhooks'))->data;
$validUrlProtocols = FireflyConfig::get('valid_url_protocols', config('firefly.valid_url_protocols'))->data;
$enableExchangeRates = FireflyConfig::get('enable_exchange_rates', config('cer.enabled'))->data;
$useRunningBalance = FireflyConfig::get('use_running_balance', config('firefly.feature_flags.running_balance_column'))->data;
$enableExternalMap = FireflyConfig::get('enable_external_map', config('firefly.enable_external_map'))->data;
$enableExternalRates = FireflyConfig::get('enable_external_rates', config('cer.download_enabled'))->data;
$allowWebhooks = FireflyConfig::get('allow_webhooks', config('firefly.allow_webhooks'))->data;
$enableBatchProcessing = FireflyConfig::get('enable_batch_processing', false)->data;
$validUrlProtocols = FireflyConfig::get('valid_url_protocols', config('firefly.valid_url_protocols'))->data;
return view('settings.configuration.index', [
'subTitle' => $subTitle,
'subTitleIcon' => $subTitleIcon,
'singleUserMode' => $singleUserMode,
'isDemoSite' => $isDemoSite,
'siteOwner' => $siteOwner,
'enableExchangeRates' => $enableExchangeRates,
'useRunningBalance' => $useRunningBalance,
'enableExternalMap' => $enableExternalMap,
'enableExternalRates' => $enableExternalRates,
'allowWebhooks' => $allowWebhooks,
'validUrlProtocols' => $validUrlProtocols,
'subTitle' => $subTitle,
'subTitleIcon' => $subTitleIcon,
'singleUserMode' => $singleUserMode,
'isDemoSite' => $isDemoSite,
'siteOwner' => $siteOwner,
'enableExchangeRates' => $enableExchangeRates,
'useRunningBalance' => $useRunningBalance,
'enableExternalMap' => $enableExternalMap,
'enableExternalRates' => $enableExternalRates,
'allowWebhooks' => $allowWebhooks,
'enableBatchProcessing' => $enableBatchProcessing,
'validUrlProtocols' => $validUrlProtocols,
]);
}

View File

@@ -45,6 +45,6 @@ class TrustProxies extends Middleware
*/
public function __construct()
{
$this->proxies = (string) config('firefly.trusted_proxies');
$this->proxies = (string) config('trustedproxy.proxies');
}
}

View File

@@ -41,14 +41,15 @@ class ConfigurationRequest extends FormRequest
public function getConfigurationData(): array
{
return [
'single_user_mode' => $this->boolean('single_user_mode'),
'enable_exchange_rates' => $this->boolean('enable_exchange_rates'),
'use_running_balance' => $this->boolean('use_running_balance'),
'enable_external_map' => $this->boolean('enable_external_map'),
'enable_external_rates' => $this->boolean('enable_external_rates'),
'allow_webhooks' => $this->boolean('allow_webhooks'),
'valid_url_protocols' => $this->string('valid_url_protocols'),
'is_demo_site' => $this->boolean('is_demo_site'),
'single_user_mode' => $this->boolean('single_user_mode'),
'enable_exchange_rates' => $this->boolean('enable_exchange_rates'),
'use_running_balance' => $this->boolean('use_running_balance'),
'enable_external_map' => $this->boolean('enable_external_map'),
'enable_external_rates' => $this->boolean('enable_external_rates'),
'allow_webhooks' => $this->boolean('allow_webhooks'),
'valid_url_protocols' => $this->string('valid_url_protocols'),
'is_demo_site' => $this->boolean('is_demo_site'),
'enable_batch_processing' => $this->boolean('enable_batch_processing'),
];
}
@@ -59,14 +60,15 @@ class ConfigurationRequest extends FormRequest
{
// fixed
return [
'single_user_mode' => 'min:0|max:1|numeric',
'enable_exchange_rates' => 'min:0|max:1|numeric',
'use_running_balance' => 'min:0|max:1|numeric',
'enable_external_map' => 'min:0|max:1|numeric',
'enable_external_rates' => 'min:0|max:1|numeric',
'allow_webhooks' => 'min:0|max:1|numeric',
'valid_url_protocols' => 'min:0|max:255',
'is_demo_site' => 'min:0|max:1|numeric',
'single_user_mode' => 'min:0|max:1|numeric',
'enable_exchange_rates' => 'min:0|max:1|numeric',
'use_running_balance' => 'min:0|max:1|numeric',
'enable_external_map' => 'min:0|max:1|numeric',
'enable_external_rates' => 'min:0|max:1|numeric',
'allow_webhooks' => 'min:0|max:1|numeric',
'enable_batch_processing' => 'min:0|max:1|numeric',
'valid_url_protocols' => 'min:0|max:255',
'is_demo_site' => 'min:0|max:1|numeric',
];
}

View File

@@ -48,8 +48,13 @@ class ProcessesNewTransactionGroup implements ShouldQueue
public function handle(CreatedSingleTransactionGroup $event): void
{
Log::debug(sprintf('In ProcessesNewTransactionGroup::handle(#%d)', $event->transactionGroup->id));
if (true === $event->flags->batchSubmission) {
Log::debug(sprintf('Will do nothing for group #%d because it is part of a batch.', $event->transactionGroup->id));
$setting = FireflyConfig::get('enable_batch_processing', false)->data;
if (true === $event->flags->batchSubmission && true === $setting) {
Log::debug(sprintf(
'Will do nothing for group #%d because it is part of a batch (setting:%s).',
$event->transactionGroup->id,
var_export($setting, true)
));
return;
}

View File

@@ -36,6 +36,7 @@ use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
use FireflyIII\Rules\UniqueIban;
use FireflyIII\Support\NullArrayObject;
use Illuminate\Support\Facades\Log;
use Safe\Exceptions\JsonException;
@@ -377,7 +378,7 @@ trait JournalServiceTrait
return $amount;
}
protected function storeBudget(TransactionJournal $journal, array $data): void
protected function storeBudget(TransactionJournal $journal, NullArrayObject $data): void
{
if (TransactionTypeEnum::WITHDRAWAL->value !== $journal->transactionType->type) {
$journal->budgets()->sync([]);
@@ -395,7 +396,7 @@ trait JournalServiceTrait
$journal->budgets()->sync([]);
}
protected function storeCategory(TransactionJournal $journal, array $data): void
protected function storeCategory(TransactionJournal $journal, NullArrayObject $data): void
{
$category = $this->categoryRepository->findCategory($data['category_id'], $data['category_name']);
if (null !== $category) {

View File

@@ -42,6 +42,7 @@ class DynamicConfigKey
'configuration.enable_external_map', // boolean
'configuration.enable_external_rates', // boolean
'configuration.allow_webhooks', // boolean
'configuration.enable_batch_processing', // boolean
'configuration.valid_url_protocols', // string ("http,https")
];

View File

@@ -47,6 +47,7 @@ use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance;
use Illuminate\Foundation\Http\Middleware\TrimStrings;
use Illuminate\Http\Middleware\HandleCors;
use Illuminate\Http\Middleware\ValidatePostSize;
use Illuminate\Routing\Middleware\SubstituteBindings;
use Illuminate\View\Middleware\ShareErrorsFromSession;
use Laravel\Passport\Http\Middleware\CreateFreshApiToken;
use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful;
@@ -88,11 +89,6 @@ if (!function_exists('stringIsEqual')) {
}
}
//$app = new Application(
// realpath(__DIR__ . '/../')
//);
$app = Application::configure(basePath: dirname(__DIR__))
->withRouting(
web : __DIR__ . '/../routes/web.php',
@@ -101,30 +97,39 @@ $app = Application::configure(basePath: dirname(__DIR__))
)
->withMiddleware(function (Middleware $middleware): void {
// overrule the standard middleware
$middleware->use([
InvokeDeferredCallbacks::class,
// \Illuminate\Http\Middleware\TrustHosts::class,
TrustProxies::class,
HandleCors::class,
PreventRequestsDuringMaintenance::class,
ValidatePostSize::class,
TrimStrings::class,
ConvertEmptyStringsToNull::class,
SecureHeaders::class,
]);
$middleware->use(
[
InvokeDeferredCallbacks::class,
HandleCors::class,
PreventRequestsDuringMaintenance::class,
ValidatePostSize::class,
TrimStrings::class,
ConvertEmptyStringsToNull::class,
SecureHeaders::class,
TrustProxies::class,
]
);
// overrule the web group
$middleware->group('web', [
Illuminate\Cookie\Middleware\EncryptCookies::class,
Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
StartFireflySession::class,
Illuminate\View\Middleware\ShareErrorsFromSession::class,
VerifyCsrfToken::class,
Illuminate\Routing\Middleware\SubstituteBindings::class,
CreateFreshApiToken::class,
]);
$middleware->group('web',
[
EncryptCookies::class,
AddQueuedCookiesToResponse::class,
StartFireflySession::class,
ShareErrorsFromSession::class,
VerifyCsrfToken::class,
SubstituteBindings::class,
CreateFreshApiToken::class,
]
);
// new group?
$middleware->appendToGroup('binders-only', [Installer::class, EncryptCookies::class, AddQueuedCookiesToResponse::class, Binder::class]);
$middleware->appendToGroup('binders-only',
[
Installer::class,
EncryptCookies::class,
AddQueuedCookiesToResponse::class,
Binder::class,
]);
//
$middleware->appendToGroup('user-not-logged-in', [

View File

@@ -115,11 +115,11 @@
"thecodingmachine/safe": "^3.1"
},
"require-dev": {
"barryvdh/laravel-debugbar": "^3.9",
"barryvdh/laravel-ide-helper": "^3",
"driftingly/rector-laravel": "^2.0",
"fakerphp/faker": "1.*",
"filp/whoops": "2.*",
"fruitcake/laravel-debugbar": "^4.0",
"larastan/larastan": "^3",
"laravel-json-api/testing": "^3.0",
"mockery/mockery": "1.*",

351
composer.lock generated
View File

@@ -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": "434b4c996dad2af3b38326bd81c57534",
"content-hash": "1de93b568d1a9a4847285e5b5bc6695b",
"packages": [
{
"name": "bacon/bacon-qr-code",
@@ -4824,16 +4824,16 @@
},
{
"name": "phpseclib/phpseclib",
"version": "3.0.48",
"version": "3.0.49",
"source": {
"type": "git",
"url": "https://github.com/phpseclib/phpseclib.git",
"reference": "64065a5679c50acb886e82c07aa139b0f757bb89"
"reference": "6233a1e12584754e6b5daa69fe1289b47775c1b9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/64065a5679c50acb886e82c07aa139b0f757bb89",
"reference": "64065a5679c50acb886e82c07aa139b0f757bb89",
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/6233a1e12584754e6b5daa69fe1289b47775c1b9",
"reference": "6233a1e12584754e6b5daa69fe1289b47775c1b9",
"shasum": ""
},
"require": {
@@ -4914,7 +4914,7 @@
],
"support": {
"issues": "https://github.com/phpseclib/phpseclib/issues",
"source": "https://github.com/phpseclib/phpseclib/tree/3.0.48"
"source": "https://github.com/phpseclib/phpseclib/tree/3.0.49"
},
"funding": [
{
@@ -4930,7 +4930,7 @@
"type": "tidelift"
}
],
"time": "2025-12-15T11:51:42+00:00"
"time": "2026-01-27T09:17:28+00:00"
},
{
"name": "pragmarx/google2fa",
@@ -10077,91 +10077,6 @@
}
],
"packages-dev": [
{
"name": "barryvdh/laravel-debugbar",
"version": "v3.16.5",
"source": {
"type": "git",
"url": "https://github.com/fruitcake/laravel-debugbar.git",
"reference": "e85c0a8464da67e5b4a53a42796d46a43fc06c9a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/fruitcake/laravel-debugbar/zipball/e85c0a8464da67e5b4a53a42796d46a43fc06c9a",
"reference": "e85c0a8464da67e5b4a53a42796d46a43fc06c9a",
"shasum": ""
},
"require": {
"illuminate/routing": "^10|^11|^12",
"illuminate/session": "^10|^11|^12",
"illuminate/support": "^10|^11|^12",
"php": "^8.1",
"php-debugbar/php-debugbar": "^2.2.4",
"symfony/finder": "^6|^7|^8"
},
"require-dev": {
"mockery/mockery": "^1.3.3",
"orchestra/testbench-dusk": "^7|^8|^9|^10",
"phpunit/phpunit": "^9.5.10|^10|^11",
"squizlabs/php_codesniffer": "^3.5"
},
"type": "library",
"extra": {
"laravel": {
"aliases": {
"Debugbar": "Barryvdh\\Debugbar\\Facades\\Debugbar"
},
"providers": [
"Barryvdh\\Debugbar\\ServiceProvider"
]
},
"branch-alias": {
"dev-master": "3.16-dev"
}
},
"autoload": {
"files": [
"src/helpers.php"
],
"psr-4": {
"Barryvdh\\Debugbar\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Barry vd. Heuvel",
"email": "barryvdh@gmail.com"
}
],
"description": "PHP Debugbar integration for Laravel",
"keywords": [
"debug",
"debugbar",
"dev",
"laravel",
"profiler",
"webprofiler"
],
"support": {
"issues": "https://github.com/fruitcake/laravel-debugbar/issues",
"source": "https://github.com/fruitcake/laravel-debugbar/tree/v3.16.5"
},
"funding": [
{
"url": "https://fruitcake.nl",
"type": "custom"
},
{
"url": "https://github.com/barryvdh",
"type": "github"
}
],
"time": "2026-01-23T15:03:22+00:00"
},
{
"name": "barryvdh/laravel-ide-helper",
"version": "v3.6.1",
@@ -10613,6 +10528,108 @@
},
"time": "2024-11-21T13:46:39+00:00"
},
{
"name": "fruitcake/laravel-debugbar",
"version": "v4.0.3",
"source": {
"type": "git",
"url": "https://github.com/fruitcake/laravel-debugbar.git",
"reference": "9eec3770a304c52d1dd71577b44bbb9ab904f5d8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/fruitcake/laravel-debugbar/zipball/9eec3770a304c52d1dd71577b44bbb9ab904f5d8",
"reference": "9eec3770a304c52d1dd71577b44bbb9ab904f5d8",
"shasum": ""
},
"require": {
"illuminate/routing": "^11|^12",
"illuminate/session": "^11|^12",
"illuminate/support": "^11|^12",
"php": "^8.2",
"php-debugbar/php-debugbar": "^3.1",
"php-debugbar/symfony-bridge": "^1.1"
},
"replace": {
"barryvdh/laravel-debugbar": "self.version"
},
"require-dev": {
"larastan/larastan": "^3",
"laravel/octane": "^2",
"laravel/pennant": "^1",
"laravel/pint": "^1",
"laravel/telescope": "^5.16",
"livewire/livewire": "^3.7|^4",
"mockery/mockery": "^1.3.3",
"orchestra/testbench-dusk": "^9|^10",
"php-debugbar/twig-bridge": "^2.0",
"phpstan/phpstan-phpunit": "^2",
"phpstan/phpstan-strict-rules": "^2.0",
"phpunit/phpunit": "^11",
"shipmonk/phpstan-rules": "^4.3"
},
"type": "library",
"extra": {
"laravel": {
"aliases": {
"Debugbar": "Fruitcake\\LaravelDebugbar\\Facades\\Debugbar"
},
"providers": [
"Fruitcake\\LaravelDebugbar\\ServiceProvider"
]
},
"branch-alias": {
"dev-master": "4.0-dev"
}
},
"autoload": {
"files": [
"src/helpers.php"
],
"psr-4": {
"Fruitcake\\LaravelDebugbar\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fruitcake",
"homepage": "https://fruitcake.nl"
},
{
"name": "Barry vd. Heuvel",
"email": "barryvdh@gmail.com"
}
],
"description": "PHP Debugbar integration for Laravel",
"keywords": [
"barryvdh",
"debug",
"debugbar",
"dev",
"laravel",
"profiler",
"webprofiler"
],
"support": {
"issues": "https://github.com/fruitcake/laravel-debugbar/issues",
"source": "https://github.com/fruitcake/laravel-debugbar/tree/v4.0.3"
},
"funding": [
{
"url": "https://fruitcake.nl",
"type": "custom"
},
{
"url": "https://github.com/barryvdh",
"type": "github"
}
],
"time": "2026-01-26T18:25:58+00:00"
},
{
"name": "hamcrest/hamcrest-php",
"version": "v2.1.1",
@@ -11181,47 +11198,63 @@
},
{
"name": "php-debugbar/php-debugbar",
"version": "v2.2.6",
"version": "v3.2.3",
"source": {
"type": "git",
"url": "https://github.com/php-debugbar/php-debugbar.git",
"reference": "abb9fa3c5c8dbe7efe03ddba56782917481de3e8"
"reference": "0c61c6023742c76bc3678100ed6bc52dc4c8d434"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-debugbar/php-debugbar/zipball/abb9fa3c5c8dbe7efe03ddba56782917481de3e8",
"reference": "abb9fa3c5c8dbe7efe03ddba56782917481de3e8",
"url": "https://api.github.com/repos/php-debugbar/php-debugbar/zipball/0c61c6023742c76bc3678100ed6bc52dc4c8d434",
"reference": "0c61c6023742c76bc3678100ed6bc52dc4c8d434",
"shasum": ""
},
"require": {
"php": "^8.1",
"php": "^8.2",
"psr/log": "^1|^2|^3",
"symfony/var-dumper": "^5.4|^6.4|^7.3|^8.0"
"symfony/var-dumper": "^5.4|^6|^7|^8"
},
"replace": {
"maximebf/debugbar": "self.version"
},
"require-dev": {
"dbrekelmans/bdi": "^1",
"dbrekelmans/bdi": "^1.4",
"friendsofphp/php-cs-fixer": "^3.92",
"monolog/monolog": "^3.9",
"php-debugbar/doctrine-bridge": "^3@dev",
"php-debugbar/monolog-bridge": "^1@dev",
"php-debugbar/symfony-bridge": "^1@dev",
"php-debugbar/twig-bridge": "^2@dev",
"phpstan/phpstan": "^2.1",
"phpstan/phpstan-phpunit": "^2.0",
"phpstan/phpstan-strict-rules": "^2.0",
"phpunit/phpunit": "^10",
"symfony/browser-kit": "^6.0|7.0",
"predis/predis": "^3.3",
"shipmonk/phpstan-rules": "^4.3",
"symfony/browser-kit": "^6.4|7.0",
"symfony/dom-crawler": "^6.4|^7",
"symfony/event-dispatcher": "^5.4|^6.4|^7.3|^8.0",
"symfony/http-foundation": "^5.4|^6.4|^7.3|^8.0",
"symfony/mailer": "^5.4|^6.4|^7.3|^8.0",
"symfony/panther": "^1|^2.1",
"twig/twig": "^3.11.2"
},
"suggest": {
"kriswallsmith/assetic": "The best way to manage assets",
"monolog/monolog": "Log using Monolog",
"predis/predis": "Redis storage"
"php-debugbar/doctrine-bridge": "To integrate Doctrine with php-debugbar.",
"php-debugbar/monolog-bridge": "To integrate Monolog with php-debugbar.",
"php-debugbar/symfony-bridge": "To integrate Symfony with php-debugbar.",
"php-debugbar/twig-bridge": "To integrate Twig with php-debugbar."
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.2-dev"
"dev-master": "3.0-dev"
}
},
"autoload": {
"psr-4": {
"DebugBar\\": "src/DebugBar/"
"DebugBar\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -11245,13 +11278,91 @@
"debug",
"debug bar",
"debugbar",
"dev"
"dev",
"profiler",
"toolbar"
],
"support": {
"issues": "https://github.com/php-debugbar/php-debugbar/issues",
"source": "https://github.com/php-debugbar/php-debugbar/tree/v2.2.6"
"source": "https://github.com/php-debugbar/php-debugbar/tree/v3.2.3"
},
"time": "2025-12-22T13:21:32+00:00"
"funding": [
{
"url": "https://fruitcake.nl",
"type": "custom"
},
{
"url": "https://github.com/barryvdh",
"type": "github"
}
],
"time": "2026-01-27T10:26:33+00:00"
},
{
"name": "php-debugbar/symfony-bridge",
"version": "v1.1.0",
"source": {
"type": "git",
"url": "https://github.com/php-debugbar/symfony-bridge.git",
"reference": "e37d2debe5d316408b00d0ab2688d9c2cf59b5ad"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-debugbar/symfony-bridge/zipball/e37d2debe5d316408b00d0ab2688d9c2cf59b5ad",
"reference": "e37d2debe5d316408b00d0ab2688d9c2cf59b5ad",
"shasum": ""
},
"require": {
"php": "^8.2",
"php-debugbar/php-debugbar": "^3.1",
"symfony/http-foundation": "^5.4|^6.4|^7.3|^8.0"
},
"require-dev": {
"dbrekelmans/bdi": "^1.4",
"phpunit/phpunit": "^10",
"symfony/browser-kit": "^6|^7",
"symfony/dom-crawler": "^6|^7",
"symfony/mailer": "^5.4|^6.4|^7.3|^8.0",
"symfony/panther": "^1|^2.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0-dev"
}
},
"autoload": {
"psr-4": {
"DebugBar\\Bridge\\Symfony\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Maxime Bouroumeau-Fuseau",
"email": "maxime.bouroumeau@gmail.com",
"homepage": "http://maximebf.com"
},
{
"name": "Barry vd. Heuvel",
"email": "barryvdh@gmail.com"
}
],
"description": "Symfony bridge for PHP Debugbar",
"homepage": "https://github.com/php-debugbar/php-debugbar",
"keywords": [
"debugbar",
"dev",
"symfony"
],
"support": {
"issues": "https://github.com/php-debugbar/symfony-bridge/issues",
"source": "https://github.com/php-debugbar/symfony-bridge/tree/v1.1.0"
},
"time": "2026-01-15T14:47:34+00:00"
},
{
"name": "phpstan/extension-installer",
@@ -11403,16 +11514,16 @@
},
{
"name": "phpstan/phpstan-strict-rules",
"version": "2.0.7",
"version": "2.0.8",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan-strict-rules.git",
"reference": "d6211c46213d4181054b3d77b10a5c5cb0d59538"
"reference": "1ed9e626a37f7067b594422411539aa807190573"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/d6211c46213d4181054b3d77b10a5c5cb0d59538",
"reference": "d6211c46213d4181054b3d77b10a5c5cb0d59538",
"url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/1ed9e626a37f7067b594422411539aa807190573",
"reference": "1ed9e626a37f7067b594422411539aa807190573",
"shasum": ""
},
"require": {
@@ -11445,9 +11556,9 @@
"description": "Extra strict and opinionated rules for PHPStan",
"support": {
"issues": "https://github.com/phpstan/phpstan-strict-rules/issues",
"source": "https://github.com/phpstan/phpstan-strict-rules/tree/2.0.7"
"source": "https://github.com/phpstan/phpstan-strict-rules/tree/2.0.8"
},
"time": "2025-09-26T11:19:08+00:00"
"time": "2026-01-27T08:10:25+00:00"
},
{
"name": "phpunit/php-code-coverage",
@@ -11785,16 +11896,16 @@
},
{
"name": "phpunit/phpunit",
"version": "12.5.7",
"version": "12.5.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "79dee3d2685b80518e94b9ea741b3f822b213a5e"
"reference": "37ddb96c14bfee10304825edbb7e66d341ec6889"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/79dee3d2685b80518e94b9ea741b3f822b213a5e",
"reference": "79dee3d2685b80518e94b9ea741b3f822b213a5e",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/37ddb96c14bfee10304825edbb7e66d341ec6889",
"reference": "37ddb96c14bfee10304825edbb7e66d341ec6889",
"shasum": ""
},
"require": {
@@ -11862,7 +11973,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.7"
"source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.8"
},
"funding": [
{
@@ -11886,7 +11997,7 @@
"type": "tidelift"
}
],
"time": "2026-01-24T16:12:53+00:00"
"time": "2026-01-27T06:12:29+00:00"
},
{
"name": "rector/rector",

View File

@@ -64,6 +64,7 @@ return [
'web' => [
'driver' => 'session',
'provider' => 'users',
'remember' => true,
],
'remote_user_guard' => [
'driver' => 'remote_user_guard',

View File

@@ -67,61 +67,62 @@ use FireflyIII\User;
return [
'bindables' => [
// models
'account' => Account::class,
'attachment' => Attachment::class,
'availableBudget' => AvailableBudget::class,
'bill' => Bill::class,
'budget' => Budget::class,
'budgetLimit' => BudgetLimit::class,
'category' => Category::class,
'linkType' => LinkType::class,
'transactionType' => TransactionType::class,
'journalLink' => TransactionJournalLink::class,
'currency' => TransactionCurrency::class,
'objectGroup' => ObjectGroup::class,
'piggyBank' => PiggyBank::class,
'preference' => Preference::class,
'tj' => TransactionJournal::class,
'tag' => Tag::class,
'recurrence' => Recurrence::class,
'rule' => Rule::class,
'ruleGroup' => RuleGroup::class,
'transactionGroup' => TransactionGroup::class,
'user' => User::class,
'webhook' => Webhook::class,
'webhookMessage' => WebhookMessage::class,
'webhookAttempt' => WebhookAttempt::class,
'invitedUser' => InvitedUser::class,
'account' => Account::class,
'attachment' => Attachment::class,
'availableBudget' => AvailableBudget::class,
'bill' => Bill::class,
'budget' => Budget::class,
'budgetLimit' => BudgetLimit::class,
'category' => Category::class,
'linkType' => LinkType::class,
'transactionType' => TransactionType::class,
'journalLink' => TransactionJournalLink::class,
'currency' => TransactionCurrency::class,
'objectGroup' => ObjectGroup::class,
'piggyBank' => PiggyBank::class,
'preference' => Preference::class,
'preferenceName' => Preference::class,
'tj' => TransactionJournal::class,
'tag' => Tag::class,
'recurrence' => Recurrence::class,
'rule' => Rule::class,
'ruleGroup' => RuleGroup::class,
'transactionGroup' => TransactionGroup::class,
'user' => User::class,
'webhook' => Webhook::class,
'webhookMessage' => WebhookMessage::class,
'webhookAttempt' => WebhookAttempt::class,
'invitedUser' => InvitedUser::class,
// strings
'currency_code' => CurrencyCode::class,
'currency_code' => CurrencyCode::class,
// dates
'start_date' => Date::class,
'end_date' => Date::class,
'date' => Date::class,
'start_date' => Date::class,
'end_date' => Date::class,
'date' => Date::class,
// lists
'accountList' => AccountList::class,
'doubleList' => AccountList::class,
'budgetList' => BudgetList::class,
'journalList' => JournalList::class,
'categoryList' => CategoryList::class,
'tagList' => TagList::class,
'accountList' => AccountList::class,
'doubleList' => AccountList::class,
'budgetList' => BudgetList::class,
'journalList' => JournalList::class,
'categoryList' => CategoryList::class,
'tagList' => TagList::class,
// others
'fromCurrencyCode' => CurrencyCode::class,
'toCurrencyCode' => CurrencyCode::class,
'cliToken' => CLIToken::class,
'tagOrId' => TagOrId::class,
'dynamicConfigKey' => DynamicConfigKey::class,
'eitherConfigKey' => EitherConfigKey::class,
'fromCurrencyCode' => CurrencyCode::class,
'toCurrencyCode' => CurrencyCode::class,
'cliToken' => CLIToken::class,
'tagOrId' => TagOrId::class,
'dynamicConfigKey' => DynamicConfigKey::class,
'eitherConfigKey' => EitherConfigKey::class,
// V2 API endpoints:
'userGroupAccount' => UserGroupAccount::class,
'userGroupTransaction' => UserGroupTransaction::class,
'userGroupBill' => UserGroupBill::class,
'userGroupExchangeRate' => UserGroupExchangeRate::class,
'userGroup' => UserGroup::class,
'userGroupAccount' => UserGroupAccount::class,
'userGroupTransaction' => UserGroupTransaction::class,
'userGroupBill' => UserGroupBill::class,
'userGroupExchangeRate' => UserGroupExchangeRate::class,
'userGroup' => UserGroup::class,
],
];

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' => 'develop/2026-01-25',
'build_time' => 1769359942,
'version' => 'develop/2026-01-27',
'build_time' => 1769540063,
'api_version' => '2.1.0', // field is no longer used.
'db_version' => 28, // field is no longer used.

234
package-lock.json generated
View File

@@ -2606,9 +2606,9 @@
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.56.0.tgz",
"integrity": "sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.0.tgz",
"integrity": "sha512-tPgXB6cDTndIe1ah7u6amCI1T0SsnlOuKgg10Xh3uizJk4e5M1JGaUMk7J4ciuAUcFpbOiNhm2XIjP9ON0dUqA==",
"cpu": [
"arm"
],
@@ -2620,9 +2620,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.56.0.tgz",
"integrity": "sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.0.tgz",
"integrity": "sha512-sa4LyseLLXr1onr97StkU1Nb7fWcg6niokTwEVNOO7awaKaoRObQ54+V/hrF/BP1noMEaaAW6Fg2d/CfLiq3Mg==",
"cpu": [
"arm64"
],
@@ -2634,9 +2634,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.56.0.tgz",
"integrity": "sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.0.tgz",
"integrity": "sha512-/NNIj9A7yLjKdmkx5dC2XQ9DmjIECpGpwHoGmA5E1AhU0fuICSqSWScPhN1yLCkEdkCwJIDu2xIeLPs60MNIVg==",
"cpu": [
"arm64"
],
@@ -2648,9 +2648,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.56.0.tgz",
"integrity": "sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.0.tgz",
"integrity": "sha512-xoh8abqgPrPYPr7pTYipqnUi1V3em56JzE/HgDgitTqZBZ3yKCWI+7KUkceM6tNweyUKYru1UMi7FC060RyKwA==",
"cpu": [
"x64"
],
@@ -2662,9 +2662,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.56.0.tgz",
"integrity": "sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.0.tgz",
"integrity": "sha512-PCkMh7fNahWSbA0OTUQ2OpYHpjZZr0hPr8lId8twD7a7SeWrvT3xJVyza+dQwXSSq4yEQTMoXgNOfMCsn8584g==",
"cpu": [
"arm64"
],
@@ -2676,9 +2676,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.56.0.tgz",
"integrity": "sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.0.tgz",
"integrity": "sha512-1j3stGx+qbhXql4OCDZhnK7b01s6rBKNybfsX+TNrEe9JNq4DLi1yGiR1xW+nL+FNVvI4D02PUnl6gJ/2y6WJA==",
"cpu": [
"x64"
],
@@ -2690,9 +2690,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.56.0.tgz",
"integrity": "sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.0.tgz",
"integrity": "sha512-eyrr5W08Ms9uM0mLcKfM/Uzx7hjhz2bcjv8P2uynfj0yU8GGPdz8iYrBPhiLOZqahoAMB8ZiolRZPbbU2MAi6Q==",
"cpu": [
"arm"
],
@@ -2704,9 +2704,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.56.0.tgz",
"integrity": "sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.0.tgz",
"integrity": "sha512-Xds90ITXJCNyX9pDhqf85MKWUI4lqjiPAipJ8OLp8xqI2Ehk+TCVhF9rvOoN8xTbcafow3QOThkNnrM33uCFQA==",
"cpu": [
"arm"
],
@@ -2718,9 +2718,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.56.0.tgz",
"integrity": "sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.0.tgz",
"integrity": "sha512-Xws2KA4CLvZmXjy46SQaXSejuKPhwVdaNinldoYfqruZBaJHqVo6hnRa8SDo9z7PBW5x84SH64+izmldCgbezw==",
"cpu": [
"arm64"
],
@@ -2732,9 +2732,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.56.0.tgz",
"integrity": "sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.0.tgz",
"integrity": "sha512-hrKXKbX5FdaRJj7lTMusmvKbhMJSGWJ+w++4KmjiDhpTgNlhYobMvKfDoIWecy4O60K6yA4SnztGuNTQF+Lplw==",
"cpu": [
"arm64"
],
@@ -2746,9 +2746,9 @@
]
},
"node_modules/@rollup/rollup-linux-loong64-gnu": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.56.0.tgz",
"integrity": "sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.0.tgz",
"integrity": "sha512-6A+nccfSDGKsPm00d3xKcrsBcbqzCTAukjwWK6rbuAnB2bHaL3r9720HBVZ/no7+FhZLz/U3GwwZZEh6tOSI8Q==",
"cpu": [
"loong64"
],
@@ -2760,9 +2760,9 @@
]
},
"node_modules/@rollup/rollup-linux-loong64-musl": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.56.0.tgz",
"integrity": "sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.0.tgz",
"integrity": "sha512-4P1VyYUe6XAJtQH1Hh99THxr0GKMMwIXsRNOceLrJnaHTDgk1FTcTimDgneRJPvB3LqDQxUmroBclQ1S0cIJwQ==",
"cpu": [
"loong64"
],
@@ -2774,9 +2774,9 @@
]
},
"node_modules/@rollup/rollup-linux-ppc64-gnu": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.56.0.tgz",
"integrity": "sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.0.tgz",
"integrity": "sha512-8Vv6pLuIZCMcgXre6c3nOPhE0gjz1+nZP6T+hwWjr7sVH8k0jRkH+XnfjjOTglyMBdSKBPPz54/y1gToSKwrSQ==",
"cpu": [
"ppc64"
],
@@ -2788,9 +2788,9 @@
]
},
"node_modules/@rollup/rollup-linux-ppc64-musl": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.56.0.tgz",
"integrity": "sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.0.tgz",
"integrity": "sha512-r1te1M0Sm2TBVD/RxBPC6RZVwNqUTwJTA7w+C/IW5v9Ssu6xmxWEi+iJQlpBhtUiT1raJ5b48pI8tBvEjEFnFA==",
"cpu": [
"ppc64"
],
@@ -2802,9 +2802,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.56.0.tgz",
"integrity": "sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.0.tgz",
"integrity": "sha512-say0uMU/RaPm3CDQLxUUTF2oNWL8ysvHkAjcCzV2znxBr23kFfaxocS9qJm+NdkRhF8wtdEEAJuYcLPhSPbjuQ==",
"cpu": [
"riscv64"
],
@@ -2816,9 +2816,9 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-musl": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.56.0.tgz",
"integrity": "sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.0.tgz",
"integrity": "sha512-/MU7/HizQGsnBREtRpcSbSV1zfkoxSTR7wLsRmBPQ8FwUj5sykrP1MyJTvsxP5KBq9SyE6kH8UQQQwa0ASeoQQ==",
"cpu": [
"riscv64"
],
@@ -2830,9 +2830,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.56.0.tgz",
"integrity": "sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.0.tgz",
"integrity": "sha512-Q9eh+gUGILIHEaJf66aF6a414jQbDnn29zeu0eX3dHMuysnhTvsUvZTCAyZ6tJhUjnvzBKE4FtuaYxutxRZpOg==",
"cpu": [
"s390x"
],
@@ -2844,9 +2844,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.56.0.tgz",
"integrity": "sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.0.tgz",
"integrity": "sha512-OR5p5yG5OKSxHReWmwvM0P+VTPMwoBS45PXTMYaskKQqybkS3Kmugq1W+YbNWArF8/s7jQScgzXUhArzEQ7x0A==",
"cpu": [
"x64"
],
@@ -2858,9 +2858,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.56.0.tgz",
"integrity": "sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.0.tgz",
"integrity": "sha512-XeatKzo4lHDsVEbm1XDHZlhYZZSQYym6dg2X/Ko0kSFgio+KXLsxwJQprnR48GvdIKDOpqWqssC3iBCjoMcMpw==",
"cpu": [
"x64"
],
@@ -2872,9 +2872,9 @@
]
},
"node_modules/@rollup/rollup-openbsd-x64": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.56.0.tgz",
"integrity": "sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.0.tgz",
"integrity": "sha512-Lu71y78F5qOfYmubYLHPcJm74GZLU6UJ4THkf/a1K7Tz2ycwC2VUbsqbJAXaR6Bx70SRdlVrt2+n5l7F0agTUw==",
"cpu": [
"x64"
],
@@ -2886,9 +2886,9 @@
]
},
"node_modules/@rollup/rollup-openharmony-arm64": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.56.0.tgz",
"integrity": "sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.0.tgz",
"integrity": "sha512-v5xwKDWcu7qhAEcsUubiav7r+48Uk/ENWdr82MBZZRIm7zThSxCIVDfb3ZeRRq9yqk+oIzMdDo6fCcA5DHfMyA==",
"cpu": [
"arm64"
],
@@ -2900,9 +2900,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.56.0.tgz",
"integrity": "sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.0.tgz",
"integrity": "sha512-XnaaaSMGSI6Wk8F4KK3QP7GfuuhjGchElsVerCplUuxRIzdvZ7hRBpLR0omCmw+kI2RFJB80nenhOoGXlJ5TfQ==",
"cpu": [
"arm64"
],
@@ -2914,9 +2914,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.56.0.tgz",
"integrity": "sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.0.tgz",
"integrity": "sha512-3K1lP+3BXY4t4VihLw5MEg6IZD3ojSYzqzBG571W3kNQe4G4CcFpSUQVgurYgib5d+YaCjeFow8QivWp8vuSvA==",
"cpu": [
"ia32"
],
@@ -2928,9 +2928,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-gnu": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.56.0.tgz",
"integrity": "sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.0.tgz",
"integrity": "sha512-MDk610P/vJGc5L5ImE4k5s+GZT3en0KoK1MKPXCRgzmksAMk79j4h3k1IerxTNqwDLxsGxStEZVBqG0gIqZqoA==",
"cpu": [
"x64"
],
@@ -2942,9 +2942,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.56.0.tgz",
"integrity": "sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.0.tgz",
"integrity": "sha512-Zv7v6q6aV+VslnpwzqKAmrk5JdVkLUzok2208ZXGipjb+msxBr/fJPZyeEXiFgH7k62Ak0SLIfxQRZQvTuf7rQ==",
"cpu": [
"x64"
],
@@ -3834,9 +3834,9 @@
}
},
"node_modules/alpinejs": {
"version": "3.15.4",
"resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.15.4.tgz",
"integrity": "sha512-lDpOdoVo0bhFjgl310k1qw3kbpUYwM/v0WByvAchsO93bl3o1rrgr0P/ssx3CimwEtNfXbmwKbtHbqTRCTTH9g==",
"version": "3.15.5",
"resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.15.5.tgz",
"integrity": "sha512-l1R4em/uCUr7eJimcO/b0L1+H2tVcB1Y7cQ3d+pzwVnv0zWs7gw4MhwdsLjfLccWV2iH0ahlfaJWitNRFOZdvQ==",
"license": "MIT",
"dependencies": {
"@vue/reactivity": "~3.1.1"
@@ -4019,9 +4019,9 @@
}
},
"node_modules/axios": {
"version": "1.13.3",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.13.3.tgz",
"integrity": "sha512-ERT8kdX7DZjtUm7IitEyV7InTHAF42iJuMArIiDIV5YtPanJkgw4hw5Dyg9fh0mihdWNn1GKaeIWErfe56UQ1g==",
"version": "1.13.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.13.4.tgz",
"integrity": "sha512-1wVkUaAO6WyaYtCkcYCOx12ZgpGf9Zif+qXa4n+oYzK558YryKqiL6UWwd5DqiH3VRW0GYhTZQ/vlgJrCoNQlg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5191,21 +5191,21 @@
}
},
"node_modules/css-loader": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz",
"integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==",
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.3.tgz",
"integrity": "sha512-frbERmjT0UC5lMheWpJmMilnt9GEhbZJN/heUb7/zaJYeIzj5St9HvDcfshzzOqbsS+rYpMk++2SD3vGETDSyA==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"icss-utils": "^5.1.0",
"postcss": "^8.4.33",
"postcss": "^8.4.40",
"postcss-modules-extract-imports": "^3.1.0",
"postcss-modules-local-by-default": "^4.0.5",
"postcss-modules-scope": "^3.2.0",
"postcss-modules-values": "^4.0.0",
"postcss-value-parser": "^4.2.0",
"semver": "^7.5.4"
"semver": "^7.6.3"
},
"engines": {
"node": ">= 18.12.0"
@@ -5769,9 +5769,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
"version": "1.5.278",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.278.tgz",
"integrity": "sha512-dQ0tM1svDRQOwxnXxm+twlGTjr9Upvt8UFWAgmLsxEzFQxhbti4VwxmMjsDxVC51Zo84swW7FVCXEV+VAkhuPw==",
"version": "1.5.279",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.279.tgz",
"integrity": "sha512-0bblUU5UNdOt5G7XqGiJtpZMONma6WAfq9vsFmtn9x1+joAObr6x1chfqyxFSDCAFwFhCQDrqeAr6MYdpwJ9Hg==",
"dev": true,
"license": "ISC"
},
@@ -10089,9 +10089,9 @@
}
},
"node_modules/rollup": {
"version": "4.56.0",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.56.0.tgz",
"integrity": "sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==",
"version": "4.57.0",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.0.tgz",
"integrity": "sha512-e5lPJi/aui4TO1LpAXIRLySmwXSE8k3b9zoGfd42p67wzxog4WHjiZF3M2uheQih4DGyc25QEV4yRBbpueNiUA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10105,31 +10105,31 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
"@rollup/rollup-android-arm-eabi": "4.56.0",
"@rollup/rollup-android-arm64": "4.56.0",
"@rollup/rollup-darwin-arm64": "4.56.0",
"@rollup/rollup-darwin-x64": "4.56.0",
"@rollup/rollup-freebsd-arm64": "4.56.0",
"@rollup/rollup-freebsd-x64": "4.56.0",
"@rollup/rollup-linux-arm-gnueabihf": "4.56.0",
"@rollup/rollup-linux-arm-musleabihf": "4.56.0",
"@rollup/rollup-linux-arm64-gnu": "4.56.0",
"@rollup/rollup-linux-arm64-musl": "4.56.0",
"@rollup/rollup-linux-loong64-gnu": "4.56.0",
"@rollup/rollup-linux-loong64-musl": "4.56.0",
"@rollup/rollup-linux-ppc64-gnu": "4.56.0",
"@rollup/rollup-linux-ppc64-musl": "4.56.0",
"@rollup/rollup-linux-riscv64-gnu": "4.56.0",
"@rollup/rollup-linux-riscv64-musl": "4.56.0",
"@rollup/rollup-linux-s390x-gnu": "4.56.0",
"@rollup/rollup-linux-x64-gnu": "4.56.0",
"@rollup/rollup-linux-x64-musl": "4.56.0",
"@rollup/rollup-openbsd-x64": "4.56.0",
"@rollup/rollup-openharmony-arm64": "4.56.0",
"@rollup/rollup-win32-arm64-msvc": "4.56.0",
"@rollup/rollup-win32-ia32-msvc": "4.56.0",
"@rollup/rollup-win32-x64-gnu": "4.56.0",
"@rollup/rollup-win32-x64-msvc": "4.56.0",
"@rollup/rollup-android-arm-eabi": "4.57.0",
"@rollup/rollup-android-arm64": "4.57.0",
"@rollup/rollup-darwin-arm64": "4.57.0",
"@rollup/rollup-darwin-x64": "4.57.0",
"@rollup/rollup-freebsd-arm64": "4.57.0",
"@rollup/rollup-freebsd-x64": "4.57.0",
"@rollup/rollup-linux-arm-gnueabihf": "4.57.0",
"@rollup/rollup-linux-arm-musleabihf": "4.57.0",
"@rollup/rollup-linux-arm64-gnu": "4.57.0",
"@rollup/rollup-linux-arm64-musl": "4.57.0",
"@rollup/rollup-linux-loong64-gnu": "4.57.0",
"@rollup/rollup-linux-loong64-musl": "4.57.0",
"@rollup/rollup-linux-ppc64-gnu": "4.57.0",
"@rollup/rollup-linux-ppc64-musl": "4.57.0",
"@rollup/rollup-linux-riscv64-gnu": "4.57.0",
"@rollup/rollup-linux-riscv64-musl": "4.57.0",
"@rollup/rollup-linux-s390x-gnu": "4.57.0",
"@rollup/rollup-linux-x64-gnu": "4.57.0",
"@rollup/rollup-linux-x64-musl": "4.57.0",
"@rollup/rollup-openbsd-x64": "4.57.0",
"@rollup/rollup-openharmony-arm64": "4.57.0",
"@rollup/rollup-win32-arm64-msvc": "4.57.0",
"@rollup/rollup-win32-ia32-msvc": "4.57.0",
"@rollup/rollup-win32-x64-gnu": "4.57.0",
"@rollup/rollup-win32-x64-msvc": "4.57.0",
"fsevents": "~2.3.2"
}
},

View File

@@ -79,7 +79,7 @@ export default {
if (res.data.hasOwnProperty(key) && /^0$|^[1-9]\d*$/.test(key) && key <= 4294967294) {
// add to temp list
let currentPiggy = res.data[key];
if (currentPiggy.objectGroup) {
if (null !== currentPiggy.object_group_id) {
let groupOrder = currentPiggy.object_group_order;
if (!tempList[groupOrder]) {
tempList[groupOrder] = {

View File

@@ -43,7 +43,7 @@ return [
'last_180_days' => 'Last 180 days',
'month_to_date' => 'Month to date',
'year_to_date' => 'Year to date',
'previous_year' => 'Previous year (:year)',
'previous_year' => 'Previous year (:year)',
'YTD' => 'YTD',
'welcome_back' => 'What\'s playing?',
'main_dashboard_page_title' => 'Home',
@@ -150,9 +150,9 @@ return [
'left_in_budget_limit' => 'Left to spend according to budgeting',
'current_period' => 'Current period',
'show_the_current_period_and_overview' => 'Show the current period and overview',
'pref_anonymous' => 'Hidden amounts',
'pref_anonymous_help' => 'For privacy and anonymity, you can make Firefly III hide all amounts. This will not hide amounts in edit boxes, but the rest are hidden. You can also toggle this with the little "eye"-icon in the top bar.',
'pref_anonymous_label' => 'Hide amounts',
'pref_anonymous' => 'Hidden amounts',
'pref_anonymous_help' => 'For privacy and anonymity, you can make Firefly III hide all amounts. This will not hide amounts in edit boxes, but the rest are hidden. You can also toggle this with the little "eye"-icon in the top bar.',
'pref_anonymous_label' => 'Hide amounts',
'pref_languages_locale' => 'For a language other than English to work properly, your operating system must be equipped with the correct locale-information. If these are not present, currency data, dates and amounts may be formatted wrong.',
'budget_in_period' => 'All transactions for budget ":name" between :start and :end in :currency',
'chart_budget_in_period' => 'Chart for all transactions for budget ":name" between :start and :end in :currency',
@@ -247,7 +247,7 @@ return [
'webhooks_breadcrumb' => 'Webhooks',
'webhooks_menu_disabled' => 'disabled',
'no_webhook_messages' => 'There are no webhook messages',
'webhook_trigger_ANY' => 'After any event',
'webhook_trigger_ANY' => 'After any event',
'webhook_trigger_STORE_TRANSACTION' => 'After transaction creation',
'webhook_trigger_UPDATE_TRANSACTION' => 'After transaction update',
'webhook_trigger_DESTROY_TRANSACTION' => 'After transaction delete',
@@ -829,8 +829,8 @@ return [
'apply_rule_group_selection' => 'Apply rule group ":title" to a selection of your transactions',
'apply_rule_group_selection_intro' => 'Rule groups like ":title" are normally only applied to new or updated transactions, but you can tell Firefly III to run all the rules in this group on a selection of your existing transactions. This can be useful when you have updated a group of rules and you need the changes to be applied to all of your other transactions.',
'applied_rule_group_selection' => 'Rule group ":title" has been applied to your selection.',
'rule_run_after_creation' => 'If you check this box, you get the opportunity to run the rule after it has been created.',
'rule_run_after_edit' => 'If you check this box, you get the opportunity to run the rule after it has been updated.',
'rule_run_after_creation' => 'If you check this box, you get the opportunity to run the rule after it has been created.',
'rule_run_after_edit' => 'If you check this box, you get the opportunity to run the rule after it has been updated.',
// actions and triggers
'rule_trigger_store_journal' => 'When a transaction is created',
@@ -917,7 +917,7 @@ return [
'rule_trigger_tag_is' => 'Any tag is ":trigger_value"',
'rule_trigger_tag_contains_choice' => 'Any tag contains..',
'rule_trigger_tag_contains' => 'Any tag contains ":trigger_value"',
'rule_trigger_not_tag_contains' => 'No tag contains ":trigger_value"',
'rule_trigger_not_tag_contains' => 'No tag contains ":trigger_value"',
'rule_trigger_tag_ends_choice' => 'Any tag ends with..',
'rule_trigger_tag_ends' => 'Any tag ends with ":trigger_value"',
'rule_trigger_tag_starts_choice' => 'Any tag starts with..',
@@ -2480,7 +2480,7 @@ return [
'balanceFor' => 'Balance for :name',
'no_tags' => '(no tags)',
'nothing_found' => '(nothing found)',
'no_date' => '(no date)',
'no_date' => '(no date)',
// page settings and wizard dialogs
@@ -2545,51 +2545,52 @@ return [
'updated_tag' => 'Updated tag ":tag"',
'created_tag' => 'Tag ":tag" has been created!',
'transaction_journal_information' => 'Transaction information',
'transaction_journal_amount' => 'Amount information',
'transaction_journal_meta' => 'Meta information',
'transaction_journal_more' => 'More information',
'basic_journal_information' => 'Basic transaction information',
'transaction_journal_extra' => 'Extra information',
'att_part_of_journal' => 'Stored under ":journal"',
'total_amount' => 'Total amount',
'number_of_decimals' => 'Number of decimals',
'transaction_journal_information' => 'Transaction information',
'transaction_journal_amount' => 'Amount information',
'transaction_journal_meta' => 'Meta information',
'transaction_journal_more' => 'More information',
'basic_journal_information' => 'Basic transaction information',
'transaction_journal_extra' => 'Extra information',
'att_part_of_journal' => 'Stored under ":journal"',
'total_amount' => 'Total amount',
'number_of_decimals' => 'Number of decimals',
// administration
'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.',
'invite_is_deleted' => 'The invite to ":address" has been deleted.',
'invite_new_user_title' => 'Invite new user',
'invite_new_user_text' => 'As an administrator, you can invite users to register to your Firefly III installation. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.',
'invited_user_mail' => 'Email address',
'invite_user' => 'Invite user',
'user_is_invited' => 'Email address ":address" was invited to Firefly III',
'administration' => 'Administration',
'system_settings' => 'System settings',
'code_already_used' => 'Invite code has been used',
'user_administration' => 'User administration',
'list_all_users' => 'All users',
'all_users' => 'All users',
'instance_configuration' => 'Configuration',
'firefly_instance_configuration' => 'Firefly III configuration',
'config_security' => 'Security configuration',
'config_features' => 'Enabled features',
'config_tech' => 'Tech related features',
'config_external_connections' => 'Privacy-sensitive settings (connects to the internet)',
'setting_enable_exchange_rates' => 'Enable exchange rates',
'setting_enable_exchange_rates_explain' => 'Firefly III has the capability of calculating exchange rates for you.',
'setting_use_running_balance' => 'Use "running balance"-column and data',
'setting_use_running_balance_explain' => 'Firefly III can calculate the current running balance for you, and display this in various places. It is still slightly experimental, so disabled by default. You may need to restart your container or fire the initial command manually (see the docs).',
'setting_enable_external_map' => 'Use external map service',
'setting_enable_external_map_explain' => 'Firefly III uses an external service to display locations. Is this OK?',
'setting_enable_external_rates' => 'Download exchange rates from the web',
'setting_enable_external_rates_explain' => 'Firefly III can download exchange rates for the built-in currencies. This needs the cron job to work.',
'setting_allow_webhooks' => 'Allow webhooks',
'setting_allow_webhooks_explain' => 'Allow Firefly III to fire webhooks?',
'setting_valid_url_protocols' => 'Allowed URL protocols',
'setting_valid_url_protocols_explain' => 'Firefly III only allows urls to have standard protocols like https and ftp etc. If you\'re a techie you may want to allow others as well.',
'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.',
'invite_is_deleted' => 'The invite to ":address" has been deleted.',
'invite_new_user_title' => 'Invite new user',
'invite_new_user_text' => 'As an administrator, you can invite users to register to your Firefly III installation. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.',
'invited_user_mail' => 'Email address',
'invite_user' => 'Invite user',
'user_is_invited' => 'Email address ":address" was invited to Firefly III',
'administration' => 'Administration',
'system_settings' => 'System settings',
'code_already_used' => 'Invite code has been used',
'user_administration' => 'User administration',
'list_all_users' => 'All users',
'all_users' => 'All users',
'instance_configuration' => 'Configuration',
'firefly_instance_configuration' => 'Firefly III configuration',
'config_security' => 'Security configuration',
'config_features' => 'Enabled features',
'config_tech' => 'Tech related features',
'config_external_connections' => 'Privacy-sensitive settings (connects to the internet)',
'setting_enable_exchange_rates' => 'Enable exchange rates',
'setting_enable_exchange_rates_explain' => 'Firefly III has the capability of calculating exchange rates for you.',
'setting_use_running_balance' => 'Use "running balance"-column and data',
'setting_use_running_balance_explain' => 'Firefly III can calculate the current running balance for you, and display this in various places. It is still slightly experimental, so disabled by default. You may need to restart your container or fire the initial command manually (see the docs).',
'setting_enable_external_map' => 'Use external map service',
'setting_enable_external_map_explain' => 'Firefly III uses an external service to display locations. Is this OK?',
'setting_enable_external_rates' => 'Download exchange rates from the web',
'setting_enable_external_rates_explain' => 'Firefly III can download exchange rates for the built-in currencies. This needs the cron job to work.',
'setting_allow_webhooks' => 'Allow webhooks',
'setting_allow_webhooks_explain' => 'Allow Firefly III to fire webhooks?',
'setting_valid_url_protocols' => 'Allowed URL protocols',
'setting_valid_url_protocols_explain' => 'Firefly III only allows urls to have standard protocols like https and ftp etc. If you\'re a techie you may want to allow others as well.',
'setting_enable_batch_processing' => 'Enable batch processing',
'setting_enable_batch_processing_explain' => 'Batch processing is a relatively new feature of Firefly III that allows a set of new transactions (aka a batch) be processed when the final transaction is submitted, and not during the submission of each individual entry. This makes data import faster, but also skips rules until the end. It is an experimental feature so disabled by default.',
'setting_single_user_mode' => 'Single user mode',
'setting_single_user_mode_explain' => 'By default, Firefly III only accepts one (1) registration: you. This is a security measure, preventing others from using your instance unless you allow them to. Future registrations are blocked. When you uncheck this box, others can use your instance as well, assuming they can reach it (when it is connected to the internet).',
@@ -2913,7 +2914,7 @@ return [
'placeholder' => '[Placeholder]',
// audit log entries
'incomplete_ale' => 'Not all events are recorded as audit log entries.',
'incomplete_ale' => 'Not all events are recorded as audit log entries.',
'audit_log_entries' => 'Audit log entries',
'ale_action_log_add' => 'Added :amount to piggy bank ":name"',
'ale_action_log_remove' => 'Removed :amount from piggy bank ":name"',
@@ -2938,7 +2939,7 @@ return [
'ale_action_remove_from_piggy' => 'Piggy bank',
'ale_action_add_tag' => 'Added tag',
'ale_action_update_amount' => 'Updated amount',
'ale_action_update_foreign_amount' => 'Updated foreign amount',
'ale_action_update_foreign_amount' => 'Updated foreign amount',
// dashboard
'enable_auto_convert' => 'Enable currency conversion',

View File

@@ -21,265 +21,263 @@
*/
declare(strict_types=1);
return [
// new user:
'administration_currency' => 'Primary currency',
'bank_name' => 'Bank name',
'bank_balance' => 'Balance',
'current_balance' => 'Current balance',
'savings_balance' => 'Savings balance',
'credit_card_limit' => 'Credit card limit',
'automatch' => 'Match automatically',
'skip' => 'Skip',
'enabled' => 'Enabled',
'name' => 'Name',
'active' => 'Active',
'amount_min' => 'Minimum amount',
'amount_max' => 'Maximum amount',
'match' => 'Matches on',
'strict' => 'Strict mode',
'repeat_freq' => 'Repeats',
'object_group' => 'Group',
'location' => 'Location',
'update_channel' => 'Update channel',
'currency_id' => 'Currency',
'transaction_currency_id' => 'Currency',
'auto_budget_currency_id' => 'Currency',
'external_ip' => 'Your server\'s external IP',
'attachments' => 'Attachments',
'BIC' => 'BIC',
'verify_password' => 'Verify password security',
'source_account' => 'Source account',
'destination_account' => 'Destination account',
'asset_destination_account' => 'Destination account',
'include_net_worth' => 'Include in net worth',
'asset_source_account' => 'Source account',
'journal_description' => 'Description',
'note' => 'Notes',
'currency' => 'Currency',
'account_id' => 'Asset account',
'budget_id' => 'Budget',
'bill_id' => 'Subscription',
'opening_balance' => 'Opening balance',
'tag_mode' => 'Tag mode',
'virtual_balance' => 'Virtual balance',
'run_after_form' => 'Run this rule',
'valid_url_protocols' => 'Valid URL protocols',
'allow_webhooks' => 'Allow webhooks',
'enable_external_rates' => 'Enable external exchange rates',
'enable_external_map' => 'Enable external map',
'use_running_balance' => 'Calculate running balances',
'enable_exchange_rates' => 'Enable exchange rates',
'targetamount' => 'Target amount',
'target_amount' => 'Target amount',
'account_role' => 'Account role',
'opening_balance_date' => 'Opening balance date',
'cc_type' => 'Credit card payment plan',
'cc_monthly_payment_date' => 'Credit card monthly payment date',
'piggy_bank_id' => 'Piggy bank',
'returnHere' => 'Return here',
'returnHereExplanation' => 'After storing, return here to create another one.',
'returnHereUpdateExplanation' => 'After updating, return here.',
'description' => 'Description',
'expense_account' => 'Expense account',
'revenue_account' => 'Revenue account',
'decimal_places' => 'Decimal places',
'destination_amount' => 'Amount (destination)',
'new_email_address' => 'New email address',
'verification' => 'Verification',
'api_key' => 'API key',
'remember_me' => 'Remember me',
'liability_type_id' => 'Liability type',
'liability_type' => 'Liability type',
'interest' => 'Interest',
'interest_period' => 'Interest period',
'extension_date' => 'Extension date',
'type' => 'Type',
'convert_Withdrawal' => 'Convert withdrawal',
'convert_Deposit' => 'Convert deposit',
'convert_Transfer' => 'Convert transfer',
'amount' => 'Amount',
'foreign_amount' => 'Foreign amount',
'date' => 'Date',
'interest_date' => 'Interest date',
'book_date' => 'Book date',
'process_date' => 'Processing date',
'category' => 'Category',
'tags' => 'Tags',
'deletePermanently' => 'Delete permanently',
'cancel' => 'Cancel',
'targetdate' => 'Target date',
'target_date' => 'Target date',
'startdate' => 'Start date',
'start_date' => 'Start date',
'tag' => 'Tag',
'administration_currency' => 'Primary currency',
'bank_name' => 'Bank name',
'bank_balance' => 'Balance',
'current_balance' => 'Current balance',
'savings_balance' => 'Savings balance',
'credit_card_limit' => 'Credit card limit',
'automatch' => 'Match automatically',
'skip' => 'Skip',
'enabled' => 'Enabled',
'name' => 'Name',
'active' => 'Active',
'amount_min' => 'Minimum amount',
'amount_max' => 'Maximum amount',
'match' => 'Matches on',
'strict' => 'Strict mode',
'repeat_freq' => 'Repeats',
'object_group' => 'Group',
'location' => 'Location',
'update_channel' => 'Update channel',
'currency_id' => 'Currency',
'transaction_currency_id' => 'Currency',
'auto_budget_currency_id' => 'Currency',
'external_ip' => 'Your server\'s external IP',
'attachments' => 'Attachments',
'BIC' => 'BIC',
'verify_password' => 'Verify password security',
'source_account' => 'Source account',
'destination_account' => 'Destination account',
'asset_destination_account' => 'Destination account',
'include_net_worth' => 'Include in net worth',
'asset_source_account' => 'Source account',
'journal_description' => 'Description',
'note' => 'Notes',
'currency' => 'Currency',
'account_id' => 'Asset account',
'budget_id' => 'Budget',
'bill_id' => 'Subscription',
'opening_balance' => 'Opening balance',
'tag_mode' => 'Tag mode',
'virtual_balance' => 'Virtual balance',
'run_after_form' => 'Run this rule',
'valid_url_protocols' => 'Valid URL protocols',
'allow_webhooks' => 'Allow webhooks',
'enable_external_rates' => 'Enable external exchange rates',
'enable_external_map' => 'Enable external map',
'use_running_balance' => 'Calculate running balances',
'enable_exchange_rates' => 'Enable exchange rates',
'targetamount' => 'Target amount',
'target_amount' => 'Target amount',
'account_role' => 'Account role',
'opening_balance_date' => 'Opening balance date',
'cc_type' => 'Credit card payment plan',
'cc_monthly_payment_date' => 'Credit card monthly payment date',
'piggy_bank_id' => 'Piggy bank',
'enable_batch_processing' => 'Enable batch processing',
'returnHere' => 'Return here',
'returnHereExplanation' => 'After storing, return here to create another one.',
'returnHereUpdateExplanation' => 'After updating, return here.',
'description' => 'Description',
'expense_account' => 'Expense account',
'revenue_account' => 'Revenue account',
'decimal_places' => 'Decimal places',
'destination_amount' => 'Amount (destination)',
'new_email_address' => 'New email address',
'verification' => 'Verification',
'api_key' => 'API key',
'remember_me' => 'Remember me',
'liability_type_id' => 'Liability type',
'liability_type' => 'Liability type',
'interest' => 'Interest',
'interest_period' => 'Interest period',
'extension_date' => 'Extension date',
'type' => 'Type',
'convert_Withdrawal' => 'Convert withdrawal',
'convert_Deposit' => 'Convert deposit',
'convert_Transfer' => 'Convert transfer',
'amount' => 'Amount',
'foreign_amount' => 'Foreign amount',
'date' => 'Date',
'interest_date' => 'Interest date',
'book_date' => 'Book date',
'process_date' => 'Processing date',
'category' => 'Category',
'tags' => 'Tags',
'deletePermanently' => 'Delete permanently',
'cancel' => 'Cancel',
'targetdate' => 'Target date',
'target_date' => 'Target date',
'startdate' => 'Start date',
'start_date' => 'Start date',
'tag' => 'Tag',
// exchange rates
'from_currency_to_currency' => '{from} &rarr; {to}',
'to_currency_from_currency' => '{to} &rarr; {from}',
'rate' => 'Rate',
'from_currency_to_currency' => '{from} &rarr; {to}',
'to_currency_from_currency' => '{to} &rarr; {from}',
'rate' => 'Rate',
'under' => 'Under',
'symbol' => 'Symbol',
'code' => 'Code',
'iban' => 'IBAN',
'account_number' => 'Account number',
'creditCardNumber' => 'Credit card number',
'has_headers' => 'Headers',
'date_format' => 'Date format',
'attachments[]' => 'Attachments',
'title' => 'Title',
'notes' => 'Notes',
'filename' => 'File name',
'mime' => 'Mime type',
'size' => 'Size',
'trigger' => 'Trigger',
'stop_processing' => 'Stop processing',
'end_date' => 'End date',
'enddate' => 'End date',
'move_rules_before_delete' => 'Rule group',
'start' => 'Start of range',
'end' => 'End of range',
'delete_account' => 'Delete account ":name"',
'delete_webhook' => 'Delete webhook ":title"',
'delete_bill' => 'Delete subscription ":name"',
'delete_budget' => 'Delete budget ":name"',
'delete_category' => 'Delete category ":name"',
'delete_currency' => 'Delete currency ":name"',
'delete_journal' => 'Delete transaction with description ":description"',
'delete_attachment' => 'Delete attachment ":name"',
'delete_rule' => 'Delete rule ":title"',
'delete_rule_group' => 'Delete rule group ":title"',
'delete_link_type' => 'Delete link type ":name"',
'delete_user' => 'Delete user ":email"',
'delete_recurring' => 'Delete recurring transaction ":title"',
'user_areYouSure' => 'If you delete user ":email", everything will be gone. There is no undo, undelete or anything. If you delete yourself, you will lose access to this instance of Firefly III.',
'attachment_areYouSure' => 'Are you sure you want to delete the attachment named ":name"?',
'account_areYouSure' => 'Are you sure you want to delete the account named ":name"?',
'account_areYouSure_js' => 'Are you sure you want to delete the account named "{name}"?',
'bill_areYouSure' => 'Are you sure you want to delete the subscription named ":name"?',
'rule_areYouSure' => 'Are you sure you want to delete the rule titled ":title"?',
'object_group_areYouSure' => 'Are you sure you want to delete the group titled ":title"?',
'ruleGroup_areYouSure' => 'Are you sure you want to delete the rule group titled ":title"?',
'budget_areYouSure' => 'Are you sure you want to delete the budget named ":name"?',
'webhook_areYouSure' => 'Are you sure you want to delete the webhook named ":title"?',
'category_areYouSure' => 'Are you sure you want to delete the category named ":name"?',
'recurring_areYouSure' => 'Are you sure you want to delete the recurring transaction titled ":title"?',
'currency_areYouSure' => 'Are you sure you want to delete the currency named ":name"?',
'piggyBank_areYouSure' => 'Are you sure you want to delete the piggy bank named ":name"?',
'journal_areYouSure' => 'Are you sure you want to delete the transaction described ":description"?',
'mass_journal_are_you_sure' => 'Are you sure you want to delete these transactions?',
'under' => 'Under',
'symbol' => 'Symbol',
'code' => 'Code',
'iban' => 'IBAN',
'account_number' => 'Account number',
'creditCardNumber' => 'Credit card number',
'has_headers' => 'Headers',
'date_format' => 'Date format',
'attachments[]' => 'Attachments',
'title' => 'Title',
'notes' => 'Notes',
'filename' => 'File name',
'mime' => 'Mime type',
'size' => 'Size',
'trigger' => 'Trigger',
'stop_processing' => 'Stop processing',
'end_date' => 'End date',
'enddate' => 'End date',
'move_rules_before_delete' => 'Rule group',
'start' => 'Start of range',
'end' => 'End of range',
'delete_account' => 'Delete account ":name"',
'delete_webhook' => 'Delete webhook ":title"',
'delete_bill' => 'Delete subscription ":name"',
'delete_budget' => 'Delete budget ":name"',
'delete_category' => 'Delete category ":name"',
'delete_currency' => 'Delete currency ":name"',
'delete_journal' => 'Delete transaction with description ":description"',
'delete_attachment' => 'Delete attachment ":name"',
'delete_rule' => 'Delete rule ":title"',
'delete_rule_group' => 'Delete rule group ":title"',
'delete_link_type' => 'Delete link type ":name"',
'delete_user' => 'Delete user ":email"',
'delete_recurring' => 'Delete recurring transaction ":title"',
'user_areYouSure' => 'If you delete user ":email", everything will be gone. There is no undo, undelete or anything. If you delete yourself, you will lose access to this instance of Firefly III.',
'attachment_areYouSure' => 'Are you sure you want to delete the attachment named ":name"?',
'account_areYouSure' => 'Are you sure you want to delete the account named ":name"?',
'account_areYouSure_js' => 'Are you sure you want to delete the account named "{name}"?',
'bill_areYouSure' => 'Are you sure you want to delete the subscription named ":name"?',
'rule_areYouSure' => 'Are you sure you want to delete the rule titled ":title"?',
'object_group_areYouSure' => 'Are you sure you want to delete the group titled ":title"?',
'ruleGroup_areYouSure' => 'Are you sure you want to delete the rule group titled ":title"?',
'budget_areYouSure' => 'Are you sure you want to delete the budget named ":name"?',
'webhook_areYouSure' => 'Are you sure you want to delete the webhook named ":title"?',
'category_areYouSure' => 'Are you sure you want to delete the category named ":name"?',
'recurring_areYouSure' => 'Are you sure you want to delete the recurring transaction titled ":title"?',
'currency_areYouSure' => 'Are you sure you want to delete the currency named ":name"?',
'piggyBank_areYouSure' => 'Are you sure you want to delete the piggy bank named ":name"?',
'journal_areYouSure' => 'Are you sure you want to delete the transaction described ":description"?',
'mass_journal_are_you_sure' => 'Are you sure you want to delete these transactions?',
'tag_areYouSure' => 'Are you sure you want to delete the tag ":tag"?',
'journal_link_areYouSure' => 'Are you sure you want to delete the link between <a href=":source_link">:source</a> and <a href=":destination_link">:destination</a>?',
'linkType_areYouSure' => 'Are you sure you want to delete the link type ":name" (":inward" / ":outward")?',
'permDeleteWarning' => 'Deleting stuff from Firefly III is permanent and cannot be undone.',
'mass_make_selection' => 'You can still prevent items from being deleted by removing the checkbox.',
'delete_all_permanently' => 'Delete selected permanently',
'update_all_journals' => 'Update these transactions',
'also_delete_transactions' => 'The only transaction connected to this account will be deleted as well.|All :count transactions connected to this account will be deleted as well.',
'also_delete_transactions_js' => 'No transactions|The only transaction connected to this account will be deleted as well.|All {count} transactions connected to this account will be deleted as well.',
'also_delete_connections' => 'The only transaction linked with this link type will lose this connection.|All :count transactions linked with this link type will lose their connection.',
'also_delete_rules' => 'The only rule connected to this rule group will be deleted as well.|All :count rules connected to this rule group will be deleted as well.',
'also_delete_piggyBanks' => 'The only piggy bank connected to this account will be deleted as well.|All :count piggy bank connected to this account will be deleted as well.',
'also_delete_piggyBanks_js' => 'No piggy banks|The only piggy bank connected to this account will be deleted as well.|All {count} piggy banks connected to this account will be deleted as well.',
'not_delete_piggy_banks' => 'The piggy bank connected to this group will not be deleted.|The :count piggy banks connected to this group will not be deleted.',
'bill_keep_transactions' => 'The only transaction connected to this subscription will not be deleted.|All :count transactions connected to this subscription will be spared deletion.',
'budget_keep_transactions' => 'The only transaction connected to this budget will not be deleted.|All :count transactions connected to this budget will be spared deletion.',
'category_keep_transactions' => 'The only transaction connected to this category will not be deleted.|All :count transactions connected to this category will be spared deletion.',
'recurring_keep_transactions' => 'The only transaction created by this recurring transaction will not be deleted.|All :count transactions created by this recurring transaction will be spared deletion.',
'tag_keep_transactions' => 'The only transaction connected to this tag will not be deleted.|All :count transactions connected to this tag will be spared deletion.',
'check_for_updates' => 'Check for updates',
'liability_direction' => 'Liability in/out',
'delete_object_group' => 'Delete group ":title"',
'email' => 'Email address',
'password' => 'Password',
'password_confirmation' => 'Password (again)',
'blocked' => 'Is blocked?',
'blocked_code' => 'Reason for block',
'login_name' => 'Login',
'is_owner' => 'Is admin?',
'url' => 'URL',
'bill_end_date' => 'End date',
'tag_areYouSure' => 'Are you sure you want to delete the tag ":tag"?',
'journal_link_areYouSure' => 'Are you sure you want to delete the link between <a href=":source_link">:source</a> and <a href=":destination_link">:destination</a>?',
'linkType_areYouSure' => 'Are you sure you want to delete the link type ":name" (":inward" / ":outward")?',
'permDeleteWarning' => 'Deleting stuff from Firefly III is permanent and cannot be undone.',
'mass_make_selection' => 'You can still prevent items from being deleted by removing the checkbox.',
'delete_all_permanently' => 'Delete selected permanently',
'update_all_journals' => 'Update these transactions',
'also_delete_transactions' => 'The only transaction connected to this account will be deleted as well.|All :count transactions connected to this account will be deleted as well.',
'also_delete_transactions_js' => 'No transactions|The only transaction connected to this account will be deleted as well.|All {count} transactions connected to this account will be deleted as well.',
'also_delete_connections' => 'The only transaction linked with this link type will lose this connection.|All :count transactions linked with this link type will lose their connection.',
'also_delete_rules' => 'The only rule connected to this rule group will be deleted as well.|All :count rules connected to this rule group will be deleted as well.',
'also_delete_piggyBanks' => 'The only piggy bank connected to this account will be deleted as well.|All :count piggy bank connected to this account will be deleted as well.',
'also_delete_piggyBanks_js' => 'No piggy banks|The only piggy bank connected to this account will be deleted as well.|All {count} piggy banks connected to this account will be deleted as well.',
'not_delete_piggy_banks' => 'The piggy bank connected to this group will not be deleted.|The :count piggy banks connected to this group will not be deleted.',
'bill_keep_transactions' => 'The only transaction connected to this subscription will not be deleted.|All :count transactions connected to this subscription will be spared deletion.',
'budget_keep_transactions' => 'The only transaction connected to this budget will not be deleted.|All :count transactions connected to this budget will be spared deletion.',
'category_keep_transactions' => 'The only transaction connected to this category will not be deleted.|All :count transactions connected to this category will be spared deletion.',
'recurring_keep_transactions' => 'The only transaction created by this recurring transaction will not be deleted.|All :count transactions created by this recurring transaction will be spared deletion.',
'tag_keep_transactions' => 'The only transaction connected to this tag will not be deleted.|All :count transactions connected to this tag will be spared deletion.',
'check_for_updates' => 'Check for updates',
'liability_direction' => 'Liability in/out',
'delete_object_group' => 'Delete group ":title"',
'email' => 'Email address',
'password' => 'Password',
'password_confirmation' => 'Password (again)',
'blocked' => 'Is blocked?',
'blocked_code' => 'Reason for block',
'login_name' => 'Login',
'is_owner' => 'Is admin?',
'url' => 'URL',
'bill_end_date' => 'End date',
// import
'apply_rules' => 'Apply rules',
'artist' => 'Artist',
'album' => 'Album',
'song' => 'Song',
'apply_rules' => 'Apply rules',
'artist' => 'Artist',
'album' => 'Album',
'song' => 'Song',
// admin
'domain' => 'Domain',
'single_user_mode' => 'Disable user registration',
'is_demo_site' => 'Is demo site',
'domain' => 'Domain',
'single_user_mode' => 'Disable user registration',
'is_demo_site' => 'Is demo site',
// import
'configuration_file' => 'Configuration file',
'csv_comma' => 'A comma (,)',
'csv_semicolon' => 'A semicolon (;)',
'csv_tab' => 'A tab (invisible)',
'csv_delimiter' => 'CSV field delimiter',
'client_id' => 'Client ID',
'app_id' => 'App ID',
'secret' => 'Secret',
'public_key' => 'Public key',
'country_code' => 'Country code',
'provider_code' => 'Bank or data-provider',
'fints_url' => 'FinTS API URL',
'fints_port' => 'Port',
'fints_bank_code' => 'Bank code',
'fints_username' => 'Username',
'fints_password' => 'PIN / Password',
'fints_account' => 'FinTS account',
'local_account' => 'Firefly III account',
'configuration_file' => 'Configuration file',
'csv_comma' => 'A comma (,)',
'csv_semicolon' => 'A semicolon (;)',
'csv_tab' => 'A tab (invisible)',
'csv_delimiter' => 'CSV field delimiter',
'client_id' => 'Client ID',
'app_id' => 'App ID',
'secret' => 'Secret',
'public_key' => 'Public key',
'country_code' => 'Country code',
'provider_code' => 'Bank or data-provider',
'fints_url' => 'FinTS API URL',
'fints_port' => 'Port',
'fints_bank_code' => 'Bank code',
'fints_username' => 'Username',
'fints_password' => 'PIN / Password',
'fints_account' => 'FinTS account',
'local_account' => 'Firefly III account',
'from_date' => 'Date from',
'to_date' => 'Date to',
'due_date' => 'Due date',
'payment_date' => 'Payment date',
'invoice_date' => 'Invoice date',
'internal_reference' => 'Internal reference',
'inward' => 'Inward description',
'outward' => 'Outward description',
'rule_group_id' => 'Rule group',
'transaction_description' => 'Transaction description',
'first_date' => 'First date',
'transaction_type' => 'Transaction type',
'repeat_until' => 'Repeat until',
'recurring_description' => 'Recurring transaction description',
'repetition_type' => 'Type of repetition',
'foreign_currency_id' => 'Foreign currency',
'repetition_end' => 'Repetition ends',
'repetitions' => 'Repetitions',
'calendar' => 'Calendar',
'weekend' => 'Weekend',
'client_secret' => 'Client secret',
'withdrawal_destination_id' => 'Destination account',
'deposit_source_id' => 'Source account',
'expected_on' => 'Expected on',
'paid' => 'Paid',
'auto_budget_type' => 'Auto-budget',
'auto_budget_amount' => 'Auto-budget amount',
'auto_budget_period' => 'Auto-budget period',
'collected' => 'Collected',
'submitted' => 'Submitted',
'key' => 'Key',
'value' => 'Content of record',
'webhook_delivery' => 'Delivery',
'webhook_response' => 'Response',
'webhook_trigger' => 'Trigger',
'pushover_app_token' => 'Pushover app token',
'pushover_user_token' => 'Pushover user token',
'ntfy_server' => 'Ntfy server',
'ntfy_topic' => 'Ntfy topic',
'ntfy_auth' => 'Ntfy authentication enabled',
'ntfy_user' => 'Ntfy username',
'ntfy_pass' => 'Ntfy password',
'from_date' => 'Date from',
'to_date' => 'Date to',
'due_date' => 'Due date',
'payment_date' => 'Payment date',
'invoice_date' => 'Invoice date',
'internal_reference' => 'Internal reference',
'inward' => 'Inward description',
'outward' => 'Outward description',
'rule_group_id' => 'Rule group',
'transaction_description' => 'Transaction description',
'first_date' => 'First date',
'transaction_type' => 'Transaction type',
'repeat_until' => 'Repeat until',
'recurring_description' => 'Recurring transaction description',
'repetition_type' => 'Type of repetition',
'foreign_currency_id' => 'Foreign currency',
'repetition_end' => 'Repetition ends',
'repetitions' => 'Repetitions',
'calendar' => 'Calendar',
'weekend' => 'Weekend',
'client_secret' => 'Client secret',
'withdrawal_destination_id' => 'Destination account',
'deposit_source_id' => 'Source account',
'expected_on' => 'Expected on',
'paid' => 'Paid',
'auto_budget_type' => 'Auto-budget',
'auto_budget_amount' => 'Auto-budget amount',
'auto_budget_period' => 'Auto-budget period',
'collected' => 'Collected',
'submitted' => 'Submitted',
'key' => 'Key',
'value' => 'Content of record',
'webhook_delivery' => 'Delivery',
'webhook_response' => 'Response',
'webhook_trigger' => 'Trigger',
'pushover_app_token' => 'Pushover app token',
'pushover_user_token' => 'Pushover user token',
'ntfy_server' => 'Ntfy server',
'ntfy_topic' => 'Ntfy topic',
'ntfy_auth' => 'Ntfy authentication enabled',
'ntfy_user' => 'Ntfy username',
'ntfy_pass' => 'Ntfy password',
];

View File

@@ -11,8 +11,6 @@
<meta name="csrf-token" content="{{ csrf_token() }}">
<meta name="robots" content="noindex, nofollow, noarchive, noodp, NoImageIndex, noydir">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="color-scheme" content="light dark">
<title>
{% if pageTitle %}
{{ pageTitle }} »
@@ -39,6 +37,7 @@
<link href="v1/lib/adminlte/css/AdminLTE.min.css?v={{ FF_BUILD_TIME }}" rel="stylesheet" type="text/css"
nonce="{{ JS_NONCE }}">
{% if 'browser' == darkMode %}
<meta name="color-scheme" content="light dark">
<script nonce="{{ JS_NONCE }}">
// If `prefers-color-scheme` is not supported, fall back to light mode.
// In this case, light.css will be downloaded with `highest` priority.
@@ -58,12 +57,14 @@
nonce="{{ JS_NONCE }}" media="(prefers-color-scheme: light)">
{% endif %}
{% if 'dark' == darkMode %}
<meta name="color-scheme" content="dark">
<link href="v1/css/daterangepicker-dark.css?v={{ FF_BUILD_TIME }}" rel="stylesheet" type="text/css"
nonce="{{ JS_NONCE }}">
<link href="v1/lib/adminlte/css/skins/skin-dark.min.css?v={{ FF_BUILD_TIME }}" rel="stylesheet" type="text/css"
nonce="{{ JS_NONCE }}">
{% endif %}
{% if 'light' == darkMode %}
<meta name="color-scheme" content="light">
<link href="v1/css/daterangepicker-light.css?v={{ FF_BUILD_TIME }}" rel="stylesheet" type="text/css"
nonce="{{ JS_NONCE }}">
<link href="v1/lib/adminlte/css/skins/skin-light.min.css?v={{ FF_BUILD_TIME }}" rel="stylesheet" type="text/css"

View File

@@ -9,7 +9,6 @@
<meta name="csrf-token" content="{{ csrf_token() }}">
<meta content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' name='viewport'>
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="color-scheme" content="light dark">
{# CSS things #}
@@ -20,6 +19,7 @@
{# the theme #}
<link href="v1/lib/adminlte/css/AdminLTE.min.css?v={{ FF_BUILD_TIME }}" rel="stylesheet" type="text/css" nonce="{{ JS_NONCE }}">
{% if 'browser' == darkMode %}
<meta name="color-scheme" content="light dark">
<script nonce="{{ JS_NONCE }}">
// If `prefers-color-scheme` is not supported, fall back to light mode.
// In this case, light.css will be downloaded with `highest` priority.
@@ -35,9 +35,11 @@
<link href="v1/lib/adminlte/css/skins/skin-light.min.css?v={{ FF_BUILD_TIME }}" rel="stylesheet" type="text/css" nonce="{{ JS_NONCE }}" media="(prefers-color-scheme: light)">
{% endif %}
{% if 'dark' == darkMode %}
<meta name="color-scheme" content="dark">
<link href="v1/lib/adminlte/css/skins/skin-dark.min.css?v={{ FF_BUILD_TIME }}" rel="stylesheet" type="text/css" nonce="{{ JS_NONCE }}">
{% endif %}
{% if 'light' == darkMode %}
<meta name="color-scheme" content="light">
<link href="v1/lib/adminlte/css/skins/skin-light.min.css?v={{ FF_BUILD_TIME }}" rel="stylesheet" type="text/css" nonce="{{ JS_NONCE }}">
{% endif %}

View File

@@ -5,8 +5,6 @@
<meta charset="UTF-8">
<meta name="robots" content="noindex, nofollow, noarchive, noodp, NoImageIndex, noydir">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="color-scheme" content="light dark">
<title>Firefly III
{% if title != "Firefly" and title != "" %}
@@ -30,6 +28,7 @@
{# the theme #}
<link href="v1/lib/adminlte/css/AdminLTE.min.css?v={{ FF_BUILD_TIME }}" rel="stylesheet" type="text/css" nonce="{{ JS_NONCE }}">
{% if 'browser' == darkMode %}
<meta name="color-scheme" content="light dark">
<script nonce="{{ JS_NONCE }}">
// If `prefers-color-scheme` is not supported, fall back to light mode.
// In this case, light.css will be downloaded with `highest` priority.
@@ -45,9 +44,11 @@
<link href="v1/lib/adminlte/css/skins/skin-light.min.css?v={{ FF_BUILD_TIME }}" rel="stylesheet" type="text/css" nonce="{{ JS_NONCE }}" media="(prefers-color-scheme: light)">
{% endif %}
{% if 'dark' == darkMode %}
<meta name="color-scheme" content="dark">
<link href="v1/lib/adminlte/css/skins/skin-dark.min.css?v={{ FF_BUILD_TIME }}" rel="stylesheet" type="text/css" nonce="{{ JS_NONCE }}">
{% endif %}
{% if 'light' == darkMode %}
<meta name="color-scheme" content="light">
<link href="v1/lib/adminlte/css/skins/skin-light.min.css?v={{ FF_BUILD_TIME }}" rel="stylesheet" type="text/css" nonce="{{ JS_NONCE }}">
{% endif %}

View File

@@ -70,6 +70,14 @@ Technical stuff
{{ 'setting_use_running_balance_explain'|_ }}
</p>
{{ ExpandedForm.checkbox('use_running_balance','1', useRunningBalance) }}
<h4>
{{ 'setting_enable_batch_processing'|_ }}
</h4>
<p>
{{ 'setting_enable_batch_processing_explain'|_ }}
</p>
{{ ExpandedForm.checkbox('enable_batch_processing','1', enableBatchProcessing) }}
</div>
</div>
</div>

View File

@@ -730,6 +730,19 @@ 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.',
],
static function (): void {
Route::post('finish', ['uses' => 'BatchController@finishBatch', 'as' => 'finish']);
}
);
// USER
// Preference API routes:
@@ -743,8 +756,8 @@ Route::group(
Route::get('', ['uses' => 'PreferencesController@index', 'as' => 'index']);
Route::post('', ['uses' => 'PreferencesController@store', 'as' => 'store']);
// Route::get('{preferenceList}', ['uses' => 'PreferencesController@showList', 'as' => 'show-list'])->where('preferenceList', ',+');
Route::get('{preference}', ['uses' => 'PreferencesController@show', 'as' => 'show']);
Route::put('{preference}', ['uses' => 'PreferencesController@update', 'as' => 'update']);
Route::get('{preferenceName}', ['uses' => 'PreferencesController@show', 'as' => 'show']);
Route::put('{preferenceName}', ['uses' => 'PreferencesController@update', 'as' => 'update']);
}
);