mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-11-09 19:28:19 +00:00
Compare commits
17 Commits
develop-20
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
27c1d33a70 | ||
|
|
c5ed6fbe52 | ||
|
|
e7432d791e | ||
|
|
3a26ed5cfa | ||
|
|
119bc96669 | ||
|
|
93238e3993 | ||
|
|
eed5f1ca92 | ||
|
|
ae2ab86e88 | ||
|
|
4c4e7e4125 | ||
|
|
37d6319fb1 | ||
|
|
444c038d9f | ||
|
|
4cd9d543eb | ||
|
|
3963648bb7 | ||
|
|
aee5f5cdf8 | ||
|
|
2c44bbb009 | ||
|
|
57d8d37ac7 | ||
|
|
732d6c807c |
@@ -57,26 +57,26 @@ return RectorConfig::configure()
|
||||
// uncomment to reach your current PHP version
|
||||
->withPhpSets()
|
||||
->withPreparedSets(
|
||||
deadCode: true,
|
||||
codeQuality: true,
|
||||
codingStyle: false, // leave false
|
||||
typeDeclarations: true,
|
||||
typeDeclarationDocblocks: false,
|
||||
privatization: false, // leave false.
|
||||
naming: false, // leave false
|
||||
instanceOf: true,
|
||||
earlyReturn: true,
|
||||
strictBooleans: true,
|
||||
// strictBooleans: true, // has a new thingie.
|
||||
carbon: true,
|
||||
rectorPreset: true,
|
||||
phpunitCodeQuality: true,
|
||||
doctrineCodeQuality: true,
|
||||
symfonyCodeQuality: true,
|
||||
symfonyConfigs: true
|
||||
|
||||
symfonyConfigs: true,
|
||||
)
|
||||
->withComposerBased(
|
||||
twig: true,
|
||||
doctrine: true,
|
||||
phpunit: true,
|
||||
symfony: true)
|
||||
->withTypeCoverageLevel(0)
|
||||
->withDeadCodeLevel(0)
|
||||
->withCodeQualityLevel(0)
|
||||
->withImportNames(removeUnusedImports: true);// import statements instead of full classes.
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/bug.yml
vendored
2
.github/ISSUE_TEMPLATE/bug.yml
vendored
@@ -6,7 +6,7 @@ body:
|
||||
label: Support guidelines
|
||||
description: Please read the support guidelines before proceeding.
|
||||
options:
|
||||
- label: I've read the [support guidelines](https://github.com/firefly-iii/firefly-iii/blob/main/.github/support.md)
|
||||
- label: I've read the <!-- MZ2udTpin6FL --> [support guidelines](https://github.com/firefly-iii/firefly-iii/blob/main/.github/support.md)
|
||||
required: true
|
||||
|
||||
- type: checkboxes
|
||||
|
||||
2
.github/workflows/cleanup.yml
vendored
2
.github/workflows/cleanup.yml
vendored
@@ -61,7 +61,7 @@ jobs:
|
||||
'cleanup.yml',
|
||||
'close-duplicates.yml',
|
||||
'closed-issues.yml',
|
||||
'debug-info-actions.yml',
|
||||
'issues-reply-old-versions.yml',
|
||||
'depsreview.yml',
|
||||
'label-actions.yml',
|
||||
'lock.yml',
|
||||
|
||||
32
.github/workflows/debug-info-actions.yml
vendored
32
.github/workflows/debug-info-actions.yml
vendored
@@ -1,32 +0,0 @@
|
||||
name: 'Issues - Respond to hidden commands'
|
||||
|
||||
# the workflow to execute on is comments that are newly created
|
||||
on:
|
||||
issues:
|
||||
types: [ opened, edited ]
|
||||
issue_comment:
|
||||
types: [ created ]
|
||||
|
||||
# permissions needed for reacting to IssueOps commands on issues and PRs
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
issues: write
|
||||
checks: read
|
||||
|
||||
jobs:
|
||||
respond:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- run: |
|
||||
ISSUE_BODY=$(gh issue view $NUMBER --json body)
|
||||
if [[ $ISSUE_BODY == *".eOxNZAmyGz6CXMyf"* ]]; then
|
||||
gh issue comment "$NUMBER" --body "$V2_ISSUE_REPLY_BODY"
|
||||
gh issue close "$NUMBER" --reason completed
|
||||
fi
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
GH_REPO: ${{ github.repository }}
|
||||
NUMBER: ${{ github.event.issue.number }}
|
||||
V2_ISSUE_REPLY_BODY: ${{ secrets.V2_ISSUE_REPLY_BODY }}
|
||||
LABELS: v2-layout-issue
|
||||
51
.github/workflows/issues-reply-old-versions.yml
vendored
Normal file
51
.github/workflows/issues-reply-old-versions.yml
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
name: 'Issues - Respond to old versions'
|
||||
|
||||
# the workflow to execute on is comments that are newly created
|
||||
on:
|
||||
issues:
|
||||
types: [ opened ]
|
||||
|
||||
# permissions needed for reacting to IssueOps commands on issues and PRs
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
issues: write
|
||||
checks: read
|
||||
|
||||
jobs:
|
||||
respond:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- id: ff3version
|
||||
uses: pozetroninc/github-action-get-latest-release@master
|
||||
with:
|
||||
owner: firefly-iii
|
||||
repo: firefly-iii
|
||||
excludes: prerelease, draft
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
- id: importerversion
|
||||
uses: pozetroninc/github-action-get-latest-release@master
|
||||
with:
|
||||
owner: firefly-iii
|
||||
repo: data-importer
|
||||
excludes: prerelease, draft
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
- run: |
|
||||
ISSUE_BODY=$(gh issue view $NUMBER --json body)
|
||||
if [[ $ISSUE_BODY == *"MZ2udTpin6FL"* && $ISSUE_BODY != *${{ steps.ff3version.outputs.release }}* && $ISSUE_BODY != *${{ steps.importerversion.outputs.release }}* ]]; then
|
||||
|
||||
MESSAGE="Hi there!
|
||||
|
||||
This is an automated reply. \`Share and enjoy\`
|
||||
|
||||
You triggered an automated reply, because it looks like you're not running Firefly III version **${{ steps.ff3version.outputs.release }}** or version **${{ steps.importerversion.outputs.release }}** of the data importer.
|
||||
|
||||
Please be so kind as to include the output from the \`/debug\`-page, if you have not done so already. If you already included the debug information, plase make sure to upgrade to the latest version of Firefly III (or the data importer) *first*. This may already solve your issue.
|
||||
|
||||
If you are running the latest version, and this message is wrong, my apologies for the intrusion."
|
||||
gh issue comment "$NUMBER" --body "$MESSAGE"
|
||||
fi
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
GH_REPO: ${{ github.repository }}
|
||||
NUMBER: ${{ github.event.issue.number }}
|
||||
@@ -69,7 +69,7 @@ class HomeController extends Controller
|
||||
$stringStart = e((string) $request->get('start'));
|
||||
$start = Carbon::createFromFormat('Y-m-d', $stringStart);
|
||||
} catch (InvalidFormatException) {
|
||||
app('log')->error(sprintf('Start: could not parse date string "%s" so ignore it.', $stringStart));
|
||||
Log::error(sprintf('Start: could not parse date string "%s" so ignore it.', $stringStart));
|
||||
$start = Carbon::now()->startOfMonth();
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ class HomeController extends Controller
|
||||
$stringEnd = e((string) $request->get('end'));
|
||||
$end = Carbon::createFromFormat('Y-m-d', $stringEnd);
|
||||
} catch (InvalidFormatException) {
|
||||
app('log')->error(sprintf('End could not parse date string "%s" so ignore it.', $stringEnd));
|
||||
Log::error(sprintf('End could not parse date string "%s" so ignore it.', $stringEnd));
|
||||
$end = Carbon::now()->endOfMonth();
|
||||
}
|
||||
if (null === $start) {
|
||||
@@ -90,12 +90,12 @@ class HomeController extends Controller
|
||||
$label = $request->get('label');
|
||||
$isCustomRange = false;
|
||||
|
||||
app('log')->debug('dateRange: Received dateRange', ['start' => $stringStart, 'end' => $stringEnd, 'label' => $request->get('label')]);
|
||||
Log::debug('dateRange: Received dateRange', ['start' => $stringStart, 'end' => $stringEnd, 'label' => $request->get('label')]);
|
||||
// check if the label is "everything" or "Custom range" which will betray
|
||||
// a possible problem with the budgets.
|
||||
if ($label === (string) trans('firefly.everything') || $label === (string) trans('firefly.customRange')) {
|
||||
$isCustomRange = true;
|
||||
app('log')->debug('Range is now marked as "custom".');
|
||||
Log::debug('Range is now marked as "custom".');
|
||||
}
|
||||
|
||||
$diff = $start->diffInDays($end, true) + 1;
|
||||
@@ -105,11 +105,11 @@ class HomeController extends Controller
|
||||
}
|
||||
|
||||
$request->session()->put('is_custom_range', $isCustomRange);
|
||||
app('log')->debug(sprintf('Set is_custom_range to %s', var_export($isCustomRange, true)));
|
||||
Log::debug(sprintf('Set is_custom_range to %s', var_export($isCustomRange, true)));
|
||||
$request->session()->put('start', $start);
|
||||
app('log')->debug(sprintf('Set start to %s', $start->format('Y-m-d H:i:s')));
|
||||
Log::debug(sprintf('Set start to %s', $start->format('Y-m-d H:i:s')));
|
||||
$request->session()->put('end', $end);
|
||||
app('log')->debug(sprintf('Set end to %s', $end->format('Y-m-d H:i:s')));
|
||||
Log::debug(sprintf('Set end to %s', $end->format('Y-m-d H:i:s')));
|
||||
|
||||
return response()->json(['ok' => 'ok']);
|
||||
}
|
||||
@@ -161,7 +161,7 @@ class HomeController extends Controller
|
||||
$today = today(config('app.timezone'));
|
||||
$accounts = $accounts->sortBy('order'); // sort frontpage accounts by order
|
||||
|
||||
app('log')->debug('Frontpage accounts are ', $frontpageArray);
|
||||
Log::debug('Frontpage accounts are ', $frontpageArray);
|
||||
|
||||
/** @var BillRepositoryInterface $billRepository */
|
||||
$billRepository = app(BillRepositoryInterface::class);
|
||||
|
||||
@@ -154,8 +154,8 @@ class EditController extends Controller
|
||||
$array['repeat_until'] = substr((string) $array['repeat_until'], 0, 10);
|
||||
$array['transactions'][0]['tags'] = implode(',', $array['transactions'][0]['tags'] ?? []);
|
||||
$array['transactions'][0]['amount'] = round((float) $array['transactions'][0]['amount'], $array['transactions'][0]['currency_decimal_places']);
|
||||
if (null !== $array['transactions'][0]['foreign_amount']) {
|
||||
$array['transactions'][0]['foreign_amount'] = round((float) $array['transactions'][0]['foreign_amount'], $array['transactions'][0]['foreign_currency_decimal_places']);
|
||||
if (null !== $array['transactions'][0]['foreign_amount'] && '' !== $array['transactions'][0]['foreign_amount']) {
|
||||
$array['transactions'][0]['foreign_amount'] = round((float) $array['transactions'][0]['foreign_amount'], $array['transactions'][0]['foreign_currency_decimal_places'] ?? 2);
|
||||
}
|
||||
|
||||
return view(
|
||||
|
||||
@@ -157,6 +157,14 @@ class General extends AbstractExtension
|
||||
|
||||
/** @var Carbon $date */
|
||||
$date = now();
|
||||
|
||||
// get the date from the current session. If it's in the future, keep `now()`.
|
||||
/** @var Carbon $session */
|
||||
$session = clone session('end', today(config('app.timezone'))->endOfMonth());
|
||||
if ($session->lt($date)) {
|
||||
$date = $session->copy();
|
||||
$date->endOfDay();
|
||||
}
|
||||
Log::debug(sprintf('twig balance: Call finalAccountBalance with date/time "%s"', $date->toIso8601String()));
|
||||
|
||||
// 2025-10-08 replace finalAccountBalance with accountsBalancesOptimized.
|
||||
|
||||
11
changelog.md
11
changelog.md
@@ -3,7 +3,16 @@
|
||||
All notable changes to this project will be documented in this file.
|
||||
This project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
## 6.4.5 - 2025-11-xx
|
||||
## 6.4.6 - 2025-11-09
|
||||
|
||||
### Fixed
|
||||
|
||||
- [Issue 11157](https://github.com/firefly-iii/firefly-iii/issues/11157) (Redacted amounts misbehave with Reports) reported by @barreeeiroo
|
||||
- [Issue 11166](https://github.com/firefly-iii/firefly-iii/issues/11166) (Optional transaction information field not saved when updating a recuring transaction) reported by @Old-Veeh
|
||||
- [Issue 11185](https://github.com/firefly-iii/firefly-iii/issues/11185) (Internal server error after apply rule) reported by @Citroene
|
||||
- [Issue 11196](https://github.com/firefly-iii/firefly-iii/issues/11196) (Exception when editing recurring transaction) reported by @Insprill
|
||||
|
||||
## 6.4.5 - 2025-11-09
|
||||
|
||||
### Fixed
|
||||
|
||||
|
||||
@@ -78,8 +78,8 @@ return [
|
||||
'running_balance_column' => env('USE_RUNNING_BALANCE', false),
|
||||
// see cer.php for exchange rates feature flag.
|
||||
],
|
||||
'version' => 'develop/2025-11-08',
|
||||
'build_time' => 1762586129,
|
||||
'version' => '6.4.6',
|
||||
'build_time' => 1762641809,
|
||||
'api_version' => '2.1.0', // field is no longer used.
|
||||
'db_version' => 28, // field is no longer used.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user