@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased
### Added
- Exposed the `PROCESSOR_PORTFOLIO_SNAPSHOT_COMPUTATION_REMOVE_ON_FAIL` environment variable to control the removal of failed jobs in the portfolio snapshot computation queue
### Changed
- Set the change detection strategy to `OnPush` in the alert dialog component
- Set the change detection strategy to `OnPush` in the confirmation dialog component
- Set the change detection strategy to `OnPush` in the prompt dialog component
- Set the change detection strategy to `OnPush` in the overview of the admin control panel
- Upgraded `stripe` from version `21.0.1` to `22.2.3`
### Fixed
- Fixed the creation of the _Stripe_ checkout session for languages not supported by _Stripe_ (`ca` and `uk`)
- Fixed the error handling in the endpoint to create a _Stripe_ checkout session
## 3.20.0 - 2026-07-04
### Changed
- Refactored the rounding logic in the holding detail dialog
@ -19,6 +38,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Improved the parsing of the integer query parameter (`includeHistoricalData`) in the `GET api/v1/symbol/:dataSource/:symbol` endpoint
- Harmonized the filter parsing using `groupBy` across various services
- Improved the language localization by translating various tooltips across the application
- Improved the language localization for German (`de`)
- Improved the language localization for Ukrainian (`uk`)
- Upgraded `yahoo-finance2` from version `3.14.3` to `3.15.4`
<source>and is driven by the efforts of its <x id="START_LINK" ctype="x-a" equiv-text="<a href="https://github.com/ghostfolio/ghostfolio/graphs/contributors" i18n-title title="Contributors to Ghostfolio" >"/>contributors<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a >"/></source>
<target state="new">und wird durch die Beiträge seiner <x id="START_LINK" ctype="x-a" equiv-text="<a href="https://github.com/ghostfolio/ghostfolio/graphs/contributors" title="Mitwirkende von Ghostfolio" >"/>Mitwirkenden<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a >"/> vorangetrieben</target>
<target state="translated">und wird durch die Beiträge seiner <x id="START_LINK" ctype="x-a" equiv-text="<a href="https://github.com/ghostfolio/ghostfolio/graphs/contributors" title="Mitwirkende von Ghostfolio" >"/>Mitwirkenden<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a >"/> vorangetrieben</target>
<source>At Ghostfolio, transparency is at the core of our values. We publish the source code as <x id="START_LINK" ctype="x-a" equiv-text="<a href="https://github.com/ghostfolio/ghostfolio" i18n-title title="Find Ghostfolio on GitHub" >"/>open source software<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a >"/> (OSS) under the <x id="START_LINK_1" equiv-text="<a href="https://www.gnu.org/licenses/agpl-3.0.html" title="GNU Affero General Public License" >"/>AGPL-3.0 license<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a >"/> and we openly share aggregated key metrics of the platform’s operational status.</source>
<target state="new">Bei Ghostfolio gehört Transparenz zum zentralen Inhalt unserer Grundwerte. Wir publizieren den Quellcode als <x id="START_LINK" ctype="x-a" equiv-text="<a href="https://github.com/ghostfolio/ghostfolio" title="Find Ghostfolio on GitHub" >"/>Open-Source-Software<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a >"/> (OSS) unter der <x id="START_LINK_1" equiv-text="<a href="https://www.gnu.org/licenses/agpl-3.0.html" title="GNU Affero General Public License" >"/>AGPL-3.0-Lizenz<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a >"/> und veröffentlichen aggregierte Kennzahlen über den Betriebsstatus der Plattform.</target>
<target state="translated">Bei Ghostfolio gehört Transparenz zum zentralen Inhalt unserer Grundwerte. Wir publizieren den Quellcode als <x id="START_LINK" ctype="x-a" equiv-text="<a href="https://github.com/ghostfolio/ghostfolio" title="Finde Ghostfolio auf GitHub" >"/>Open-Source-Software<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a >"/> (OSS) unter der <x id="START_LINK_1" equiv-text="<a href="https://www.gnu.org/licenses/agpl-3.0.html" title="GNU Affero General Public License" >"/>AGPL-3.0-Lizenz<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a >"/> und veröffentlichen aggregierte Kennzahlen über den Betriebsstatus der Plattform.</target>
<source>If you encounter a bug, would like to suggest an improvement or a new <x id="START_LINK" ctype="x-a" equiv-text="<a [routerLink]="routerLinkFeatures">"/>feature<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a >"/>, please join the Ghostfolio <x id="START_LINK_1" equiv-text="<a href="https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg" i18n-title title="Join the Ghostfolio Slack community" >"/>Slack<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a >"/> community, post to <x id="START_LINK_2" equiv-text="<a href="https://x.com/ghostfolio_" i18n-title title="Post to Ghostfolio on X (formerly Twitter)" >"/>@ghostfolio_<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a >"/></source>
<target state="new">Wenn du einen Fehler feststellst oder eine Verbesserung bzw. ein neues <x id="START_LINK" ctype="x-a" equiv-text="<a [routerLink]="routerLinkFeatures">"/>Feature<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a >"/> vorschlagen möchtest, tritt der Ghostfolio <x id="START_LINK_1" equiv-text="<a href="https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg" title="Join the Ghostfolio Slack community" >"/>Slack<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a >"/> Community bei oder poste an <x id="START_LINK_2" equiv-text="<a href="https://x.com/ghostfolio_" title="An Ghostfolio schreiben auf X (ehemals Twitter)" >"/>@ghostfolio_<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a >"/></target>
<target state="translated">Wenn du einen Fehler feststellst oder eine Verbesserung bzw. ein neues <x id="START_LINK" ctype="x-a" equiv-text="<a [routerLink]="routerLinkFeatures">"/>Feature<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a >"/> vorschlagen möchtest, tritt der Ghostfolio <x id="START_LINK_1" equiv-text="<a href="https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg" title="Tritt der Ghostfolio Slack-Community bei" >"/>Slack<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a >"/> Community bei oder poste an <x id="START_LINK_2" equiv-text="<a href="https://x.com/ghostfolio_" title="An Ghostfolio schreiben auf X (ehemals Twitter)" >"/>@ghostfolio_<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a >"/></target>