diff --git a/.github/workflows/build-code.yml b/.github/workflows/build-code.yml
index 18240ebc4..7a8f72ac4 100644
--- a/.github/workflows/build-code.yml
+++ b/.github/workflows/build-code.yml
@@ -13,7 +13,7 @@ jobs:
strategy:
matrix:
node_version:
- - 20
+ - 22
steps:
- name: Checkout code
uses: actions/checkout@v4
diff --git a/.nvmrc b/.nvmrc
index 9a2a0e219..53d1c14db 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-v20
+v22
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4ebd488dc..745d792af 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,15 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## Unreleased
+
+### Changed
+
+- Improved the language localization for French (`fr`)
+- Improved the language localization for Polish (`pl`)
+- Improved the language localization for Spanish (`es`)
+- Upgraded `Node.js` from version `20` to `22` (`Dockerfile`)
+
## 2.163.0 - 2025-05-26
### Changed
@@ -34,12 +43,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Improved the language localization for Catalan (`ca`)
- Improved the language localization for Chinese (`zh`)
- Improved the language localization for Dutch (`nl`)
-- Improved the language localization for Español (`es`)
- Improved the language localization for French (`fr`)
- Improved the language localization for German (`de`)
- Improved the language localization for Italian (`it`)
- Improved the language localization for Polish (`pl`)
- Improved the language localization for Portuguese (`pt`)
+- Improved the language localization for Spanish (`es`)
- Upgraded `countup.js` from version `2.8.0` to `2.8.2`
- Upgraded `nestjs` from version `10.4.15` to `11.0.12`
- Upgraded `prisma` from version `6.7.0` to `6.8.2`
@@ -96,7 +105,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
-- Improved the language localization for Français (`fr`)
+- Improved the language localization for French (`fr`)
- Upgraded `bootstrap` from version `4.6.0` to `4.6.2`
### Fixed
@@ -137,7 +146,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Improved the error message of the currency code validation
- Tightened the currency code validation by requiring uppercase letters
- Respected the watcher count for the delete asset profiles checkbox in the historical market data table of the admin control panel
-- Improved the language localization for Français (`fr`)
+- Improved the language localization for French (`fr`)
- Upgraded `ngx-skeleton-loader` from version `10.0.0` to `11.0.0`
- Upgraded `Nx` from version `20.8.0` to `20.8.1`
@@ -237,7 +246,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- Improved the check for duplicates in the preview step of the activities import (allow different comments)
-- Improved the language localization for Français (`fr`)
+- Improved the language localization for French (`fr`)
- Improved the language localization for German (`de`)
- Improved the language localization for Polish (`pl`)
- Upgraded `ng-extract-i18n-merge` from version `2.14.1` to `2.14.3`
@@ -3692,7 +3701,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
-- Added the language localization for Français (`fr`)
+- Added the language localization for French (`fr`)
- Extended the landing page by a global heat map of subscribers
- Added support for the thousand separator in the global heat map component
@@ -3721,7 +3730,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Added support for the dividend timeline grouped by year
- Added support for the investment timeline grouped by year
-- Set up the language localization for Français (`fr`)
+- Set up the language localization for French (`fr`)
### Changed
@@ -3830,7 +3839,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- Improved the value redaction interceptor (including `comment`)
-- Improved the language localization for Español (`es`)
+- Improved the language localization for Spanish (`es`)
- Upgraded `cheerio` from version `1.0.0-rc.6` to `1.0.0-rc.12`
- Upgraded `prisma` from version `4.6.1` to `4.7.1`
@@ -4059,7 +4068,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- Improved the usage of the value component in the admin control panel
-- Improved the language localization for Español (`es`)
+- Improved the language localization for Spanish (`es`)
### Fixed
@@ -4081,7 +4090,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
-- Set up the language localization for Español (`es`)
+- Set up the language localization for Spanish (`es`)
- Added support for sectors in mutual funds
## 1.198.0 - 25.09.2022
diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md
index 1c45aeca1..51de2ad25 100644
--- a/DEVELOPMENT.md
+++ b/DEVELOPMENT.md
@@ -5,7 +5,7 @@
### Prerequisites
- [Docker](https://www.docker.com/products/docker-desktop)
-- [Node.js](https://nodejs.org/en/download) (version 20+)
+- [Node.js](https://nodejs.org/en/download) (version 22+)
- Create a local copy of this Git repository (clone)
- Copy the file `.env.dev` to `.env` and populate it with your data (`cp .env.dev .env`)
diff --git a/Dockerfile b/Dockerfile
index 103dc3b9e..922b880e3 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM --platform=$BUILDPLATFORM node:20-slim AS builder
+FROM --platform=$BUILDPLATFORM node:22-slim AS builder
# Build application and add additional files
WORKDIR /ghostfolio
@@ -50,7 +50,7 @@ COPY package.json /ghostfolio/dist/apps/api
RUN npm run database:generate-typings
# Image to run, copy everything needed from builder
-FROM node:20-slim
+FROM node:22-slim
LABEL org.opencontainers.image.source="https://github.com/ghostfolio/ghostfolio"
ENV NODE_ENV=production
diff --git a/apps/api/src/assets/sitemap.xml b/apps/api/src/assets/sitemap.xml
index c7e6c982f..a2876c696 100644
--- a/apps/api/src/assets/sitemap.xml
+++ b/apps/api/src/assets/sitemap.xml
@@ -317,7 +317,7 @@
${currentDate}T00:00:00+00:00
- https://ghostfol.io/fr/a-propos/changelog
+ https://ghostfol.io/fr/a-propos/journal-des-modifications${currentDate}T00:00:00+00:00
diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf
index 0f0c5b736..01b51e793 100644
--- a/apps/client/src/locales/messages.es.xlf
+++ b/apps/client/src/locales/messages.es.xlf
@@ -4620,7 +4620,7 @@
Get a comprehensive financial overview by adding your bank and brokerage accounts.
- Get a comprehensive financial overview by adding your bank and brokerage accounts.
+ Obtén una visión financiera completa agregando tus cuentas bancarias y de corretaje.apps/client/src/app/components/home-overview/home-overview.html17
@@ -4628,7 +4628,7 @@
Capture your activities
- Capture your activities
+ Captura tus actividadesapps/client/src/app/components/home-overview/home-overview.html24
@@ -4636,7 +4636,7 @@
Record your investment activities to keep your portfolio up to date.
- Record your investment activities to keep your portfolio up to date.
+ Registra tus actividades de inversión para mantener tu portafolio actualizado.apps/client/src/app/components/home-overview/home-overview.html26
@@ -4644,7 +4644,7 @@
Monitor and analyze your portfolio
- Monitor and analyze your portfolio
+ Monitorea y analiza tu portafolioapps/client/src/app/components/home-overview/home-overview.html33
@@ -4652,7 +4652,7 @@
Track your progress in real-time with comprehensive analysis and insights.
- Track your progress in real-time with comprehensive analysis and insights.
+ Sigue tu progreso en tiempo real con análisis e información detallada.apps/client/src/app/components/home-overview/home-overview.html35
@@ -4660,7 +4660,7 @@
No data available
- No data available
+ No hay datos disponibles.apps/client/src/app/pages/portfolio/allocations/allocations-page.html250
@@ -4680,7 +4680,7 @@
Ready to take control of your personal finances?
- Ready to take control of your personal finances?
+ ¿Listo para tomar el control de tus finanzas personales?apps/client/src/app/components/home-overview/home-overview.html8
@@ -4688,7 +4688,7 @@
Setup accounts
- Setup accounts
+ Configura tus cuentasapps/client/src/app/components/home-overview/home-overview.html48
@@ -4696,7 +4696,7 @@
Biometric Authentication
- Biometric Authentication
+ Autenticación biométricaapps/client/src/app/components/user-account-settings/user-account-settings.html218
@@ -4704,7 +4704,7 @@
At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status.
- At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status.
+ En Ghostfolio, la transparencia está en el centro de nuestros valores. Publicamos el código fuente como software de código abierto (OSS) bajo la licencia Licencia AGPL-3.0 y compartimos abiertamente métricas clave agregadas sobre el estado operativo de la plataforma. apps/client/src/app/pages/open/open-page.html6
@@ -4712,7 +4712,7 @@
Active Users
- Active Users
+ Usuarios activosapps/client/src/app/pages/open/open-page.html40
@@ -4724,7 +4724,7 @@
New Users
- New Users
+ Nuevos usuariosapps/client/src/app/pages/open/open-page.html51
@@ -4732,7 +4732,7 @@
Users in Slack community
- Users in Slack community
+ Usuarios en la comunidad de Slackapps/client/src/app/pages/open/open-page.html75
@@ -4740,7 +4740,7 @@
Contributors on GitHub
- Contributors on GitHub
+ Colaboradores en GitHubapps/client/src/app/pages/open/open-page.html89
@@ -4748,7 +4748,7 @@
Stars on GitHub
- Stars on GitHub
+ Estrellas en GitHubapps/client/src/app/pages/landing/landing-page.html88
@@ -4760,7 +4760,7 @@
Pulls on Docker Hub
- Pulls on Docker Hub
+ Descargas en Docker Hubapps/client/src/app/pages/landing/landing-page.html106
@@ -4772,7 +4772,7 @@
Uptime
- Uptime
+ Tiempo de actividadapps/client/src/app/pages/open/open-page.html132
@@ -4780,7 +4780,7 @@
Export Data
- Export Data
+ Exportar datosapps/client/src/app/components/user-account-settings/user-account-settings.html260
@@ -4788,7 +4788,7 @@
Currencies
- Currencies
+ Monedasapps/client/src/app/components/admin-market-data/admin-market-data.component.ts86
@@ -4796,7 +4796,7 @@
Our
- Our
+ Nuestroapps/client/src/app/pages/about/oss-friends/oss-friends-page.html6
@@ -4804,7 +4804,7 @@
Visit
- Visit
+ Visitarapps/client/src/app/pages/about/oss-friends/oss-friends-page.html28
@@ -4812,7 +4812,7 @@
Discover other exciting Open Source Software projects
- Discover other exciting Open Source Software projects
+ Descubre otros proyectos emocionantes de software de código abiertoapps/client/src/app/pages/about/oss-friends/oss-friends-page.html9
@@ -4820,7 +4820,7 @@
Frequently Asked Questions (FAQ)
- Frequently Asked Questions (FAQ)
+ Preguntas Frecuentes (FAQ) apps/client/src/app/pages/faq/overview/faq-overview-page.html4
@@ -4836,7 +4836,7 @@
Check out the numerous features of Ghostfolio to manage your wealth
- Check out the numerous features of Ghostfolio to manage your wealth
+ Descubra las numerosas funciones de Ghostfolio para gestionar su patrimonioapps/client/src/app/pages/features/features-page.html6
@@ -4844,7 +4844,7 @@
Discover the latest Ghostfolio updates and insights on personal finance
- Discover the latest Ghostfolio updates and insights on personal finance
+ Conoce las últimas actualizaciones de Ghostfolio y obtén información sobre finanzas personalesapps/client/src/app/pages/blog/blog-page.html7
@@ -4852,7 +4852,7 @@
If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub.
- If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub.
+ Si prefieres ejecutar Ghostfolio en tu propia infraestructura, puedes encontrar el código fuente e instrucciones adicionales en GitHub. apps/client/src/app/pages/pricing/pricing-page.html26
@@ -4860,7 +4860,7 @@
Manage your wealth like a boss
- Manage your wealth like a boss
+ Gestiona tu patrimonio como un jefe apps/client/src/app/pages/landing/landing-page.html5
@@ -4868,7 +4868,7 @@
Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions.
- Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions.
+ Ghostfolio es un panel de control de código abierto y centrado en la privacidad para tus finanzas personales. Analiza la asignación de tus activos, conoce tu patrimonio neto y toma decisiones de inversión sólidas basadas en datos. apps/client/src/app/pages/landing/landing-page.html9
@@ -4888,7 +4888,7 @@
Monthly Active Users
- Monthly Active Users
+ Usuarios activos mensualesapps/client/src/app/pages/landing/landing-page.html70
@@ -4896,7 +4896,7 @@
As seen in
- As seen in
+ Visto enapps/client/src/app/pages/landing/landing-page.html115
@@ -4904,7 +4904,7 @@
Protect your assets. Refine your personal investment strategy.
- Protect your assets. Refine your personal investment strategy.
+ Protege tus assets. Mejora tu estrategia de inversión personal. apps/client/src/app/pages/landing/landing-page.html225
@@ -4912,7 +4912,7 @@
Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked.
- Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked.
+ Ghostfolio permite a las personas ocupadas hacer un seguimiento de acciones, ETFs o criptomonedas sin ser rastreadas. apps/client/src/app/pages/landing/landing-page.html229
@@ -4920,7 +4920,7 @@
360° View
- 360° View
+ Vista 360°apps/client/src/app/pages/landing/landing-page.html240
@@ -4928,7 +4928,7 @@
Web3 Ready
- Web3 Ready
+ Preparado para Web3apps/client/src/app/pages/landing/landing-page.html251
@@ -4936,7 +4936,7 @@
Use Ghostfolio anonymously and own your financial data.
- Use Ghostfolio anonymously and own your financial data.
+ Usa Ghostfolio de forma anónima y sé dueño de tus datos financieros. apps/client/src/app/pages/landing/landing-page.html253
@@ -4944,7 +4944,7 @@
Open Source
- Open Source
+ Código Abiertoapps/client/src/app/pages/landing/landing-page.html261
@@ -4952,7 +4952,7 @@
Benefit from continuous improvements through a strong community.
- Benefit from continuous improvements through a strong community.
+ Disfruta de mejoras continuas gracias a una comunidad sólida. apps/client/src/app/pages/landing/landing-page.html263
@@ -4960,7 +4960,7 @@
Why Ghostfolio?
- Why Ghostfolio?
+ ¿Por qué Ghostfolio?apps/client/src/app/pages/landing/landing-page.html272
@@ -4968,7 +4968,7 @@
Ghostfolio is for you if you are...
- Ghostfolio is for you if you are...
+ Ghostfolio es para ti si estás... apps/client/src/app/pages/landing/landing-page.html273
@@ -4976,7 +4976,7 @@
trading stocks, ETFs or cryptocurrencies on multiple platforms
- trading stocks, ETFs or cryptocurrencies on multiple platforms
+ operando con acciones, ETFs o criptomonedas en múltiples plataformasapps/client/src/app/pages/landing/landing-page.html280
@@ -4984,7 +4984,7 @@
pursuing a buy & hold strategy
- pursuing a buy & hold strategy
+ persiguiendo una compra & mantener estrategiaapps/client/src/app/pages/landing/landing-page.html286
@@ -4992,7 +4992,7 @@
interested in getting insights of your portfolio composition
- interested in getting insights of your portfolio composition
+ interesado en obtener información sobre la composición de tu portafolioapps/client/src/app/pages/landing/landing-page.html291
@@ -5000,7 +5000,7 @@
valuing privacy and data ownership
- valuing privacy and data ownership
+ valorando la privacidad y la propiedad de tus datosapps/client/src/app/pages/landing/landing-page.html296
diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf
index 27ed1b444..202082270 100644
--- a/apps/client/src/locales/messages.fr.xlf
+++ b/apps/client/src/locales/messages.fr.xlf
@@ -7589,7 +7589,7 @@
Calculations are based on delayed market data and may not be displayed in real-time.
- Calculations are based on delayed market data and may not be displayed in real-time.
+ Les calculs sont basés sur des données de marché retardées et peuvent ne pas être affichés en temps réel.apps/client/src/app/components/home-market/home-market.html41
@@ -7597,7 +7597,7 @@
changelog
- changelog
+ journal-des-modificationskebab-caselibs/common/src/lib/paths.ts
diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf
index 40d67e1b5..3d5c28be9 100644
--- a/apps/client/src/locales/messages.pl.xlf
+++ b/apps/client/src/locales/messages.pl.xlf
@@ -6898,7 +6898,7 @@
Get access to 80’000+ tickers from over 50 exchanges
- Uzyskaj dostęp do ponad 100 000 pasków notowań giełdowych z ponad 50 giełd
+ Uzyskaj dostęp do ponad 80 000 pasków notowań giełdowych z ponad 50 giełdlibs/ui/src/lib/i18n.ts24
diff --git a/package-lock.json b/package-lock.json
index 484ce76d1..9ba1a72a0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -129,7 +129,7 @@
"@types/google-spreadsheet": "3.1.5",
"@types/jest": "29.5.13",
"@types/lodash": "4.17.16",
- "@types/node": "20.14.10",
+ "@types/node": "22.15.17",
"@types/papaparse": "5.3.7",
"@types/passport-google-oauth20": "2.0.16",
"@typescript-eslint/eslint-plugin": "8.29.0",
@@ -161,7 +161,7 @@
"webpack-bundle-analyzer": "4.10.2"
},
"engines": {
- "node": ">=20"
+ "node": ">=22"
}
},
"node_modules/@adobe/css-tools": {
@@ -13002,12 +13002,12 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "20.14.10",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz",
- "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==",
+ "version": "22.15.17",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.17.tgz",
+ "integrity": "sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==",
"license": "MIT",
"dependencies": {
- "undici-types": "~5.26.4"
+ "undici-types": "~6.21.0"
}
},
"node_modules/@types/node-forge": {
@@ -34266,9 +34266,9 @@
}
},
"node_modules/undici-types": {
- "version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
"license": "MIT"
},
"node_modules/unicode-canonical-property-names-ecmascript": {
diff --git a/package.json b/package.json
index 3e203fbc9..e1877d2ef 100644
--- a/package.json
+++ b/package.json
@@ -175,7 +175,7 @@
"@types/google-spreadsheet": "3.1.5",
"@types/jest": "29.5.13",
"@types/lodash": "4.17.16",
- "@types/node": "20.14.10",
+ "@types/node": "22.15.17",
"@types/papaparse": "5.3.7",
"@types/passport-google-oauth20": "2.0.16",
"@typescript-eslint/eslint-plugin": "8.29.0",
@@ -207,7 +207,7 @@
"webpack-bundle-analyzer": "4.10.2"
},
"engines": {
- "node": ">=20"
+ "node": ">=22"
},
"prisma": {
"seed": "npx ts-node --compiler-options {\"module\":\"CommonJS\"} prisma/seed.ts"