diff --git a/CHANGELOG.md b/CHANGELOG.md
index af4ba15cf..a03bea515 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,17 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased
+### Changed
+
+- Optimized the query of the data range functionality (`getRange()`) in the market data service
+
+## 2.151.0 - 2025-04-11
+
### Added
- Added the data gathering status column to the historical market data table of the admin control
### Changed
-- Optimized the query of the data range functionality (`getRange()`) in the market data service
+- Set the maximum number of symbols per request in the _Financial Modeling Prep_ service
+- Migrated the get quotes functionality of the _Financial Modeling Prep_ service to its stable API version
- Improved the language localization for Enlish (`en`)
- Upgraded `eslint` dependencies
- Upgraded `Nx` from version `20.6.4` to `20.7.1`
+### Fixed
+
+- Fixed the link to the pricing page in the premium indicator component
+
## 2.150.0 - 2025-04-05
### Added
diff --git a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts
index 119e8ea67..d6eaec076 100644
--- a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts
+++ b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts
@@ -325,6 +325,10 @@ export class FinancialModelingPrepService implements DataProviderInterface {
}
}
+ public getMaxNumberOfSymbolsPerRequest() {
+ return 20;
+ }
+
public getName(): DataSource {
return DataSource.FINANCIAL_MODELING_PREP;
}
@@ -341,7 +345,7 @@ export class FinancialModelingPrepService implements DataProviderInterface {
try {
const quotes = await fetch(
- `${this.URL}/quote/${symbols.join(',')}?apikey=${this.apiKey}`,
+ `${this.getUrl({ version: 'stable' })}/batch-quote-short?symbols=${symbols.join(',')}&apikey=${this.apiKey}`,
{
signal: AbortSignal.timeout(requestTimeout)
}
@@ -451,8 +455,14 @@ export class FinancialModelingPrepService implements DataProviderInterface {
return name;
}
- private getUrl({ version }: { version: number }) {
- return `https://financialmodelingprep.com/api/v${version}`;
+ private getUrl({ version }: { version: number | 'stable' }) {
+ const baseUrl = 'https://financialmodelingprep.com';
+
+ if (version === 'stable') {
+ return `${baseUrl}/stable`;
+ }
+
+ return `${baseUrl}/api/v${version}`;
}
private parseAssetClass(profile: any): {
diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf
index 94d1e183e..f4b38ffbd 100644
--- a/apps/client/src/locales/messages.ca.xlf
+++ b/apps/client/src/locales/messages.ca.xlf
@@ -719,6 +719,10 @@
libs/ui/src/lib/membership-card/membership-card.component.ts
30
+
+ libs/ui/src/lib/premium-indicator/premium-indicator.component.ts
+ 21
+
register
diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf
index c2b500915..4ee42e1d7 100644
--- a/apps/client/src/locales/messages.de.xlf
+++ b/apps/client/src/locales/messages.de.xlf
@@ -5535,6 +5535,10 @@
libs/ui/src/lib/membership-card/membership-card.component.ts
30
+
+ libs/ui/src/lib/premium-indicator/premium-indicator.component.ts
+ 21
+
register
diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf
index 6d981010a..86afafe71 100644
--- a/apps/client/src/locales/messages.es.xlf
+++ b/apps/client/src/locales/messages.es.xlf
@@ -5512,6 +5512,10 @@
libs/ui/src/lib/membership-card/membership-card.component.ts
30
+
+ libs/ui/src/lib/premium-indicator/premium-indicator.component.ts
+ 21
+
register
diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf
index 9187a0973..3aafe28f0 100644
--- a/apps/client/src/locales/messages.fr.xlf
+++ b/apps/client/src/locales/messages.fr.xlf
@@ -5511,6 +5511,10 @@
libs/ui/src/lib/membership-card/membership-card.component.ts
30
+
+ libs/ui/src/lib/premium-indicator/premium-indicator.component.ts
+ 21
+
register
diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf
index bd45ce3f0..f9b8ac81d 100644
--- a/apps/client/src/locales/messages.it.xlf
+++ b/apps/client/src/locales/messages.it.xlf
@@ -5512,6 +5512,10 @@
libs/ui/src/lib/membership-card/membership-card.component.ts
30
+
+ libs/ui/src/lib/premium-indicator/premium-indicator.component.ts
+ 21
+
register
diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf
index 62756a862..34d0bbea1 100644
--- a/apps/client/src/locales/messages.nl.xlf
+++ b/apps/client/src/locales/messages.nl.xlf
@@ -5511,6 +5511,10 @@
libs/ui/src/lib/membership-card/membership-card.component.ts
30
+
+ libs/ui/src/lib/premium-indicator/premium-indicator.component.ts
+ 21
+
register
diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf
index 924afe520..52aedd63a 100644
--- a/apps/client/src/locales/messages.pl.xlf
+++ b/apps/client/src/locales/messages.pl.xlf
@@ -338,6 +338,10 @@
libs/ui/src/lib/membership-card/membership-card.component.ts
30
+
+ libs/ui/src/lib/premium-indicator/premium-indicator.component.ts
+ 21
+
privacy-policy
diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf
index 0f9827aff..546c8a735 100644
--- a/apps/client/src/locales/messages.pt.xlf
+++ b/apps/client/src/locales/messages.pt.xlf
@@ -5511,6 +5511,10 @@
libs/ui/src/lib/membership-card/membership-card.component.ts
30
+
+ libs/ui/src/lib/premium-indicator/premium-indicator.component.ts
+ 21
+
register
diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf
index 3b9dbf2bf..e78bc6c6a 100644
--- a/apps/client/src/locales/messages.tr.xlf
+++ b/apps/client/src/locales/messages.tr.xlf
@@ -338,6 +338,10 @@
libs/ui/src/lib/membership-card/membership-card.component.ts
30
+
+ libs/ui/src/lib/premium-indicator/premium-indicator.component.ts
+ 21
+
privacy-policy
diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf
index 5f5f2877d..d4f087551 100644
--- a/apps/client/src/locales/messages.uk.xlf
+++ b/apps/client/src/locales/messages.uk.xlf
@@ -719,6 +719,10 @@
libs/ui/src/lib/membership-card/membership-card.component.ts
30
+
+ libs/ui/src/lib/premium-indicator/premium-indicator.component.ts
+ 21
+
register
diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf
index 13ccb1267..4fe03f63e 100644
--- a/apps/client/src/locales/messages.xlf
+++ b/apps/client/src/locales/messages.xlf
@@ -333,6 +333,10 @@
libs/ui/src/lib/membership-card/membership-card.component.ts
30
+
+ libs/ui/src/lib/premium-indicator/premium-indicator.component.ts
+ 21
+
privacy-policy
diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf
index c5988029f..1b798f892 100644
--- a/apps/client/src/locales/messages.zh.xlf
+++ b/apps/client/src/locales/messages.zh.xlf
@@ -339,6 +339,10 @@
libs/ui/src/lib/membership-card/membership-card.component.ts
30
+
+ libs/ui/src/lib/premium-indicator/premium-indicator.component.ts
+ 21
+
privacy-policy
diff --git a/libs/ui/src/lib/premium-indicator/premium-indicator.component.html b/libs/ui/src/lib/premium-indicator/premium-indicator.component.html
index 29903b181..3141414e7 100644
--- a/libs/ui/src/lib/premium-indicator/premium-indicator.component.html
+++ b/libs/ui/src/lib/premium-indicator/premium-indicator.component.html
@@ -2,6 +2,6 @@
class="align-items-center d-flex"
title="Upgrade to Ghostfolio Premium"
[ngStyle]="{ 'pointer-events': enableLink ? 'initial' : 'none' }"
- [routerLink]="['/pricing']"
+ [routerLink]="routerLinkPricing"
>
diff --git a/libs/ui/src/lib/premium-indicator/premium-indicator.component.ts b/libs/ui/src/lib/premium-indicator/premium-indicator.component.ts
index 17b0f94dd..b4e871342 100644
--- a/libs/ui/src/lib/premium-indicator/premium-indicator.component.ts
+++ b/libs/ui/src/lib/premium-indicator/premium-indicator.component.ts
@@ -17,4 +17,6 @@ import { RouterModule } from '@angular/router';
})
export class GfPremiumIndicatorComponent {
@Input() enableLink = true;
+
+ public routerLinkPricing = ['/' + $localize`:snake-case:pricing`];
}
diff --git a/package-lock.json b/package-lock.json
index 4ee03e452..2b3b33c90 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "ghostfolio",
- "version": "2.150.0",
+ "version": "2.151.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "ghostfolio",
- "version": "2.150.0",
+ "version": "2.151.0",
"hasInstallScript": true,
"license": "AGPL-3.0",
"dependencies": {
diff --git a/package.json b/package.json
index 64ef0da72..b657d6610 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "ghostfolio",
- "version": "2.150.0",
+ "version": "2.151.0",
"homepage": "https://ghostfol.io",
"license": "AGPL-3.0",
"repository": "https://github.com/ghostfolio/ghostfolio",