From 9e74eec04d53675af43a6a62344562d94ff5cd89 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 29 May 2025 17:44:50 +0200 Subject: [PATCH 01/22] Feature/rename orders to activities in Tag database schema (#4783) * Rename orders to activities in Tag database schema * Update changelog --- CHANGELOG.md | 1 + apps/api/src/services/tag/tag.service.ts | 8 ++++---- prisma/schema.prisma | 10 +++++----- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4406ba060..f9b081a08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Renamed `orders` to `activities` in the `Tag` database schema - Improved the language localization for Dutch (`nl`) ## 2.164.0 - 2025-05-28 diff --git a/apps/api/src/services/tag/tag.service.ts b/apps/api/src/services/tag/tag.service.ts index 3d6bd3907..eb2d7bfef 100644 --- a/apps/api/src/services/tag/tag.service.ts +++ b/apps/api/src/services/tag/tag.service.ts @@ -52,7 +52,7 @@ export class TagService { include: { _count: { select: { - orders: { + activities: { where: { userId } @@ -79,7 +79,7 @@ export class TagService { id, name, userId, - isUsed: _count.orders > 0 + isUsed: _count.activities > 0 })); } @@ -87,7 +87,7 @@ export class TagService { const tagsWithOrderCount = await this.prismaService.tag.findMany({ include: { _count: { - select: { orders: true } + select: { activities: true } } } }); @@ -97,7 +97,7 @@ export class TagService { id, name, userId, - activityCount: _count.orders + activityCount: _count.activities }; }); } diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 6182ebfe4..dd3be8cef 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -233,11 +233,11 @@ model Subscription { } model Tag { - id String @id @default(uuid()) - name String - orders Order[] - userId String? - User User? @relation(fields: [userId], onDelete: Cascade, references: [id]) + activities Order[] + id String @id @default(uuid()) + name String + userId String? + User User? @relation(fields: [userId], onDelete: Cascade, references: [id]) @@unique([name, userId]) @@index([name]) From 5db5fd903e49c078251c9d6ed1aa9841b542a1af Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 29 May 2025 17:45:32 +0200 Subject: [PATCH 02/22] Feature/extend FAQ section by performance calculation method (#4773) * Extend FAQ by performance calculation method * Update changelog --- CHANGELOG.md | 4 ++++ .../app/pages/faq/overview/faq-overview-page.html | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f9b081a08..6c3b428c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Extended the content of the _General_ section by the performance calculation method on the Frequently Asked Questions (FAQ) page + ### Changed - Renamed `orders` to `activities` in the `Tag` database schema diff --git a/apps/client/src/app/pages/faq/overview/faq-overview-page.html b/apps/client/src/app/pages/faq/overview/faq-overview-page.html index f8fd62eb0..bc7f6ba37 100644 --- a/apps/client/src/app/pages/faq/overview/faq-overview-page.html +++ b/apps/client/src/app/pages/faq/overview/faq-overview-page.html @@ -40,6 +40,21 @@ here. + + + Which calculation method does Ghostfolio use for + performance? + + Ghostfolio uses the Return on Average Investment (ROAI) + calculation method based on the average amount of capital invested + over time. ROAI aims to provide a more insightful view of investment + performance than simpler approaches, especially when contributions are + made over time. + Can I use Ghostfolio anonymously? From 5fa97a9a4005761a1e44e0a7404de37ee18b324e Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 29 May 2025 17:45:59 +0200 Subject: [PATCH 03/22] Feature/upgrade big.js to version 7.0.1 (#4784) * Upgrade big.js to version 7.0.1 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c3b428c5..9babd5a6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Renamed `orders` to `activities` in the `Tag` database schema - Improved the language localization for Dutch (`nl`) +- Upgraded `big.js` from version `6.2.2` to `7.0.1` ## 2.164.0 - 2025-05-28 diff --git a/package-lock.json b/package-lock.json index 6dedf1606..38be1e11f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,7 +47,7 @@ "@simplewebauthn/server": "13.1.1", "@stripe/stripe-js": "5.4.0", "alphavantage": "2.2.0", - "big.js": "6.2.2", + "big.js": "7.0.1", "bootstrap": "4.6.2", "bull": "4.16.5", "chart.js": "4.4.9", @@ -15220,9 +15220,9 @@ } }, "node_modules/big.js": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.2.tgz", - "integrity": "sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-7.0.1.tgz", + "integrity": "sha512-iFgV784tD8kq4ccF1xtNMZnXeZzVuXWWM+ERFzKQjv+A5G9HC8CY3DuV45vgzFFcW+u2tIvmF95+AzWgs6BjCg==", "license": "MIT", "engines": { "node": "*" diff --git a/package.json b/package.json index 7b07b4c00..03fd45f35 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "@simplewebauthn/server": "13.1.1", "@stripe/stripe-js": "5.4.0", "alphavantage": "2.2.0", - "big.js": "6.2.2", + "big.js": "7.0.1", "bootstrap": "4.6.2", "bull": "4.16.5", "chart.js": "4.4.9", From 62e304490d2e60ed9c1f57be580e8320be50e411 Mon Sep 17 00:00:00 2001 From: Jakub Nowak Date: Thu, 29 May 2025 12:27:09 -0500 Subject: [PATCH 04/22] Feature/improve language localization for ES 20250529 (#4785) * Improve language localization for ES * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.es.xlf | 40 ++++++++++++------------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9babd5a6a..d54cb3f89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Renamed `orders` to `activities` in the `Tag` database schema - Improved the language localization for Dutch (`nl`) +- Improved the language localization for Spanish (`es`) - Upgraded `big.js` from version `6.2.2` to `7.0.1` ## 2.164.0 - 2025-05-28 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 01b51e793..95c2af93f 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -5008,7 +5008,7 @@ into minimalism - into minimalism + en el minimalismo apps/client/src/app/pages/landing/landing-page.html 299 @@ -5016,7 +5016,7 @@ caring about diversifying your financial resources - caring about diversifying your financial resources + preocuparse por diversificar tus recursos financieros apps/client/src/app/pages/landing/landing-page.html 303 @@ -5024,7 +5024,7 @@ interested in financial independence - interested in financial independence + interesado en la independencia financiera apps/client/src/app/pages/landing/landing-page.html 307 @@ -5032,7 +5032,7 @@ saying no to spreadsheets in - saying no to spreadsheets in + diciendo no a las hojas de cálculo en apps/client/src/app/pages/landing/landing-page.html 311 @@ -5040,7 +5040,7 @@ still reading this list - still reading this list + todavía leyendo esta lista apps/client/src/app/pages/landing/landing-page.html 314 @@ -5048,7 +5048,7 @@ Learn more about Ghostfolio - Learn more about Ghostfolio + Más información sobre Ghostfolio apps/client/src/app/pages/landing/landing-page.html 319 @@ -5056,7 +5056,7 @@ What our users are saying - What our users are saying + Lo que nuestros usuarios están diciendo apps/client/src/app/pages/landing/landing-page.html 327 @@ -5064,7 +5064,7 @@ Members from around the globe are using Ghostfolio Premium - Members from around the globe are using Ghostfolio Premium + Miembros de todo el mundo están usando Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html 366 @@ -5072,7 +5072,7 @@ How does Ghostfolio work? - How does Ghostfolio work? + ¿Cómo Ghostfolio work? apps/client/src/app/pages/landing/landing-page.html 383 @@ -5080,7 +5080,7 @@ Sign up anonymously* - Sign up anonymously* + Regístrate de forma anónima* apps/client/src/app/pages/landing/landing-page.html 392 @@ -5088,7 +5088,7 @@ * no e-mail address nor credit card required - * no e-mail address nor credit card required + * no se requiere dirección de correo electrónico ni tarjeta de crédito apps/client/src/app/pages/landing/landing-page.html 394 @@ -5096,7 +5096,7 @@ Add any of your historical transactions - Add any of your historical transactions + Agrega cualquiera de tus transacciones históricas apps/client/src/app/pages/landing/landing-page.html 405 @@ -5104,7 +5104,7 @@ Get valuable insights of your portfolio composition - Get valuable insights of your portfolio composition + Obtén información valiosa sobre la composición de tu portafolio apps/client/src/app/pages/landing/landing-page.html 417 @@ -5112,7 +5112,7 @@ Are you ready? - Are you ready? + ¿Estás listo? apps/client/src/app/pages/landing/landing-page.html 431 @@ -5120,7 +5120,7 @@ Live Demo - Live Demo + Demostración en vivo apps/client/src/app/pages/landing/landing-page.html 49 @@ -5132,7 +5132,7 @@ Get the full picture of your personal finances across multiple platforms. - Get the full picture of your personal finances across multiple platforms. + Obtén una visión completa de tus finanzas personales en múltiples plataformas. apps/client/src/app/pages/landing/landing-page.html 242 @@ -5140,7 +5140,7 @@ Get started in only 3 steps - Get started in only 3 steps + Comienza en solo 3 pasos apps/client/src/app/pages/landing/landing-page.html 386 @@ -5229,7 +5229,7 @@ This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + Esta página de resumen presenta una colección seleccionada de herramientas de finanzas personales, comparadas con la alternativa de código abierto Ghostfolio. Si valoras la transparencia, la privacidad de los datos y la colaboración comunitaria, Ghostfolio ofrece una excelente oportunidad para tomar el control de tu gestión financiera. apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 8 @@ -5237,7 +5237,7 @@ Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Explora los siguientes enlaces para comparar una variedad de herramientas de finanzas personales con Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 16 @@ -5245,7 +5245,7 @@ Open Source Alternative to - Alternativa de software libre a + Alternativa de software libre a apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 42 From 824985b4645e343a486b3fd2468a9d5b6c3478ea Mon Sep 17 00:00:00 2001 From: Hala Jeet Date: Fri, 30 May 2025 12:24:29 +0600 Subject: [PATCH 05/22] Feature/improve language localization for PL 20250529 (#4786) * Improve language localization for PL * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.pl.xlf | 18 +++++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d54cb3f89..770c3d8bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Renamed `orders` to `activities` in the `Tag` database schema - Improved the language localization for Dutch (`nl`) +- Improved the language localization for Polish (`pl`) - Improved the language localization for Spanish (`es`) - Upgraded `big.js` from version `6.2.2` to `7.0.1` diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 3d5c28be9..df975a108 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -6170,7 +6170,7 @@ {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {działalność} other {działalność}} apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 14 @@ -7204,7 +7204,7 @@ Default Market Price - Default Market Price + Domyślna cena rynkowa apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 386 @@ -7212,7 +7212,7 @@ Mode - Mode + Tryb apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 423 @@ -7220,7 +7220,7 @@ Selector - Selector + Selektor apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 439 @@ -7228,7 +7228,7 @@ HTTP Request Headers - HTTP Request Headers + Nagłówki żądań HTTP apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 399 @@ -7236,7 +7236,7 @@ end of day - end of day + koniec dnia apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 138 @@ -7244,7 +7244,7 @@ real-time - real-time + w czasie rzeczywistym apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 142 @@ -7268,7 +7268,7 @@ Market Data - Market Data + Dane rynkowe apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 374 @@ -7485,7 +7485,7 @@ Gather Recent Historical Market Data - Gather Recent Historical Market Data + Zbierz najnowsze historyczne dane rynkowe apps/client/src/app/components/admin-market-data/admin-market-data.html 226 From 3bfbb3119115cd4386cdb8744052a94a11f185f5 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 30 May 2025 14:25:00 +0200 Subject: [PATCH 06/22] Feature/upgrade ng-extract-i18n-merge to version 2.15.0 (#4787) * Upgrade ng-extract-i18n-merge to version 2.15.0 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 18 +++++++++--------- package.json | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 770c3d8bb..ab89a5aad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for Polish (`pl`) - Improved the language localization for Spanish (`es`) - Upgraded `big.js` from version `6.2.2` to `7.0.1` +- Upgraded `ng-extract-i18n-merge` from version `2.14.3` to `2.15.0` ## 2.164.0 - 2025-05-28 diff --git a/package-lock.json b/package-lock.json index 38be1e11f..3a920234a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -72,7 +72,7 @@ "lodash": "4.17.21", "marked": "15.0.4", "ms": "3.0.0-canary.1", - "ng-extract-i18n-merge": "2.14.3", + "ng-extract-i18n-merge": "2.15.0", "ngx-device-detector": "9.0.0", "ngx-markdown": "19.0.0", "ngx-skeleton-loader": "11.0.0", @@ -27037,22 +27037,22 @@ "license": "MIT" }, "node_modules/ng-extract-i18n-merge": { - "version": "2.14.3", - "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.14.3.tgz", - "integrity": "sha512-5zYuS/divhP2Tk0fizk7D8q5TyhwRjyj/DgaEgurrRwkWfIZFDUGc98eTziR3vIMsb9/sgbUSyeA+8LllCkKyA==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.15.0.tgz", + "integrity": "sha512-43ew7btSrRJ34BHfRkjvvW8wXxfyFiM5rbFU22f/ZuEK1wpClV8lNaF09CYixY1+ycMpKLLyW+olj1Nj3kvs4g==", "license": "MIT", "dependencies": { - "@angular-devkit/architect": "^0.1301.0 || ^0.1401.0 || ^0.1501.0 || ^0.1601.0 || ^0.1700.0 || ^0.1800.0 || ^0.1900.0", - "@angular-devkit/core": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "@angular-devkit/schematics": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "@schematics/angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "@angular-devkit/architect": "^0.1301.0 || ^0.1401.0 || ^0.1501.0 || ^0.1601.0 || ^0.1700.0 || ^0.1800.0 || ^0.1900.0 || ^0.2000.0 || 0.2000.0-rc.2", + "@angular-devkit/core": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || 20.0.0-rc.2", + "@angular-devkit/schematics": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || 20.0.0-rc.2", + "@schematics/angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || 20.0.0-rc.2", "xmldoc": "^1.1.3" }, "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "@angular-devkit/build-angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + "@angular-devkit/build-angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || 20.0.0-rc.2" } }, "node_modules/ng-extract-i18n-merge/node_modules/@angular-devkit/architect": { diff --git a/package.json b/package.json index 03fd45f35..84c12ab76 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "lodash": "4.17.21", "marked": "15.0.4", "ms": "3.0.0-canary.1", - "ng-extract-i18n-merge": "2.14.3", + "ng-extract-i18n-merge": "2.15.0", "ngx-device-detector": "9.0.0", "ngx-markdown": "19.0.0", "ngx-skeleton-loader": "11.0.0", From daedfd6ad63f2c7b4b3339180bd28cf913338264 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 30 May 2025 19:01:06 +0200 Subject: [PATCH 07/22] Feature/various style improvements (#4788) * Various style improvements --- .../src/app/components/home-market/home-market.html | 6 ++++-- apps/client/src/app/pages/webauthn/webauthn-page.html | 8 +++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/apps/client/src/app/components/home-market/home-market.html b/apps/client/src/app/components/home-market/home-market.html index 189c87c8f..a9bdf4e68 100644 --- a/apps/client/src/app/components/home-market/home-market.html +++ b/apps/client/src/app/components/home-market/home-market.html @@ -37,8 +37,10 @@ [user]="user" /> @if (benchmarks?.length > 0) { -
- +
+ Calculations are based on delayed market data and may not be displayed in real-time. diff --git a/apps/client/src/app/pages/webauthn/webauthn-page.html b/apps/client/src/app/pages/webauthn/webauthn-page.html index e2b0cdd3a..308a7096b 100644 --- a/apps/client/src/app/pages/webauthn/webauthn-page.html +++ b/apps/client/src/app/pages/webauthn/webauthn-page.html @@ -19,15 +19,17 @@ Oops, authentication has failed. -
or
-
From c6e38cd4ac176fc29442228dadf5196c7a287e6e Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 30 May 2025 19:03:51 +0200 Subject: [PATCH 08/22] Feature/refresh cryptocurrencies list 20250529 (#4790) * Update cryptocurrencies.json * Update changelog --- CHANGELOG.md | 1 + .../cryptocurrencies/cryptocurrencies.json | 736 +++++++++++++----- 2 files changed, 562 insertions(+), 175 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab89a5aad..119541163 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Renamed `orders` to `activities` in the `Tag` database schema +- Refreshed the cryptocurrencies list - Improved the language localization for Dutch (`nl`) - Improved the language localization for Polish (`pl`) - Improved the language localization for Spanish (`es`) diff --git a/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json b/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json index 475cc6217..d7dce485a 100644 --- a/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json +++ b/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json @@ -1,4 +1,5 @@ { + "1": "just buy $1 worth of this coin", "3": "The Three Musketeers", "7": "Lucky7", "32": "Project 32", @@ -64,6 +65,7 @@ "1MIL": "1MillionNFTs", "1MT": "1Move", "1NFT": "1NFT", + "1ON8": "Little Dragon", "1OZT": "Tala", "1PECO": "1peco", "1SG": "1SG", @@ -73,6 +75,7 @@ "1UP": "Uptrennd", "1WO": "1World", "2022M": "2022MOON", + "20EX": "20ex", "21BTC": "21.co Wrapped BTC", "21X": "21X", "2BACCO": "2BACCO Coin", @@ -114,6 +117,7 @@ "4CHAN": "4Chan", "4CZ": "FourCZ", "4DOGE": "4DOGE", + "4EVER": "4EVERLAND", "4JNET": "4JNET", "4MW": "For Meta World", "4P": "4P FOUR", @@ -138,7 +142,7 @@ "9DOGS": "NINE DOGS", "9GAG": "9GAG", "9MM": "Shigure UI", - "A": "Alpha Token", + "A": "Vaulta", "A1INCH": "1inch (Arbitrum Bridge)", "A2A": "A2A", "A2I": "Arcana AI", @@ -168,6 +172,7 @@ "AAVEGOTCHIFOMO": "Aavegotchi FOMO", "AAX": "Academic Labs", "AAZ": "ATLAZ", + "AB": "Newton", "AB1INCH": "1inch (Avalanche Bride)", "ABA": "EcoBall", "ABBC": "ABBC Coin", @@ -200,6 +205,7 @@ "ABUSDC": "USD Coin (Arbitrum Bridge)", "ABX": "Arbidex", "ABY": "ArtByte", + "ABYS": "Trinity Of The Fabled", "ABYSS": "Abyss Finance", "AC": "Asia Coin", "AC3": "AC3", @@ -228,7 +234,7 @@ "ACN": "AvonCoin", "ACOIN": "ACoin", "ACOLYT": "Acolyte by Virtuals", - "ACP": "Anarchists Prime", + "ACP": "Arena Of Faith", "ACPT": "Crypto Accept", "ACQ": "Acquire.Fi", "ACRE": "Arable Protocol", @@ -306,6 +312,7 @@ "AERO": "Aerodrome Finance", "AEROBUD": "Aerobud", "AEROCOIN": "Aero Coin", + "AEROME": "AeroMe", "AEROT": "AEROTYME", "AES": "Artis Aes Evolution", "AET": "AfterEther", @@ -338,8 +345,9 @@ "AFYON": "Afyonspor Fan Token", "AG": "AGAME", "AG8": "ATROMG8", - "AGA": "AGA Token", + "AGA": "Agora DEX Token", "AGATA": "Agatech", + "AGATOKEN": "AGA Token", "AGB": "Apes Go Bananas", "AGC": "Argocoin", "AGEN": "Agent Krasnov", @@ -357,6 +365,7 @@ "AGIV1": "SingularityNET v1", "AGIX": "SingularityNET", "AGIXBT": "AGIXBT by Virtuals", + "AGIXT": "AGiXT", "AGLA": "Angola", "AGLD": "Adventure Gold", "AGM": "Argoneum", @@ -366,6 +375,7 @@ "AGON": "Arabian Dragon", "AGOV": "Answer Governance", "AGPC": "AGPC", + "AGRI": "AgriDex Token", "AGRO": "Bit Agro", "AGRS": "Agoras Token", "AGS": "Aegis", @@ -383,7 +393,8 @@ "AI23T": "23 Turtles", "AI69SAKURA": "Sakura", "AIA": "AIA Chain", - "AIAGENT": "Aiagent.app", + "AIAGENT": "AI Agents", + "AIAGENTAPP": "Aiagent.app", "AIAI": "All In AI", "AIAKITA": "AiAkita", "AIAT": "AI Analysis Token", @@ -433,8 +444,9 @@ "AIMONICA": "Aimonica Brands", "AIMR": "MeromAI", "AIMS": "HighCastle Token", - "AIMX": "Aimedis", + "AIMX": "MindMatrix", "AIMXV1": "Aimedis v1", + "AIMXV2": "Aimedis", "AIN": "AI Network", "AINA": "Ainastasia", "AINN": "AINN", @@ -452,6 +464,7 @@ "AIPG": "AI Power Grid", "AIPIN": "AI PIN", "AIPO": "Aipocalypto", + "AIPUMP": "aiPump", "AIR": "Altair", "AIRB": "BillionAir", "AIRBTC": "AIRBTC", @@ -465,10 +478,11 @@ "AIRTNT": "Tenti", "AIRTOKEN": "AirToken", "AIRX": "Aircoins", - "AIS": "AISwap", + "AIS": "AISociety", "AISCII": "AISCII", "AISHIB": "ARBSHIB", "AIST": "Artificial intelligence staking token", + "AISW": "AISwap", "AIT": "AIT Protocol", "AITECH": "Artificial Intelligence Utility Token", "AITEK": "AI Technology", @@ -487,6 +501,7 @@ "AIWALLET": "AiWallet Token", "AIWS": "AIWS", "AIX": "Aigang", + "AIX9": "AthenaX9", "AIXBT": "aixbt by Virtuals", "AIXERC": "AI-X", "AIXT": "AIXTerminal", @@ -497,6 +512,7 @@ "AKAL": "AKA Liberty", "AKASHA": "Akasha by Bloomverse", "AKI": "Aki Network", + "AKIO": "Akio", "AKIT": "Akita Inu", "AKITA": "Akita Inu", "AKITAI": "AKITA INU", @@ -509,6 +525,7 @@ "AKT": "Akash Network", "AKTIO": "AKTIO Coin", "AKUMA": "Akuma Inu", + "AKV": "Akiverse Governance", "AL": "ArchLoot", "ALA": "Alanyaspor Fan Token", "ALAN": "Alan the Alien", @@ -558,6 +575,7 @@ "ALIS": "ALISmedia", "ALIT": "Alitas", "ALITA": "Alita Network", + "ALITATOKEN": "Alita Token", "ALIX": "AlinX", "ALKI": "Alkimi", "ALLBI": "ALL BEST ICO", @@ -586,6 +604,7 @@ "ALPHAF": "Alpha Fi", "ALPHAG": "Alpha Gardeners", "ALPHAPETTO": "Alpha Petto Shells", + "ALPHAPLATFORM": "Alpha Token", "ALPHAS": "Alpha Shards", "ALPHR": "Alphr", "ALPINE": "Alpine F1 Team Fan Token", @@ -608,7 +627,7 @@ "ALWAYS": "Always Evolving", "ALX": "ALAX", "ALY": "Ally", - "AM": "AeroMe", + "AM": "Aston Martin Cognizant", "AMA": "MrWeb", "AMADEUS": "AMADEUS", "AMAL": "AMAL", @@ -620,6 +639,7 @@ "AMBO": "Sheertopia", "AMBR": "Ambra", "AMBT": "AMBT Token", + "AMC": "AI Meta Coin", "AMDC": "Allmedi Coin", "AMDG": "AMDG", "AME": "Amepay", @@ -659,10 +679,12 @@ "ANAL": "AnalCoin", "ANALOS": "analoS", "ANALY": "Analysoor", + "ANARCHISTS": "Anarchists Prime", "ANAT": "Anatolia Token", "ANB": "Angryb", "ANC": "Anchor Protocol", "ANCHOR": "AnchorSwap", + "ANCIENTKING": "Ancient Kingdom", "ANCP": "Anacrypt", "ANCT": "Anchor", "AND": "AndromedaCoin", @@ -717,6 +739,7 @@ "ANTEX": "Antex", "ANTI": "Anti Bitcoin", "ANTIS": "Antis Inu", + "ANTMONS": "Antmons", "ANTS": "ANTS Reloaded", "ANTT": "Antara Token", "ANUS": "URANUS", @@ -740,7 +763,7 @@ "APCG": "ALLPAYCOIN", "APD": "Aptopad", "APE": "ApeCoin", - "APED": "Baddest Alpha Ape Bundle", + "APED": "Aped", "APEDEV": "The dev is an Ape", "APEFUN": "Ape", "APEMAN": "APEMAN", @@ -793,6 +816,7 @@ "APYS": "APYSwap", "APZ": "Alprockz", "AQA": " AQA Token", + "AQDC": "AQDC", "AQT": "Alpha Quark Token", "AQTIS": "AQTIS", "AQU": "aQuest", @@ -809,7 +833,7 @@ "ARATA": "Arata", "ARAW": "Araw", "ARB": "Arbitrum", - "ARBI": "Arbi", + "ARBI": "Arbipad", "ARBIT": "Arbit Coin", "ARBP": "ARB Protocol", "ARBS": "Arbswap", @@ -827,6 +851,7 @@ "ARCAS": "Arcas", "ARCH": "Archway", "ARCHA": "ArchAngel Token", + "ARCHAI": "ArchAI", "ARCHCOIN": "ArchCoin", "ARCHE": "Archean", "ARCHIVE": "Chainback", @@ -883,11 +908,13 @@ "ARQ": "ArQmA", "ARQX": "ARQx AI", "ARR": "ARROUND", + "ARRI": "Arris", "ARRO": "Arro Social", + "ARROW": "Arrow Token", "ARRR": "Pirate Chain", "ARSL": "Aquarius Loan", "ARSW": "ArthSwap", - "ART": "Maecenas", + "ART": "Genify ART", "ARTC": "Artcoin", "ARTDECO": "ARTDECO", "ARTDRAW": "ArtDraw", @@ -939,6 +966,7 @@ "ASKAI": "ASKAI", "ASKO": "Asko", "ASM": "Assemble Protocol", + "ASMAT": "AsMatch", "ASMO": "AS Monaco Fan Token", "ASN": "Ascension Coin", "ASNT": "Assent Protocol", @@ -957,6 +985,7 @@ "ASTA": "ASTA", "ASTO": "Altered State Token", "ASTON": "Aston", + "ASTONV": "Aston Villa Fan Token", "ASTR": "Astar", "ASTRA": "Astra Protocol", "ASTRADAO": "Astra DAO", @@ -1003,6 +1032,7 @@ "ATL": "ATLANT", "ATLA": "Atleta Network", "ATLAS": "Star Atlas", + "ATLASD": "Atlas DEX", "ATLX": "Atlantis Loans Polygon", "ATM": "Atletico de Madrid Fan Token", "ATMA": "ATMA", @@ -1030,7 +1060,7 @@ "ATROFA": "Atrofarm", "ATRS": "Attarius Network", "ATRV1": "Artrade v1", - "ATS": "Atlas DEX", + "ATS": "Alltoscan", "ATT": "Attila", "ATTR": "Attrace", "ATX": "ArtexCoin", @@ -1066,10 +1096,12 @@ "AUSDT": "aUSDT", "AUT": "Autoria", "AUTHORSHIP": "Authorship", - "AUTISM": "AUTISM", + "AUTISM": "autism", + "AUTISMTOKEN": "AUTISM", "AUTO": "Auto", "AUTOMATIC": "Automatic Treasury Machine", "AUTONO": "Autonomi", + "AUTOS": "CryptoAutos", "AUTUMN": "Autumn", "AUVERSE": "AuroraVerse", "AUX": "Auxilium", @@ -1092,6 +1124,7 @@ "AVAXAI": "AIvalanche DeFAI Agents", "AVAXIOU": "Avalanche IOU", "AVB": "Autonomous Virtual Beings", + "AVC": "AVC", "AVDO": "AvocadoCoin", "AVE": "Avesta", "AVEN": "Aventis AI", @@ -1102,7 +1135,7 @@ "AVI": "Aviator", "AVINOC": "AVINOC", "AVIVE": "Avive World", - "AVL": "Aston Villa Fan Token", + "AVL": "AVL", "AVM": "AVM (Atomicals)", "AVME": "AVME", "AVN": "AVNRich", @@ -1114,6 +1147,7 @@ "AVTM": "Aventis Metaverse", "AVXL": "Avaxlauncher", "AVXT": "Avaxtars Token", + "AWARDCOIN": "Award", "AWARE": "ChainAware.ai", "AWAX": "AWAX", "AWC": "Atomic Wallet Coin", @@ -1123,9 +1157,9 @@ "AWO": "AiWork", "AWORK": "Aworker", "AWP": "Ansem Wif Photographer", - "AWR": "Award", + "AWR": "All Will Retire", "AWS": "AurusSILVER", - "AWT": "Airdrop World", + "AWT": "Abyss World", "AWX": "AurusX", "AX": "AlphaX", "AXC": "AXIA Coin", @@ -1189,13 +1223,14 @@ "BAB": "Babacoin", "BABI": "Babylons", "BABL": "Babylon Finance", - "BABY": "BabySwap", + "BABY": "Babylon", "BABYANDY": "Baby Andy", "BABYB": "Baby Bali", "BABYBI": "Baby Bitcoin", "BABYBINANCE": "BABYBINANCE", "BABYBITC": "BabyBitcoin", "BABYBNB": "BabyBNB", + "BABYBNBBABY": "BabyBNB", "BABYBNBTIGER": "BabyBNBTiger", "BABYBO": "BabyBonk", "BABYBOB": "Baby Bob", @@ -1242,7 +1277,6 @@ "BABYKEKIUS": "Baby Kekius Maximus", "BABYKITTY": "BabyKitty", "BABYKOMA": "Baby Koma", - "BABYLON": "Babylon", "BABYLONG": "Baby Long", "BABYM": "BabyMAGA", "BABYMAGA": "Baby Maga", @@ -1268,7 +1302,8 @@ "BABYRWA": "BabyRWA", "BABYS": "Baby Slerf", "BABYSAITAMA": "Baby Saitama", - "BABYSHARK": "Baby Shark", + "BABYSHARK": "Baby Shark Meme", + "BABYSHARKBSC": "Baby Shark", "BABYSHIB": "Baby Shiba Inu", "BABYSHIBAINU": "Baby Shiba Inu", "BABYSHIRO": "Baby Shiro Neko", @@ -1277,6 +1312,7 @@ "BABYSNAKE": "Baby Snake BSC", "BABYSOL": "Baby Solana", "BABYSORA": "Baby Sora", + "BABYSWAP": "BabySwap", "BABYSWEEP": "BabySweep", "BABYT": "BABYTRUMP", "BABYTK": "Baby Tiger King", @@ -1297,7 +1333,9 @@ "BADAI": "BAD Coin", "BADC": "BADCAT", "BADCAT": "Andy’s Alter Ego", + "BADDEST": "Baddest Alpha Ape Bundle", "BADGER": "Badger DAO", + "BADM": "Badmad Robots", "BAFC": "BabyApeFunClub", "BAG": "Bag", "BAGS": "Basis Gold Share", @@ -1320,7 +1358,8 @@ "BALANCE": "Balance AI", "BALD": "Bald", "BALIN": "Balin Bank", - "BALL": "Game 5 BALL", + "BALKANCOIN": "Balkancoin", + "BALL": "BitBall", "BALLZ": "Wolf Wif", "BALN": "Balanced", "BALPHA": "bAlpha", @@ -1343,10 +1382,12 @@ "BAND": "Band Protocol", "BANDEX": "Banana Index", "BANDIT": "Bandit on Base", + "BANDO": "Bandot", "BANG": "BANG", "BANGY": "BANGY", "BANK": "Float Protocol", "BANKA": "Bank AI", + "BANKBRC": "BANK Ordinals", "BANKC": "Bankcoin", "BANKER": "BankerCoinAda", "BANKETH": "BankEth", @@ -1374,6 +1415,7 @@ "BARY": "Bary", "BAS": "Basis Share", "BASEAI": "BaseAI", + "BASEBEAR": "BBQ", "BASECAT": "BASE CAT", "BASECOIN": "BASECOIN", "BASED": "Based Money", @@ -1398,11 +1440,13 @@ "BASHOS": "Bashoswap", "BASIC": "BASIC", "BASID": "Basid Coin", + "BASIL": "Basilisk", "BASIS": "Basis", "BASK": "BasketDAO", "BAST": "Bast", "BASTET": "Bastet Goddess", "BAT": "Basic Attention Token", + "BATCH": "BATCH Token", "BATH": "Battle Hero", "BATMAN": "BATMAN", "BATO": "Batonex Token", @@ -1445,7 +1489,7 @@ "BBROCCOLI": "Baby Broccoli", "BBS": "BBSCoin", "BBSOL": "Bybit Staked SOL", - "BBT": "BitBook", + "BBT": "BabyBoomToken", "BBTC": "Binance Wrapped BTC", "BBTF": "Block Buster Tech Inc", "BBUSD": "BounceBit USD", @@ -1487,6 +1531,7 @@ "BCOINM": "Bomb Crypto (MATIC)", "BCOQ": "BLACK COQINU", "BCP": "BitcashPay", + "BCPAY": "Bitcashpay", "BCPT": "BlockMason Credit Protocol", "BCR": "BitCredit", "BCRO": "Bonded Cronos", @@ -1508,8 +1553,9 @@ "BDCA": "BitDCA", "BDCC": "BDCC COIN", "BDCLBSC": "BorderCollieBSC", - "BDG": "BitDegree", + "BDG": "Beyond Gaming", "BDID": "BDID", + "BDIN": "BendDAO BDIN", "BDL": "Bitdeal", "BDOG": "Bulldog Token", "BDOGITO": "BullDogito", @@ -1529,7 +1575,8 @@ "BEAM": "Beam", "BEAMMW": "Beam", "BEAN": "Bean", - "BEANS": "Moonbeans", + "BEANS": "SUNBEANS (BEANS)", + "BEAR": "Bear Inu", "BEARIN": "Bear in Bathrobe", "BEAST": "MrBeast", "BEAT": "BEAT Token", @@ -1537,19 +1584,24 @@ "BEATLES": "JohnLennonC0IN", "BEATS": "Sol Beats", "BEBE": "BEBE", + "BEBEETH": "BEBE", + "BEBEV1": "BEBE v1", "BEC": "Betherchip", "BECH": "Beauty Chain", "BECN": "Beacon", "BECO": "BecoSwap Token", "BECX": "BETHEL", "BED": "Bankless BED Index", + "BEDROCK": "Bedrock", "BEE": "Herbee", "BEEF": "PepeBull", "BEEG": "Beeg Blue Whale", "BEENZ": "BEENZ", "BEEP": "BEEP", + "BEEPBOOP": "Boop", "BEER": "BEERCOIN", "BEERUSCAT": "BeerusCat", + "BEES": "BEEs", "BEET": "BEETroot", "BEETLE": "Beetle Coin", "BEETOKEN": "Bee Token", @@ -1673,7 +1725,8 @@ "BHO": "Bholdus Token", "BHP": "Blockchain of Hash Power", "BHPC": "BHPCash", - "BIAO": "Biaocoin", + "BIAO": "BIAO", + "BIAOCOIN": "Biaocoin", "BIB": "BIB Token", "BIBI": "BIBI", "BIBI2025": "Bibi", @@ -1746,10 +1799,11 @@ "BIPX": "Bispex", "BIR": "Birake", "BIRB": "Birb", - "BIRD": "Bird.Money", + "BIRD": "BIRD", "BIRDCHAIN": "Birdchain", "BIRDD": "BIRD DOG", "BIRDDOG": "Bird Dog", + "BIRDMONEY": "Bird.Money", "BIRDO": "Bird Dog", "BIS": "Bismuth", "BISKIT": "Biskit Protocol", @@ -1761,12 +1815,15 @@ "BITASEAN": "BitAsean", "BITB": "BeanCash", "BITBEDR": "Bitcoin EDenRich", + "BITBO": "BitBook", + "BITBOARD": "Bitboard", "BITBOOST": "BitBoost", "BITBULL": "Bitbull", "BITBURN": "Bitburn", "BITC": "BitCash", "BITCAR": "BitCar", "BITCAT": "Bitcat", + "BITCATONSOL": "Bitcat", "BITCCA": "Bitcci Cash", "BITCI": "Bitcicoin", "BITCM": "Bitcomo", @@ -1778,6 +1835,7 @@ "BITCOINV": "BitcoinV", "BITCONNECT": "BitConnect Coin", "BITCRATIC": "Bitcratic Token", + "BITDEGREE": "BitDegree", "BITE": "Bitether", "BITF": "Bit Financial", "BITFLIP": "BitFlip", @@ -1799,6 +1857,7 @@ "BITRUE": "Bitrue Coin", "BITS": "BitstarCoin", "BITSD": "Bits Digit", + "BITSEEDS": "BitSeeds", "BITSERIAL": "BitSerial", "BITSILVER": "bitSilver", "BITSPACE": "Bitspace", @@ -1826,7 +1885,7 @@ "BJ": "Blocjerk", "BJK": "Beşiktaş", "BKBT": "BeeKan", - "BKC": "Balkancoin", + "BKC": "BKC Token", "BKING": "King Arthur", "BKK": "BKEX Token", "BKN": "Brickken", @@ -1843,12 +1902,14 @@ "BLACK": "BLACKHOLE PROTOCOL", "BLACKD": "Blackder AI", "BLACKDRAGON": "Black Dragon", + "BLACKP": "BlackPool Token", "BLACKR": "BLACK ROCK", "BLACKROCK": "BlackRock", "BLACKSALE": "Black Sale", "BLACKST": "Black Stallion", "BLACKSWAN": "BlackSwan AI", - "BLADE": "BladeWarrior", + "BLADE": "BladeGames", + "BLADEW": "BladeWarrior", "BLAKEBTC": "BlakeBitcoin", "BLANK": "Blank Token", "BLAS": "BlakeStar", @@ -1856,7 +1917,8 @@ "BLASTA": "BlastAI", "BLASTUP": "BlastUP", "BLAUNCH": "B-LAUNCH", - "BLAZE": "Blaze", + "BLAZE": "StoryFire", + "BLAZECOIN": "Blaze", "BLAZEX": "BlazeX", "BLAZR": "BlazerCoin", "BLBY": "Badluckbaby", @@ -1892,10 +1954,13 @@ "BLOCK": "Blockasset", "BLOCKB": "Block Browser", "BLOCKF": "Block Farm Club", + "BLOCKG": "BlockGames", "BLOCKIFY": "Blockify.Games", + "BLOCKMAX": "BLOCKMAX", "BLOCKN": "BlockNet", "BLOCKPAY": "BlockPay", "BLOCKS": "BLOCKS", + "BLOCKSSPACE": "Blocks Space", "BLOCKSTAMP": "BlockStamp", "BLOCKT": "Blocktools", "BLOCKW": "Blockwise", @@ -1912,7 +1977,7 @@ "BLOXT": "Blox Token", "BLP": "BullPerks", "BLRY": "BillaryCoin", - "BLS": "Blocks Space", + "BLS": "BloodLoop", "BLST": "Crypto Legions Bloodstone", "BLT": "Blocto Token", "BLTC": "BABYLTC", @@ -2092,12 +2157,13 @@ "BOLTT": "BolttCoin", "BOM": "Book Of Matt Furie", "BOMA": "Book of Maga", - "BOMB": "BOMB", + "BOMB": "LollyBomb", "BOMBC": "BombCoin", "BOMBLOONG": "Bombloong", "BOMBM": "Bomb Money", "BOMBO": "BOMBO", "BOMBS": "Bomb Shelter Inu", + "BOMBTOKEN": "BOMB", "BOME": "BOOK OF MEME", "BOME2": "Book of Meme 2.0", "BOMEDOGE": "BOOK OF DOGE MEMES", @@ -2114,6 +2180,7 @@ "BONDLYV1": "Bondly Finance", "BONDX": "BondX", "BONE": "Bone ShibaSwap", + "BONEBONE": "Bone", "BONES": "Moonshots Farm", "BONESCOIN": "BonesCoin", "BONESV1": "Squirrel Finance", @@ -2155,7 +2222,7 @@ "BOOMDAO": "BOOM DAO", "BOOMER": "Boomer", "BOONS": "BOONSCoin", - "BOOP": "Boop", + "BOOP": "BOOP", "BOOS": "Boost Trump Campaign", "BOOST": "PodFast", "BOOSTCO": "Boost", @@ -2236,7 +2303,7 @@ "BPRO": "BitCloud Pro", "BPS": "BitcoinPoS", "BPSHIB": "Binance-Peg Shiba Inu (Binance Bridge)", - "BPT": "BlackPool Token", + "BPT": "Best Patent Token", "BPTC": "Business Platform Tomato Coin", "BPUNI": "Binance-Peg Uniswap Protocol Token (Binance Bridge)", "BPUSDC": "Binance-Peg USD Coin (Binance Bridge)", @@ -2397,7 +2464,7 @@ "BSW": "Biswap", "BSWAP": "BaseSwap", "BSWT": "BaySwap", - "BSX": "Basilisk", + "BSX": "BSX", "BSY": "Bestay", "BSYS": "BSYS", "BT": "BT.Finance", @@ -2524,6 +2591,7 @@ "BUBV1": "BUBCAT v1", "BUC": "Beau Cat", "BUCK": "Coinbuck", + "BUCKAZOIDS": "Buckazoids", "BUCKS": "SwagBucks", "BUCKY": "Bucky", "BUD": "Buddy", @@ -2606,7 +2674,8 @@ "BUY": "Burency", "BUYI": "Buying.com", "BUYT": "Buy the DIP", - "BUZZ": "BuzzCoin", + "BUZZ": "Hive AI", + "BUZZCOIN": "BuzzCoin", "BV3A": "Buccaneer V3 Arbitrum", "BVC": "BeaverCoin", "BVM": "BVM", @@ -2644,6 +2713,7 @@ "BYB": "BiorBank", "BYC": "ByteCent", "BYG": "Black Eye Galaxy", + "BYIN": "BYIN", "BYT": "ByteAI", "BYTE": "Byte", "BYTES": "Neo Tokyo", @@ -2701,8 +2771,9 @@ "CAKEMOON": "CakeMoon", "CAKESWAP": "CakeSwap", "CAKEW": "CakeWSwap", - "CAL": "Calcium", + "CAL": "FitBurn", "CALC": "CaliphCoin", + "CALCI": "Calcium", "CALI": "CaliCoin", "CALL": "Global Crypto Alliance", "CALLS": "OnlyCalls by Virtuals", @@ -2717,7 +2788,8 @@ "CAN": "Channels", "CANCER": "Cancer", "CAND": "Canary Dollar", - "CANDLE": "Candle Cat", + "CANDLE": "Candle TV", + "CANDLECAT": "Candle Cat", "CANDY": "UnicornGo Candy", "CANDYLAD": "Candylad", "CANN": "CannabisCoin", @@ -2738,15 +2810,17 @@ "CAPTAINPLANET": "Captain Planet", "CAPY": "Capybara", "CAPYBARA": "Capybara", - "CAR": "CarBlock", + "CAR": "Central African Republic Meme", "CARAT": "Carats Token", + "CARBLOCK": "CarBlock", "CARBO": "CleanCarbon", "CARBON": "Carboncoin", "CARBONGEMS": "Carbon GEMS", "CARD": "Cardstack", "CARDS": "Cardstarter", "CARDSWAP": "CardSwap", - "CARE": "Carebit", + "CARE": "CareCoin", + "CAREBIT": "Carebit", "CARES": "CareCoin", "CARL": "Carl", "CARLO": "Carlo", @@ -2767,6 +2841,7 @@ "CASINU": "Casinu Inu", "CASIO": "CasinoXMetaverse", "CASPER": "Casper DeFi", + "CASPERTOKEN": "Casper Token", "CAST": "Castello Coin", "CASTLE": "bitCastle", "CAT": "Simon's Cat", @@ -2787,6 +2862,7 @@ "CATCOINV2": "CatCoin Cash", "CATDOG": "Cat-Dog", "CATDOGE": "CAT DOGE", + "CATE": "Cate on ETH", "CATEC": "Cate Coin", "CATECOIN": "CateCoin", "CATELON": "CatElonMars", @@ -2796,6 +2872,7 @@ "CATGAME": "Cookie Cat Game", "CATGIRL": "Catgirl", "CATGOKU": "Catgoku", + "CATGOLD": "Cat Gold Miner", "CATGPT": "CatGPT", "CATHAT": "catwifhat", "CATHEON": "Catheon Gaming", @@ -2809,12 +2886,13 @@ "CATO": "CATO", "CATPAY": "CATpay", "CATPEPE": "CAT PEPE", - "CATS": "CatCoin Token", + "CATS": "Cats", "CATSC": "Catscoin", "CATSHIRA": "Shira Cat", "CATSO": "Cats Of Sol", "CATSON": "Catson", "CATSV1": "CatCoin Token v1", + "CATSV2": "CatCoin Token", "CATSY": "CAT SYLVESTER", "CATT": "Catex", "CATTO": "Cat Token", @@ -2904,6 +2982,7 @@ "CDAI": "Compound Dai", "CDBIO": "CDbio", "CDCETH": "Crypto.com Staked ETH", + "CDCSOL": "Crypto.com Staked SOL", "CDEX": "Cryptodex", "CDL": "CoinDeal Token", "CDN": "Canada eCoin", @@ -2922,6 +3001,7 @@ "CEICAT": "CEILING CAT", "CEJI": "Ceji", "CEL": "Celsius Network", + "CELA": "Cellula Token", "CELEB": "CELEBPLUS", "CELL": "Cellframe", "CELO": "Celo", @@ -3151,6 +3231,7 @@ "CIRRUS": "Cirrus", "CIRUS": "Cirus", "CIRX": "Circular Protocol", + "CITADAIL": "Griffain New Hedge Fund", "CITI": "CITI Fediverse", "CITY": "Manchester City Fan Token", "CIV": "Civilization", @@ -3206,6 +3287,7 @@ "CLM": "CoinClaim", "CLMRS": "Crolon Mars", "CLN": "Colu Local Network", + "CLND": "COLEND", "CLNX": "Coloniume Network", "CLNY": "Colony", "CLO": "Callisto Network", @@ -3303,6 +3385,7 @@ "COCONUT": "Coconut", "COCOR": "Cocoro", "COCORO": "Cocoro", + "COCOROBNB": "Cocoro", "COCOROERC": "COCORO", "COD": "Chief of Deswamp", "CODA": "CODA", @@ -3406,7 +3489,8 @@ "COQ": "Coq Inu", "COR": "Coreto", "CORA": "Cora by Virtuals", - "CORAL": "CoralPay", + "CORAL": "Coral Protocol", + "CORALPAY": "CoralPay", "CORE": "Core", "COREC": "CoreConnect", "COREDAO": "coreDAO", @@ -3583,6 +3667,7 @@ "CRONA": "CronaSwap", "CRONK": "CRONK", "CROPPER": "CropperFinance", + "CROS": "Cros Token", "CROW": "cr0w by Virtuals", "CROWD": "CrowdCoin", "CROWDWIZ": "Crowdwiz", @@ -3631,6 +3716,7 @@ "CRYPTOE": "Cryptoenter", "CRYPTOEM": "Crypto Emperor Trump", "CRYPTOF": "CryptoFarmers", + "CRYPTOFIGHT": "Crypto Fight Club", "CRYPTOH": "CryptoHunterTrading", "CRYPTOJ": "Crypto Journey", "CRYPTOJESUS": "Crypto Jesus Trump", @@ -3643,6 +3729,7 @@ "CRYPTOS": "CryptoSoul", "CRYPTOSDG": "Crypto SDG", "CRYPTOT": "Crypto Trump", + "CRYPTOTANKS": "CryptoTanks", "CRYPTOU": "CryptoUnity", "CRYSTAL": "Crystal", "CRYSTALCLEAR": "Crystal Clear Token", @@ -3667,6 +3754,7 @@ "CSQ": "cosquare", "CSR": "Cashera", "CSS": "CoinSwap Token", + "CST": "Crypto Samurai", "CSTC": "CryptosTribe", "CSTL": "Castle", "CSTR": "CoreStarter", @@ -3727,7 +3815,8 @@ "CUFF": "Jail Cat", "CULO": "CULO", "CULOETH": "CULO", - "CULT": "Cult DAO", + "CULT": "Milady Cult Coin", + "CULTDAO": "Cult DAO", "CULTUR": "Cultur", "CUM": "Cumbackbears", "CUMINU": "CumInu", @@ -3812,6 +3901,7 @@ "CYBERWAY": "CyberWay", "CYBONK": "CYBONK", "CYBR": "CYBR", + "CYBRO": "Cybro Token", "CYC": "Cyclone Protocol", "CYCAT": "Chi Yamada Cat", "CYCE": "Crypto Carbon Energy", @@ -3910,6 +4000,7 @@ "DAO1": "DAO1", "DAOACT": "ACT", "DAOB": "DAOBet", + "DAOLITY": "Daolity", "DAOP": "Dao Space", "DAOSOL": "MonkeDAO", "DAOVC": "DAO.VC", @@ -4050,6 +4141,7 @@ "DEBT": "The Debt Box", "DEC": "Decentr", "DECENTRALG": "Decentral Games ICE", + "DECENTRALIZED": "DECENTRALIZED", "DECHAT": "Dechat", "DECI": "Maximus DECI", "DECL": "Decimal token", @@ -4074,9 +4166,11 @@ "DEEPSEEKR1": "DeepSeek R1", "DEER": "ToxicDeer Finance", "DEERSEIZED": "Deer Seized by US Government", + "DEESSE": "Deesse", "DEEX": "DEEX", "DEEZ": "DEEZ NUTS", - "DEFAI": "DeFAI", + "DEFAI": "DEFAI", + "DEFAIDAO": "DeFAI", "DEFC": "Defi Coin", "DEFEND": "Blockdefend AI", "DEFI": "DeFi", @@ -4140,7 +4234,8 @@ "DERO": "Dero", "DERP": "Derp", "DES": "DeSpace Protocol", - "DESCI": "DeSci Meme", + "DESCI": "SUI Desci Agents", + "DESCIMEME": "DeSci Meme", "DESI": "Desico", "DESO": "Decentralized Social", "DESTINY": "Destiny", @@ -4241,9 +4336,10 @@ "DIA": "DIA", "DIAB": "Diablo IV Solana", "DIABLO": "Diablo IV", - "DIAM": "Diamond", + "DIAM": "DIAM", "DIAMND": "Projekt Diamond", "DIAMO": "Diamond Launch", + "DIAMON": "Diamond", "DIAMOND": "Diamond Coin", "DIAMONDINU": "Diamond", "DIBBLE": "Dibbles", @@ -4287,13 +4383,15 @@ "DIM": "DIMCOIN", "DIME": "DimeCoin", "DIMO": "DIMO", - "DIN": "Dinero", + "DIN": "DIN", + "DINE": "Dinero", "DINERO": "Dinero", "DINEROBET": "Dinerobet", "DINGER": "Dinger Token", "DINGO": "Dingocoin", - "DINO": "DinoSwap", + "DINO": "DinoLFG", "DINOS": "Dinosaur Inu", + "DINOSWAP": "DinoSwap", "DINT": "DinarTether", "DINU": "Dogey-Inu", "DINW": "Dinowars", @@ -4354,7 +4452,7 @@ "DMAGA": "Dark MAGA", "DMAIL": "DMAIL Network", "DMAR": "DMarket", - "DMC": "Dream21", + "DMC": "Datamall Coin", "DMCC": "DiscoverFeed", "DMCH": "DARMA Cash", "DMCK": "Diamond Castle", @@ -4366,6 +4464,7 @@ "DMLG": "Demole", "DMOD": "Demodyfi Token", "DMOON": "Dollarmoon", + "DMR": "dmr", "DMS": "Documentchain", "DMT": "Dream Machine Token", "DMTC": "Demeter Chain", @@ -4405,6 +4504,7 @@ "DOCK": "Dock.io", "DOCSWAP": "Dex on Crypto", "DOCT": "DocTailor", + "DOCTO": "DoctorX", "DOD": "Day Of Defeat 2.0", "DOD100": "Day of Defeat Mini 100x", "DODI": "DoubleDice", @@ -4446,6 +4546,7 @@ "DOGEFATHER": "Dogefather", "DOGEFORK": "DogeFork", "DOGEGF": "DogeGF", + "DOGEGOV": "Department Of Government Efficiency (dogegov.com)", "DOGEGROK": "Doge Grok", "DOGEGROKAI": "Doge Of Grok AI", "DOGEI": "Dogei", @@ -4485,6 +4586,7 @@ "DOGIN": "Doginhood", "DOGINC": "dog in cats world", "DOGINME": "doginme", + "DOGINWOTAH": "doginwotah", "DOGIRA": "Dogira", "DOGK": "Dagknight Dog", "DOGLAI": "Doglaikacoin", @@ -4514,13 +4616,14 @@ "DOLLARCOIN": "DollarCoin", "DOLLUR": "Dollur Go Brrr", "DOLLY": "DOLLY", + "DOLO": "Dolomite", "DOLPHY": "Dolphy", "DOLZ": "DOLZ", - "DOM": "Ancient Kingdom", + "DOM": "DomusAI", "DOME": "Everdome", "DOMI": "Domi", "DOMO": "Dony Montana", - "DON": "Donnie Finance", + "DON": "TheDonato Token", "DONA": "DONASWAP", "DONAL": "Donald Pump", "DONALD": "DONALD TRUMP", @@ -4532,11 +4635,13 @@ "DONJR": "Don Jr.", "DONK": "Don-key", "DONKE": "DONKE", + "DONNIEFIN": "Donnie Finance", "DONS": "The Dons", "DONT": "Donald Trump (dont.cash)", "DONU": "Donu", "DONUT": "Donut", "DONUTS": "The Simpsons", + "DOOD": "Doodles", "DOODI": "Doodipals", "DOODOO": "Doodoo", "DOOGLE": "Doogle", @@ -4617,6 +4722,7 @@ "DRCT": "Ally Direct", "DRE": "DoRen", "DREAM": "DREAM", + "DREAM21": "Dream21", "DREAMS": "Dreams Quest", "DREP": "DREP", "DRF": "Drife", @@ -4761,6 +4867,7 @@ "DVT": "DeVault", "DVTC": "DivotyCoin", "DVX": "Derivex", + "DWAIN": "DWAIN", "DWARFY": "Dwarfy", "DWARS": "Dynasty Wars", "DWC": "Digital Wallet", @@ -4817,6 +4924,7 @@ "E1INCH": "1inch (Energi Bridge)", "E21": "E21 Coin", "E2C": "Electronic Energy Coin", + "E4C": "E4C", "E8": "Energy8", "EA": "EagleCoin", "EAC": "Education Assessment Cult", @@ -4828,11 +4936,14 @@ "EAI": "Eagle AI", "EARLY": "Early Risers", "EARLYF": "EarlyFans", - "EARN": "EarnGuild", + "EARN": "Earn Network", "EARNB": "Earn BTC", + "EARNGUILD": "EarnGuild", + "EARNM": "EARNM", "EARTH": "Earth Token", "EARTHCOIN": "EarthCoin", "EASYF": "EasyFeedback", + "EASYMINE": "EasyMine", "EAT": "EDGE Activity Token", "EATH": "Eartherium", "EAURIC": "Eauric", @@ -4873,7 +4984,8 @@ "ECI": "Euro Cup Inu", "ECL": "ECLAT", "ECLD": "Ethernity Cloud", - "ECLIP": "Eclipse", + "ECLIP": "Eclipse Fi", + "ECLIPSE": "Eclipse", "ECO": "Ormeus Ecosystem", "ECOB": "EcoBit", "ECOC": "ECOcoin", @@ -4902,7 +5014,8 @@ "EDEXA": "edeXa Security Token", "EDFI": "EdFi", "EDG": "Edgeless", - "EDGE": "EDGE", + "EDGE": "Definitive", + "EDGENET": "EDGE", "EDGESOL": "Edgevana Staked SOL", "EDGEW": "Edgeware", "EDGT": "Edgecoin", @@ -4924,6 +5037,7 @@ "EDWIN": "Edwin", "EDX": "Equilibrium", "EEFS": "Eefs", + "EEG": "EEG Token", "EER": "Ethereum eRush", "EETH": "ether fi", "EFBAI": "EuroFootball AI", @@ -4971,6 +5085,7 @@ "EHRT": "Eight Hours Token", "EIFI": "EIFI FINANCE", "EIGEN": "EigenLayer", + "EIGENP": "Eigenpie", "EIM": "Expert Infra", "EIQT": "IQ Prediction", "EJAC": "EJA Coin", @@ -5013,7 +5128,8 @@ "ELI": "GoCrypto", "ELIC": "Elicoin", "ELITE": "EthereumLite", - "ELIX": "Elixir", + "ELIX": "Elixir Games", + "ELIXI": "Elixir", "ELIXIR": "Starchi", "ELIZ": "Eliza (ai16zeliza)", "ELIZA": "Eliza (elizawakesup.ai)", @@ -5069,7 +5185,8 @@ "EMATIC": "Wrapped Polygon (Energi Bridge)", "EMAX": "EthereumMax", "EMB": "Overline Emblem", - "EMBER": "EmberCoin", + "EMBER": "Ember", + "EMBERCOIN": "EmberCoin", "EMBR": "Embr", "EMC": "Edge Matrix Computing", "EMC2": "Einsteinium", @@ -5092,7 +5209,7 @@ "EMR": "Emorya Finance", "EMRLD": "The Emerald Company", "EMRX": "Emirex Token", - "EMT": "EasyMine", + "EMT": "EMAIL Token", "EMU": "eMusic", "EMV": "Ethereum Movie Venture", "EMX": "EMX", @@ -5165,6 +5282,7 @@ "EPIX": "Byepix", "EPK": "EpiK Protocol", "EPS": "Ellipsis (OLD)", + "EPT": "Balance", "EPTT": "Evident Proof Transaction Token", "EPX": "Ellipsis X", "EPY": "Empyrean", @@ -5214,6 +5332,7 @@ "ES": "Era Swap Token", "ESAI": "Ethscan AI", "ESBC": "ESBC", + "ESCC": "Eos Stable Coin Chain", "ESCE": "Escroco Emerald", "ESCROW": "Cryptegrity DAO", "ESCU": "EYESECU AI", @@ -5373,11 +5492,12 @@ "EVIN": "Evin Token", "EVMOS": "Evmos", "EVN": "Evn Token", - "EVO": "EvoVerses", + "EVO": "Devomon", "EVOAI": "EvolveAI", "EVOC": "EVOCPLUS", "EVOL": "EVOL NETWORK", "EVOS": "EVOS", + "EVOVERSES": "EvoVerses", "EVR": "Everus", "EVRICE": "Evrice", "EVRM": "Evrmore", @@ -5429,6 +5549,7 @@ "EYE": "MEDIA EYE", "EYES": "Eyes Protocol", "EYETOKEN": "EYE Token", + "EYWA": "EYWA", "EZ": "EasyFi V2", "EZC": "EZCoin", "EZEIGEN": "Restaked EIGEN", @@ -5437,6 +5558,8 @@ "EZM": "EZMarket", "EZPZ": "Eazy Peazy", "EZSOL": "Renzo Restaked SOL", + "EZSWAP": "EZswap Protocol", + "EZSWAPV1": "EZswap Protocol v1", "EZT": "EZToken", "EZY": "EzyStayz", "ElvishMagic": "EMAGIC", @@ -5459,6 +5582,7 @@ "FACTOM": "Factom", "FACTORY": "ChainFactory", "FACTR": "Defactor", + "FACTRPAY": "FactR", "FADO": "FADO Go", "FAFO": "FAFO", "FAFOSOL": "Fafo", @@ -5522,7 +5646,7 @@ "FAYD": "Fayda", "FAYRE": "Fayre", "FAZZ": "FazzCoin", - "FB": "Fenerbahçe Token", + "FB": "Fractal Bitcoin", "FBA": "Firebird Aggregator", "FBB": "FilmBusinessBuster", "FBG": "Fort Block Games", @@ -5573,6 +5697,7 @@ "FELIX": "FelixCoin", "FELIX2": "Felix 2.0 ETH", "FEN": "First Ever NFT", + "FENE": "Fenerbahçe Token", "FENOMY": "Fenomy", "FENTANYL": "Chinese Communist Dragon", "FER": "Ferro", @@ -5608,6 +5733,7 @@ "FI": "Fideum", "FIA": "FIA Protocol", "FIBO": "FibSWAP DEx", + "FIBOS": "FIBOS", "FIBRE": "FIBRE", "FIC": "Filecash", "FID": "Fidira", @@ -5621,7 +5747,7 @@ "FIFTY": "FIFTYONEFIFTY", "FIG": "FlowCom", "FIGH": "FIGHT FIGHT FIGHT", - "FIGHT": "Crypto Fight Club", + "FIGHT": "Fight to MAGA", "FIGHTMAGA": "FIGHT MAGA", "FIGHTPEPE": "FIGHT PEPE", "FIGHTRUMP": "FIGHT TRUMP", @@ -5630,6 +5756,7 @@ "FIL": "FileCoin", "FILDA": "Filda", "FILES": "Solfiles", + "FILEST": "FileStar", "FILL": "Fillit", "FILM": "Filmpass", "FILST": "Filecoin Standard Hashrate Token", @@ -5646,6 +5773,7 @@ "FINK": "FINK", "FINN": "Huckleberry", "FINOM": "Finom FIN Token", + "FINOMNOM": "Finom NOM Token", "FINS": "AutoShark DEX", "FINT": "FintraDao", "FINU": "Formula Inu", @@ -5656,6 +5784,7 @@ "FIRA": "Defira", "FIRE": "Matr1x Fire", "FIRECOIN": "FireCoin", + "FIREP": "Fire Protocol", "FIREW": "Fire Wolf", "FIRO": "Firo", "FIRSTHARE": "FirstHare", @@ -5697,6 +5826,7 @@ "FLAS": "Flas Exchange Token", "FLASH": "Flashstake", "FLASHC": "FLASH coin", + "FLASHT": "FlashToken", "FLAVIA": "Flavia Is Online", "FLAY": "Flayer", "FLC": "FlowChainCoin", @@ -5813,10 +5943,11 @@ "FNX": "FinNexus", "FNXAI": "Finanx AI", "FNZ": "Fanzee", - "FO": "FIBOS", + "FO": "Official FO", "FOA": "Fragments of arker", "FOAM": "Foam", "FOC": "TheForce Trade", + "FOCAI": "focai.fun", "FOCV": "FOCV", "FODL": "Fodl Finance", "FOF": "Future Of Fintech", @@ -5829,7 +5960,8 @@ "FOL": "Folder Protocol", "FOLD": "Manifold Finance", "FOLO": "Alpha Impact", - "FOMO": "FOMO BULL CLUB", + "FOM": "FOMO BULL CLUB", + "FOMO": "Fomo", "FOMON": "FOMO Network", "FOMOSOL": "FOMOSolana", "FON": "INOFI", @@ -5870,6 +6002,7 @@ "FOTA": "Fight Of The Ages", "FOTO": "Unique Photo", "FOTTIE": "Fottie", + "FOU": "Four", "FOUND": "ccFound", "FOUNTAIN": "Fountain", "FOUR": "4", @@ -5893,6 +6026,7 @@ "FPI": "Frax Price Index", "FPIBANK": "FPIBANK", "FPIS": "Frax Price Index Share", + "FPS": "WEB3WAR Token", "FQS": "FQSwap V2", "FR": "Freedom Reserve", "FRA": "Findora", @@ -5914,6 +6048,7 @@ "FREE": "FREE coin", "FREED": "FreedomCoin", "FREEDO": "Freedom", + "FREEDOG": "Freedogs", "FREEDOM": "Freedom Protocol Token", "FREELA": "DecentralFree", "FREEPAVEL": "Free Pavel", @@ -5950,6 +6085,7 @@ "FROGLIC": "Pink Hood Froglicker", "FROGO": "Frogo", "FROK": "Frok.ai", + "FROKAI": "FrokAI", "FRONK": "Fronk", "FRONT": "Frontier", "FROP": "Popo The Frog", @@ -5999,7 +6135,7 @@ "FTO": "FuturoCoin", "FTON": "Fanton", "FTP": "FuturePoints", - "FTR": "FactR", + "FTR": "Fautor", "FTRB": "Faith Tribe", "FTRC": "FutureCoin", "FTS": "Fortress Lending", @@ -6016,7 +6152,8 @@ "FUBAO": "FUBAO", "FUCK": "Fuck Token", "FUCKTRUMP": "FUCK TRUMP", - "FUD": "FUD.finance", + "FUD": "Fud the Pug", + "FUDFINANCE": "FUD.finance", "FUEGO": "FUEGO", "FUEL": "Fuel Network", "FUELX": "Fuel", @@ -6070,6 +6207,7 @@ "FWT": "Freeway Token", "FWW": "Farmers World Wood", "FX": "Function X", + "FXAKV": "Akiverse Governance", "FXB": "FxBox", "FXC": "Flexacoin", "FXD": "Fathom Dollar", @@ -6084,6 +6222,7 @@ "FXUSD": "f(x) Protocol fxUSD", "FXY": "Floxypay", "FYD": "FYDcoin", + "FYDE": "Fyde", "FYDO": "Fly Doge", "FYN": "Affyn", "FYP": "FlypMe", @@ -6127,6 +6266,7 @@ "GAMBIT": "Gambit", "GAMBL": "Metagamble", "GAME": "GameBuild", + "GAME5BALL": "Game 5 BALL", "GAMEBUD": "GAMEBUD", "GAMEBYV": "GAME by Virtuals", "GAMEC": "Game", @@ -6145,6 +6285,7 @@ "GAMESTOP": "GameStop", "GAMESTUMP": "GAMESTUMP", "GAMET": "GAME Token", + "GAMETA": "Gameta", "GAMEX": "GameX", "GAMI": "GAMI World", "GAMIN": "Gaming Stars", @@ -6238,9 +6379,10 @@ "GE": "GEchain", "GEA": "Goldea", "GEAR": "Gearbox Protocol", - "GEC": "Geco.one", + "GEC": "Gecko Inu", "GECKO": "Gecko Coin", "GECKY": "Gecky", + "GECO": "GECOIN", "GEEK": "De:Lithe Last Memories", "GEEQ": "Geeq", "GEF": "GemFlow", @@ -6423,6 +6565,7 @@ "GLIESE": "GlieseCoin", "GLINK": "Gemlink", "GLINT": "BeamSwap", + "GLIZZY": "GLIZZY", "GLM": "Golem Network Token", "GLMR": "Moonbeam", "GLMV1": "Golem Network Token v1", @@ -6480,7 +6623,7 @@ "GMX": "GMX", "GN": "GN", "GNBT": "Genebank Token", - "GNC": "Greencoin", + "GNC": "Greenchie", "GND": "GND Protoco", "GNFT": "GNFT", "GNG": "GreenGold", @@ -6499,12 +6642,14 @@ "GNY": "GNY", "GO": "GoChain", "GOA": "GoaCoin", - "GOAL": "GOAL token", + "GOAL": "TopGoal Token", "GOALBON": "Goal Bonanza", "GOALS": "UnitedFans", + "GOALTOKEN": "GOAL token", "GOAT": "Goatseus Maximus", "GOATAI": "GOAT AI", "GOATCOIN": "Goat", + "GOATS": "GOATS", "GOATSE": "GOATSE", "GOB": "Goons of Balatroon", "GOC": "GoCrypto", @@ -6520,6 +6665,7 @@ "GOETH": "Algomint", "GOF": "Golff", "GOFF": "Gift Off Token", + "GOFINDXR": "Gofind XR", "GOFX": "GooseFX", "GOG": "Guild of Guardians", "GOGLZ": "GOGGLES", @@ -6537,6 +6683,7 @@ "GOLDCOINETH": "Gold", "GOLDE": "GOLDEN AGE", "GOLDEN": "Golden Inu", + "GOLDENC": "GoldenCat", "GOLDENG": "Golden Goose", "GOLDF": "Gold Fever", "GOLDMIN": "GoldMiner", @@ -6573,6 +6720,7 @@ "GOON": "Goonies", "GOP": "The Republican Party", "GOPX": "GOPX Token", + "GOR": "@gork", "GORA": "Gora", "GOREC": "GoRecruit", "GORGONZOLA": "Heroes 3 Foundation", @@ -6580,6 +6728,7 @@ "GORILLA": "Gorilla", "GORILLAD": "Gorilla Diamond", "GORILLAINU": "Gorilla Inu", + "GORK": "New XAI gork", "GORPLE": "GorplesCoin", "GOS": "Gosama", "GOSS": "GOSSIP-Coin", @@ -6643,6 +6792,7 @@ "GREARN": "GrEarn", "GREE": "Green God Candle", "GREEN": "GreenX", + "GREENCOIN": "Greencoin", "GREENH": "Greenheart CBD", "GREENMMT": "Green Mining Movement Token", "GREENPOWER": "GreenPower", @@ -6701,10 +6851,12 @@ "GROOOOOK": "Groooook", "GROOVE": "GROOVE", "GROW": "Grow Token", + "GROWAI": "SocialGrowAI", "GROWNCOIN": "GrownCoin", "GROWTH": "GROWTH DeFi", "GROYPER": "Groyper", "GRP": "Grape", + "GRPH": "Soul Graph", "GRPL": "Golden Ratio Per Liquidity", "GRS": "Groestlcoin", "GRT": "The Graph", @@ -6778,6 +6930,7 @@ "GUILD": "BlockchainSpace", "GUISE": "GUISE", "GULF": "GulfCoin", + "GULL": "GULL", "GUM": "Gourmet Galaxy", "GUMMIES": "GUMMIES", "GUMMY": "GUMMY", @@ -6809,6 +6962,7 @@ "GXC": "GXChain", "GXE": "XENO Governance", "GXT": "Gem Exchange And Trading", + "GYAT": "Gyat Coin", "GYEN": "GYEN", "GYM": "GYM Token", "GYMNET": "Gym Network", @@ -6839,6 +6993,7 @@ "HACHIKO": "Hachiko Inu Token", "HACHIONB": "Hachi On Base", "HACK": "HACK", + "HAEDAL": "Haedal Protocol", "HAGGIS": "New Born Haggis Pygmy Hippo", "HAHA": "Hasaki", "HAI": "Hacken Token", @@ -6848,6 +7003,7 @@ "HAKU": "HakuSwap", "HAL": "Halcyon", "HALF": "0.5X Long Bitcoin Token", + "HALFP": "Half Pizza", "HALFSHIT": "0.5X Long Shitcoin Index Token", "HALLO": "Halloween Coin", "HALLOWEEN": "HALLOWEEN", @@ -6857,7 +7013,7 @@ "HAMI": "Hamachi Finance", "HAMMY": "SAD HAMSTER", "HAMS": "HamsterCoin", - "HAMSTER": "Space Hamster", + "HAMSTER": "Hamster", "HAMSTERB": "HamsterBase", "HAMSTR": "Hamster Coin", "HAN": "HanChain", @@ -6878,6 +7034,7 @@ "HARE": "Hare Token", "HAREPLUS": "Hare Plus", "HAROLD": "Harold", + "HAROLDDUCK": "Harold", "HARPER": "Harper", "HARR": "HARRIS DOGS", "HARRIS": "KAMALA HARRIS", @@ -6889,9 +7046,10 @@ "HASBIK": "Hasbulla", "HASH": "Provenance Blockchain", "HASHAI": "HashAI", + "HASHNET": "HashNet BitEco", "HASHT": "HASH Token", "HASUI": "Haedal", - "HAT": "Hawala.Exchange", + "HAT": "TOP HAT", "HATAY": "Hatayspor Token", "HATCHY": "Hatchyverse", "HATI": "Hati", @@ -6899,6 +7057,7 @@ "HAVOC": "Havoc", "HAVY": "Havy", "HAW": "Hawk Tuah", + "HAWALA": "HAWALA", "HAWK": "Hawksight", "HAWKCITY": "Hawk", "HAWKPTAH": "Hawk Ptah", @@ -6975,12 +7134,13 @@ "HEM": "Hemera", "HEMAN": "HE-MAN", "HEMULE": "Hemule", + "HENAI": "HenjinAI Token", "HENG": "HengCoin", "HENL": "henlo", "HENLO": "Henlo", "HENLOV1": "Henlo v1", "HEP": "Health Potion", - "HER": "Hero Node", + "HER": "Her.AI", "HERA": "Hero Arena", "HERAF": "Hera Finance", "HERB": "HerbCoin", @@ -6995,6 +7155,7 @@ "HEROESAI": "HEROES AI", "HEROESC": "HeroesChained", "HEROI": "Heroic Saga Shiba", + "HERONODE": "Hero Node", "HET": "HavEther", "HETA": "HetaChain", "HETH": "Huobi Ethereum", @@ -7117,7 +7278,7 @@ "HMTT": "Hype Meme Token", "HMU": "hit meeee upp", "HMX": "HMX", - "HNB": "HashNet BitEco", + "HNB": "HNB Protocol", "HNC": "Hellenic Coin", "HNCN": "Huncoin", "HND": "Hundred Finance", @@ -7148,9 +7309,11 @@ "HOKK": "Hokkaidu Inu", "HOL": "Hololoot", "HOLA": "Hola Token", - "HOLD": "HOLD", + "HOLD": "Holdcoin", + "HOLDCO": "HOLD", "HOLDEX": "Holdex Finance", "HOLDON4": "HoldOn4DearLife", + "HOLDS": "Holdstation", "HOLY": "Holy Trinity", "HOM": "Homeety", "HOME": "OtterHome", @@ -7187,6 +7350,7 @@ "HORUS": "HorusPay", "HOS": "Hotel of Secrets", "HOSHI": "Dejitaru Hoshi", + "HOSICO": "Hosico Cat", "HOSKY": "Hosky", "HOSTAI": "Host AI", "HOT": "Holo", @@ -7196,7 +7360,7 @@ "HOTN": "HotNow", "HOTT": "HOT Token", "HOUND": "BaseHoundBot by Virtuals", - "HOUSE": "Klaymore Stakehouse", + "HOUSE": "Housecoin", "HOW": "HowInu", "HOWL": "Coyote", "HP": "HeroPark", @@ -7211,6 +7375,7 @@ "HPX": "HUPAYX", "HPY": "Hyper Pay", "HPYPEPE": "Happy Pepe Token", + "HQ": "Metaverse HQ", "HQR": "Hayya Qatar", "HQT": "HyperQuant", "HQX": "HOQU", @@ -7314,16 +7479,18 @@ "HYDROP": "Hydro Protocol", "HYGH": "HYGH", "HYN": "Hyperion", - "HYP": "HyperStake", + "HYP": "HyperX", "HYPC": "HyperCycle", "HYPE": "Hyperliquid", - "HYPER": "HyperChainX", + "HYPER": "Hyperlane", "HYPERAI": "HyperHash AI", + "HYPERC": "HyperChainX", "HYPERCOIN": "HyperCoin", "HYPERD": "HyperDAO", "HYPERIONX": "HyperionX", "HYPERS": "HyperSpace", "HYPERSKIDS": "HYPERSKIDS", + "HYPERSTAKE": "HyperStake", "HYPES": "Supreme Finance", "HYPEV1": "Hype v1", "HYPR": "Hypr Network", @@ -7340,6 +7507,7 @@ "I7": "ImpulseVen", "I9C": "i9 Coin", "IAG": "IAGON", + "IAGV1": "IAGON v1", "IAI": "inheritance Art", "IAM": "IAME Identity", "IAOMIN": "Yao Ming", @@ -7463,6 +7631,7 @@ "ILV": "Illuvium", "IMARO": "IMARO", "IMAYC": "IMAYC", + "IMBREX": "Imbrex", "IMBTC": "The Tokenized Bitcoin", "IMC": "i Money Crypto", "IME": "Imperium Empires", @@ -7535,6 +7704,7 @@ "INFTT": "iNFT Token", "INFX": "Influxcoin", "ING": "Infinity Games", + "INIT": "Initia", "INJ": "Injective", "INK": "Ink", "INN": "Innova", @@ -7548,10 +7718,11 @@ "INRXV1": "INRx v1", "INS": "Insolar (Old Chain)", "INSANE": "InsaneCoin", + "INSANECOIN": "InsaneCoin", "INSANITY": "Insanity Coin", "INSC": "INSC (Ordinals)", "INSE": "INSECT", - "INSN": "Insane Coin", + "INSN": "Industry Sonic", "INSP": "Inspect", "INSPI": "InspireAI", "INSR": "Insurabler", @@ -7596,8 +7767,9 @@ "IOETH": "ioETH", "IOEX": "ioeX", "IOI": "IOI Token", - "ION": "Ionomy", + "ION": "Ionic", "IONC": "IONChain", + "IONOMY": "Ionomy", "IONP": "Ion Power Token", "IONX": "Charged Particles", "IONZ": "IONZ", @@ -7629,6 +7801,7 @@ "IPX": "InpulseX", "IQ": "IQ", "IQ50": "IQ50", + "IQ6900": "IQ6900", "IQC": "IQ.cash", "IQG": "IQ Global", "IQN": "IQeon", @@ -7668,6 +7841,7 @@ "IST": "Inter Stable Token", "ISTEP": "iSTEP", "ITA": "Italian National Football Team Fan Token", + "ITALIANROT": "Italian Brainrot", "ITALOCOIN": "Italocoin", "ITAM": "ITAM Games", "ITAMCUBE": "CUBE", @@ -7676,6 +7850,7 @@ "ITF": "Intelligent Trading", "ITG": "iTrust Governance", "ITGR": "Integral", + "ITHACA": "Ithaca Protocol", "ITHEUM": "Itheum", "ITL": "Italian Lira", "ITLR": "MiTellor", @@ -7782,8 +7957,9 @@ "JEN": "JEN COIN", "JENNER": "Caitlyn Jenner", "JENSEN": "Jensen Huang", - "JERRY": "Jerry Inu", + "JERRY": "jerry", "JERRYINU": "JERRYINU", + "JERRYINUCOM": "Jerry Inu", "JES": "Jesus", "JEST": "Jester", "JESUS": "Jesus Coin", @@ -7863,6 +8039,7 @@ "JONESUSDC": "Jones USDC", "JOOPS": "JOOPS", "JOPER": "Joker Pepe", + "JOS": "JuliaOS", "JOSE": "Jose", "JOTCHUA": "Perro Dinero", "JOULE": "Joule", @@ -7898,6 +8075,7 @@ "JUIC": "Juice", "JUICE": "Juice Finance", "JUICEB": "Juice", + "JUICET": "Juice Town", "JUL": "Joule", "JULB": "JustLiquidity Binance", "JULD": "JulSwap", @@ -7954,6 +8132,7 @@ "KAILY": "Kailith", "KAIM": "Kai Meme", "KAINET": "KAINET", + "KAIRO": "Kairo", "KAITO": "KAITO", "KAKA": "KAKA NFT World", "KAKAXA": "KAKAXA", @@ -7972,6 +8151,7 @@ "KAMAL": "Kamala Harris", "KAMALA": "Kamala Harris", "KAMALAHARRIS": "KAMALA HARRIS", + "KAMB": "Kambria", "KAMLA": "KAMALAMA (kamalama.org)", "KAMPAY": "KamPay", "KAN": "Bitkan", @@ -8000,7 +8180,7 @@ "KASPY": "KASPY", "KASSIAHOME": "Kassia Home", "KASTA": "Kasta", - "KAT": "Kambria", + "KAT": "Karat", "KATA": "Katana Inu", "KATANA": "Katana Finance", "KATCHU": "Katchu Coin", @@ -8114,7 +8294,8 @@ "KILLSOLANA": "KillSolana", "KILO": "KiloEx", "KILT": "KILT Protocol", - "KIM": "King Money", + "KIM": "KIM Token", + "KIMA": "Kima", "KIMBO": "Kimbo", "KIMCHI": "KIMCHI.finance", "KIMIAI": "Kimi AI Agent", @@ -8127,11 +8308,13 @@ "KINGB": "King Bean", "KINGBONK": "King Bonk", "KINGCAT": "King Cat", + "KINGCOIN": "KING", "KINGD": "Kingdom of Ants", "KINGDOG": "King Dog Inu", "KINGDOMQUEST": "Kingdom Quest", "KINGF": "King Finance", "KINGGROK": "King Grok", + "KINGMONEY": "King Money", "KINGNEIRO": "King Neiro", "KINGO": "King of memes", "KINGOF": "King Of Memes", @@ -8178,6 +8361,7 @@ "KKT": "Kingdom Karnage", "KLAP": "Klap Finance", "KLAUS": "Klaus", + "KLAYMORE": "Klaymore Stakehouse", "KLC": "KiloCoin", "KLD": "Koduck", "KLEE": "KleeKai", @@ -8240,7 +8424,8 @@ "KOIP": "KoiPond", "KOJI": "Koji", "KOK": "KOK Coin", - "KOKO": "KokoSwap", + "KOKO": "KOALA AI", + "KOKOSWAP": "KokoSwap", "KOL": "Kollect", "KOLANA": "KOLANA", "KOLION": "Kolion", @@ -8260,6 +8445,7 @@ "KORE": "KORE Vault", "KOREC": "Kore", "KORRA": "KORRA", + "KOS": "KONTOS", "KOSS": "Koss", "KOTARO": "KOTARO", "KOTO": "Koto", @@ -8292,7 +8478,7 @@ "KRL": "Kryll", "KRM": "Karma", "KRN": "KRYZA Network", - "KRO": "Betoken", + "KRO": "Kroma", "KROM": "Kromatika", "KROME": "KROME Shares", "KRONE": "Kronecoin", @@ -8407,12 +8593,15 @@ "LAELAPS": "Laelaps", "LAFFIN": "Laffin Kamala", "LAI": "LayerAI", - "LAIKA": "Laika Protocol", + "LAIKA": "LAIKA", + "LAIKAPROTOCOL": "Laika Protocol", "LAINESOL": "Laine Staked SOL", + "LAIR": "Lair", "LAKE": "Data Lake", "LALA": "LaLa World", "LAMB": "Lambda", "LAMBO": "LAMBO", + "LAMPIX": "Lampix", "LAN": "Lanify", "LANA": "LanaCoin", "LANC": "Lanceria", @@ -8445,6 +8634,7 @@ "LATX": "Latium", "LAUGHCOIN": "Laughcoin", "LAUNCH": "Launchblock.com", + "LAUNCHCOIN": "Launch Coin on Believe", "LAVA": "Lava Network", "LAVASWAP": "Lavaswap", "LAVAX": "LavaX Labs", @@ -8576,6 +8766,7 @@ "LGBT": "Let's Go Brandon Token", "LGBTQ": "LGBTQoin", "LGC": "LiveGreen Coin", + "LGCT": "Legacy Token", "LGCY": "LGCY Network", "LGD": "Legends Cryptocurrency", "LGG": "Let's Go Gambling", @@ -8665,6 +8856,7 @@ "LISAS": "Lisa Simpson", "LIST": "KList Protocol", "LISTA": "Lista DAO", + "LISTEN": "Listen", "LISUSD": "lisUSD", "LIT": "Litentry", "LITE": "Lite USD", @@ -8680,6 +8872,7 @@ "LIVESEY": "Dr. Livesey", "LIVESTARS": "Live Stars", "LIXX": "Libra Incentix", + "LIY": "Lily", "LIZ": "Lizus Payment", "LIZA": "Liza", "LIZARD": "LIZARD", @@ -8752,6 +8945,7 @@ "LOG": "Wood Coin", "LOGO": "LOGOS", "LOGOS": "LOGOSAI", + "LOGT": "Lord of Dragons Governance Token", "LOGX": "LogX Network", "LOIS": "Lois Token", "LOKA": "League of Kingdoms", @@ -8798,7 +8992,7 @@ "LOUD": "Loud Market", "LOULOU": "LOULOU", "LOV": "LoveChain", - "LOVE": "Deesse", + "LOVE": "Love Monster", "LOVELY": "Lovely finance", "LOVELYV1": "Lovely Inu Finance", "LOVESNOOPY": "I LOVE SNOOPY", @@ -8915,6 +9109,7 @@ "LUMI": "LUMI Credits", "LUMIA": "Lumia", "LUMIO": "Solana Mascot", + "LUMO": "Lumo-8B-Instruct", "LUMOS": "Lumos", "LUN": "Lunyr", "LUNA": "Terra", @@ -8944,10 +9139,12 @@ "LVIP": "Limitless VIP", "LVL": "Level", "LVLUSD": "Level USD", + "LVLY": "LyvelyToken", "LVM": "LakeViewMeta", "LVN": "LivenPay", "LVVA": "Levva Protocol Token", "LVX": "Level01", + "LWA": "LUMIWAVE", "LWC": "Linework Coin", "LWF": "Local World Forwarders", "LX": "Moonlight", @@ -8968,6 +9165,7 @@ "LYNK": "Lynked.World", "LYNX": "Lynx", "LYO": "LYO Credit", + "LYP": "Lympid Token", "LYQD": "eLYQD", "LYR": "Lyra", "LYRA": "Lyra", @@ -8985,6 +9183,7 @@ "M2O": "M2O Token", "M3M3": "M3M3", "M87": "MESSIER", + "MA": "Mind-AI", "MAAL": "Maal Chain", "MABA": "Make America Based Again", "MAC": "MachineCoin", @@ -8998,9 +9197,11 @@ "MADOG": "MarvelDoge", "MADP": "Mad Penguin", "MADPEPE": "Mad Pepe", + "MAECENAS": "Maecenas", "MAEP": "Maester Protocol", "MAF": "MetaMAFIA", "MAG": "Magnify Cash", + "MAG7SSI": "MAG7.ssi", "MAGA": "MAGA", "MAGA2024": "MAGA2024", "MAGA47": "MAGA 47", @@ -9035,13 +9236,14 @@ "MAGPAC": "MAGA Meme PAC", "MAH": "Mahabibi Bin Solman", "MAHA": "MahaDAO", - "MAI": "Mindsync", + "MAI": "MAI", "MAIA": "Maia", "MAID": "MaidSafe Coin", "MAIL": "CHAINMAIL", "MAINSTON": "Ston", + "MAJ": "Major Frog", "MAJO": "Majo", - "MAJOR": "Major Frog", + "MAJOR": "Major", "MAK": "MetaCene", "MAKE": "MAKE", "MAKEA": "Make America Healthy Again", @@ -9055,6 +9257,7 @@ "MAMBA": "Mamba", "MAN": "Matrix AI Network", "MANA": "Decentraland", + "MANA3": "MANA3", "MANC": "Mancium", "MAND": "Mandala Exchange Token", "MANDALA": "Mandala Exchange Token", @@ -9067,6 +9270,7 @@ "MANIFEST": "Manifest", "MANNA": "Manna", "MANORUKA": "ManoRuka", + "MANSONCOIN": "Manson Coin", "MANT": "Mantle USD", "MANTA": "Manta Network", "MANTI": "Mantis", @@ -9079,6 +9283,7 @@ "MAP": "MAP Protocol", "MAPC": "MapCoin", "MAPE": "Mecha Morphing", + "MAPO": "MAP Protocol", "MAPR": "Maya Preferred 223", "MAPS": "MAPS", "MAR3": "Mar3 AI", @@ -9096,6 +9301,7 @@ "MARLEY": "Marley Token", "MARMAJ": "marmaj", "MARO": "Maro", + "MAROV1": "TTC PROTOCOL", "MARS": "MarsCoin", "MARS4": "MARS4", "MARSC": "MarsCoin", @@ -9104,7 +9310,7 @@ "MARSRISE": "MarsRise", "MARSUPILAMI": "MARSUPILAMI INU", "MARSW": "Marswap", - "MART": "Monart", + "MART": "ArtMeta", "MARTIA": "Colonize Mars", "MARTK": "Martkist", "MARTY": "Marty Inu", @@ -9125,9 +9331,10 @@ "MASTER": "Mastercoin", "MASTERCOIN": "MasterCoin", "MASTERMINT": "MasterMint", + "MASTERMIX": "Master MIX Token", "MASTERTRADER": "MasterTraderCoin", "MASYA": "MASYA", - "MAT": "MiniApps", + "MAT": "My Master Wa", "MATA": "Ninneko", "MATAR": "MATAR AI", "MATCH": "Matching Game", @@ -9137,7 +9344,8 @@ "MATIC": "Polygon", "MATICX": "Stader MaticX", "MATPAD": "MaticPad", - "MATRIX": "Matrix Labs", + "MATRIX": "Matrix One", + "MATRIXLABS": "Matrix Labs", "MATT": "Matt Furie", "MATTER": "AntiMatter", "MAU": "MAU", @@ -9288,6 +9496,7 @@ "MEER": "Qitmeer Network", "MEET": "CoinMeet", "MEETONE": "MEET.ONE", + "MEETPLE": "Meetple", "MEF": "MEFLEX", "MEFA": "Metaverse Face", "MEGA": "MegaFlash", @@ -9296,6 +9505,7 @@ "MEGAHERO": "MEGAHERO", "MEGALAND": "Metagalaxy Land", "MEGALANDV1": "Metagalaxy Land v1", + "MEGATECH": "Megatech", "MEGAX": "Megahex", "MEGE": "MEGE", "MEH": "meh", @@ -9305,7 +9515,9 @@ "MELANIA": "Melania Meme", "MELANIATRUMP": "Melania Trump", "MELB": "Minelab", - "MELD": "MELD", + "MELD": "MetaElfLand Token", + "MELDV1": "MELD v1", + "MELDV2": "MELD", "MELI": "Meli Games", "MELLO": "Mello Token", "MELLOW": "Mellow Man", @@ -9317,6 +9529,7 @@ "MELT": "Defrost Finance", "MEM": "Memecoin", "MEMAGX": "Meta Masters Guild Games", + "MEMBERSHIP": "Membership Placeholders", "MEMD": "MemeDAO", "MEMDEX": "Memdex100", "MEME": "Memecoin", @@ -9325,6 +9538,7 @@ "MEMECUP": "Meme Cup", "MEMEETF": "Meme ETF", "MEMEFI": "MemeFi", + "MEMEFICASH": "MemeFi", "MEMEINU": "Meme Inu", "MEMEM": "Meme Man", "MEMEME": "MEMEME", @@ -9345,6 +9559,7 @@ "MENLO": "Menlo One", "MEO": "Meow Of Meme", "MEOW": "Zero Tech", + "MEOWCAT": "MeowCat", "MEOWETH": "Meow", "MEOWG": "MeowGangs", "MEOWIF": "Meowifhat", @@ -9461,7 +9676,7 @@ "MGOD": "MetaGods", "MGP": "MangoChain", "MGPT": "MotoGP Fan Token", - "MGT": "Megatech", + "MGT": "Moongate", "MGUL": "Mogul Coin", "MGX": "MargiX", "MHAM": "Metahamster", @@ -9481,8 +9696,9 @@ "MICHI": "michi", "MICK": "Mickey Meme", "MICKEY": "Steamboat Willie", - "MICRO": "Micromines", + "MICRO": "Micro GPT", "MICRODOGE": "MicroDoge", + "MICROMINES": "Micromines", "MIDAI": "Midway AI", "MIDAS": "Midas", "MIDASDOLLAR": "Midas Dollar Share", @@ -9504,9 +9720,10 @@ "MILA": "MILADY MEME TOKEN", "MILE": "milestoneBased", "MILEI": "MILEI", - "MILK": "Milkshake Swap", + "MILK": "MilkyWay", "MILK2": "Spaceswap MILK2", "MILKBAG": "MILKBAG", + "MILKSHAKE": "Milkshake Swap", "MILKYWAY": "MilkyWayZone", "MILLI": "Million", "MILLY": "milly", @@ -9529,6 +9746,7 @@ "MINDEX": "Mindexcoin", "MINDGENE": "Mind Gene", "MINDS": "Minds", + "MINDSYNC": "Mindsync", "MINE": "SpaceMine", "MINEA": "Mine AI", "MINER": "MINER", @@ -9538,6 +9756,7 @@ "MINEX": "Minex", "MINGO": "Mingo", "MINI": "mini", + "MINIAPPS": "MiniApps", "MINIBNBTIGER": "MiniBNBTiger", "MINID": "Mini Donald", "MINIDO": "MiniDoge", @@ -9555,6 +9774,7 @@ "MINOCOINCTO": "MINO", "MINS": "Minswap", "MINT": "Mint Club", + "MINTCHAIN": "Mint", "MINTCOIN": "MintCoin", "MINTE": "Minter HUB", "MINTME": "MintMe.com Coin", @@ -9569,9 +9789,11 @@ "MIR": "Mirror Protocol", "MIRA": "Chains of War", "MIRACLE": "MIRACLE", - "MIRAI": "MIRAI", + "MIRAI": "Project MIRAI", + "MIRAIBUILD": "MIRAI", "MIRC": "MIR COIN", "MIRT": "MIR Token", + "MIRX": "Mirada AI", "MIS": "Mithril Share", "MISA": "Sangkara", "MISCOIN": "MIScoin", @@ -9644,7 +9866,7 @@ "MMS": "Marsverse", "MMSC": "MMSC PLATFORM", "MMSS": "MMSS (Ordinals)", - "MMT": "Master MIX Token", + "MMT": "MeMusic", "MMTM": "Momentum", "MMUI": "MetaMUI", "MMULTI": "Multichain (via Multichain Cross-Chain Router)", @@ -9673,6 +9895,7 @@ "MNR": "Mineral", "MNRB": "MoneyRebel", "MNRCH": "Monarch", + "MNRY": "Moonray", "MNS": "Monnos", "MNSRY": "MANSORY", "MNST": "MoonStarter", @@ -9744,8 +9967,9 @@ "MOI": "MyOwnItem", "MOIN": "MoinCoin", "MOJI": "Moji", - "MOJO": "Mojocoin", + "MOJO": "Planet Mojo", "MOJOB": "Mojo on Base", + "MOJOCOIN": "Mojocoin", "MOK": "MocktailSwap", "MOL": "Molecule", "MOLA": "MoonLana", @@ -9762,6 +9986,7 @@ "MONA": "MonaCoin", "MONAIZE": "Monaize", "MONARCH": "TRUEMONARCH", + "MONART": "Monart", "MONAV": "Monavale", "MONB": "MonbaseCoin", "MONDO": "mondo", @@ -9811,6 +10036,7 @@ "MOON": "r/CryptoCurrency Moons", "MOONARCH": "Moonarch", "MOONB": "Moon Base", + "MOONBEANS": "Moonbeans", "MOONBI": "Moonbix", "MOONBIX": "MOONBIX MEME", "MOONC": "MoonCoin", @@ -9824,6 +10050,7 @@ "MOONION": "Moonions", "MOONKIZE": "MoonKize", "MOONLIGHT": "Moonlight Token", + "MOONPIG": "Moonpig", "MOONR": "PulseMoonR", "MOONS": "Sailor Moons", "MOONSHOT": "Moonshot", @@ -9848,7 +10075,7 @@ "MOS": "MOS Coin", "MOSS": "MOSS AI", "MOST": "MOST Global", - "MOT": "Olympus Labs", + "MOT": "Mobius Token", "MOTA": "MotaCoin", "MOTG": "MetaOctagon", "MOTH": "MOTH", @@ -9870,9 +10097,10 @@ "MOWA": "Moniwar", "MOXIE": "Moxie", "MOYA": "MOYA", - "MOZ": "Mozik", + "MOZ": "Lumoz token", "MOZA": "Mozaic", - "MP": "Membership Placeholders", + "MOZIK": "Mozik", + "MP": "MerlinSwap Token", "MP3": "MP3", "MPAA": "MPAA", "MPAD": "MultiPad", @@ -9889,7 +10117,8 @@ "MPM": "Monopoly Meta", "MPRO": "MediumProject", "MPS": "Mt Pelerin Shares", - "MPT": "Meetple", + "MPT": "Miracleplay Token", + "MPTV1": "Miracleplay Token v1", "MPWR": "Empower", "MPX": "Morphex", "MPXT": "Myplacex", @@ -9935,7 +10164,7 @@ "MSHEESHA": "Sheesha Finance Polygon", "MSHIB": "Magic Shiba Starter", "MSHIP": "MetaShipping", - "MSN": "Manson Coin", + "MSN": "Meson.Network", "MSOL": "Marinade Staked SOL", "MSOT": "BTour Chain", "MSP": "Mothership", @@ -9975,6 +10204,7 @@ "MTMS": "MTMS Network", "MTN": "TrackNetToken", "MTO": "Merchant Token", + "MTOS": "MomoAI", "MTP": "Macro Protocol", "MTR": "Meter Stable", "MTRA": "MetaRare", @@ -10233,8 +10463,9 @@ "NEBU": "Nebuchadnezzar", "NEC": "Nectar", "NEER": "Metaverse.Network Pioneer", - "NEET": "NEET Finance", + "NEET": "Not in Employment, Education, or Training", "NEETCOIN": "Neetcoin", + "NEETFINANCE": "NEET Finance", "NEF": "NefariousCoin", "NEFTIPEDIA": "NEFTiPEDiA", "NEFTY": "NeftyBlocks", @@ -10256,6 +10487,7 @@ "NEKOARC": "Neko Arc", "NEKOIN": "Nekoin", "NEKOS": "Nekocoin", + "NEKTAR": "Nektar Token", "NEMO": "NEMO", "NEMS": "The Nemesis", "NEO": "NEO", @@ -10277,9 +10509,10 @@ "NEST": "Nest Protocol", "NESTREE": "Nestree", "NESTV1": "Nest Protocol v1", - "NET": "NetCoin", + "NET": "NET", "NETA": "Negative Tax", "NETC": "NetworkCoin", + "NETCOI": "NetCoin", "NETCOIN": "Netcoincapital", "NETCOINV1": "Netcoincapital v1", "NETK": "Netkoin", @@ -10294,6 +10527,7 @@ "NEURA": "Neurahub", "NEURAL": "NeuralAI", "NEURALINK": "Neuralink", + "NEURO": "NeuroWeb", "NEURON": "Cerebrum DAO", "NEURONI": "Neuroni AI", "NEUROS": "Shockwaves", @@ -10305,7 +10539,6 @@ "NEVANETWORK": "Neva", "NEVE": "NEVER SURRENDER", "NEVER": "neversol", - "NEW": "Newton", "NEWB": "Newbium", "NEWBV1": "Newbium v1", "NEWC": "New Cat", @@ -10324,6 +10557,7 @@ "NEXAI": "NexAI", "NEXBOX": "NexBox", "NEXBT": "Native XBTPro Exchange Token", + "NEXD": "Nexade", "NEXEA": "NEXEA", "NEXG": "NexGami", "NEXM": "Nexum", @@ -10485,7 +10719,7 @@ "NOKU": "NOKU Master token", "NOKUV1": "NOKU Master token v1", "NOLA": "Nola", - "NOM": "Finom NOM Token", + "NOM": "Onomy Protocol", "NOMAI": "nomAI by Virtuals", "NOMNOM": "nomnom", "NOMOX": "NOMOEX Token", @@ -10597,7 +10831,8 @@ "NULS": "Nuls", "NUM": "Numbers Protocol", "NUMBERS": "NumbersCoin", - "NUMI": "Numitor", + "NUMI": "NUMINE Token", + "NUMITOR": "Numitor", "NUR": "Nurcoin", "NUSA": "Nusa", "NUSD": "Nomin USD", @@ -10635,6 +10870,7 @@ "NXM": "Nexus Mutual", "NXMC": "NextMindCoin", "NXN": "Naxion", + "NXPC": "NXPC", "NXQ": "NexQloud", "NXRA": "AllianceBlock Nexera", "NXS": "Nexus", @@ -10680,6 +10916,7 @@ "OBI": "Orbofi AI", "OBICOIN": "OBI Real Estate", "OBITS": "Obits Coin", + "OBOL": "Obol Network", "OBOT": "Obortech", "OBROK": "OBRok", "OBS": "One Basis Cash", @@ -10694,7 +10931,7 @@ "OCADA": "OCADA.AI", "OCAI": "Onchain AI", "OCAVU": "Ocavu Network Token", - "OCB": "BLOCKMAX", + "OCB": "OneCoinBuy", "OCC": "OccamFi", "OCD": "On-Chain Dynamics", "OCE": "OceanEX Token", @@ -10794,6 +11031,7 @@ "OKSE": "Okse", "OKT": "OKT Chain", "OL": "Open Loot", + "OLA": "Ola", "OLAF": "Olaf Token", "OLAND": "Oceanland", "OLAS": "Autonolas", @@ -10810,6 +11048,7 @@ "OLY": "Olyseum", "OLYMP": "OlympCoin", "OLYMPE": "OLYMPÉ", + "OLYMPUSLABS": "Olympus Labs", "OLYN": "Olyn by Virtuals", "OM": "MANTRA", "OMA": "OmegaCoin", @@ -10859,6 +11098,7 @@ "ONIGIRI": "Onigiri The Cat", "ONION": "DeepOnion", "ONIT": "ONBUFF", + "ONIX": "Onix", "ONL": "On.Live", "ONLINE": "Onlinebase", "ONLY": "OnlyCam", @@ -10870,7 +11110,7 @@ "ONT": "Ontology", "ONTACT": "OnTact", "ONUS": "ONUS", - "ONX": "Onix", + "ONX": "OnX.finance", "OOE": "OpenOcean", "OOFP": "OOFP", "OOGI": "OOGI", @@ -10883,6 +11123,7 @@ "OOW": "OPP Open WiFi", "OP": "Optimism", "OPA": "Option Panda Platform", + "OPAI": "Optopia AI", "OPAIG": "OvalPixel", "OPC": "OP Coin", "OPCA": "OP_CAT(BIP-420)", @@ -10943,6 +11184,7 @@ "ORAO": "ORAO Network", "ORARE": "OneRare", "ORB": "KlayCity ORB", + "ORBI": "Orbs", "ORBIS": "Orbis", "ORBIT": "Orbit Protocol", "ORBITCOIN": "Orbitcoin", @@ -10975,6 +11217,7 @@ "ORME": "Ormeus Coin", "ORMO": "Ormolus", "ORN": "Orion Protocol", + "ORNG": "Juice Town", "ORNJ": "Orange", "ORO": "Operon Origins", "OROC": "Orocrypt", @@ -11000,6 +11243,7 @@ "OSIS": "OSIS", "OSK": "OSK", "OSKDAO": "OSK DAO", + "OSKY": "OpenSky Token", "OSL": "OSL AI", "OSMI": "OSMI", "OSMO": "Osmosis", @@ -11027,16 +11271,20 @@ "OUSE": "OUSE Token", "OUSG": "OUSG", "OUT": "Netscouters", + "OUTL": "Outlanders Token", + "OVATO": "Ovato", "OVC": "OVCODE", + "OVER": "OverProtocol", "OVERLORD": "Overlord", "OVN": "Overnight", - "OVO": "Ovato", + "OVO": "OVO", "OVR": "Ovr", "OWC": "Oduwa", "OWD": "Owlstand", "OWL": "OWL Token", - "OWN": "Ownly", + "OWN": "OTHERWORLD", "OWNDATA": "OWNDATA", + "OWNLY": "Ownly", "OWO": "SoMon", "OX": "Open Exchange Token", "OXAI": "OxAI.com", @@ -11077,12 +11325,14 @@ "PACOCA": "Pacoca", "PACP": "PAC Protocol", "PACT": "impactMarket", + "PACTV1": "impactMarket v1", "PAD": "NearPad", "PAF": "Pacific", "PAGE": "Page", - "PAI": "Project Pai", + "PAI": "ParallelAI", "PAID": "PAID Network", "PAIDV1": "PAID Network v1", + "PAIN": "PAIN", "PAINT": "MurAll", "PAIRED": "PairedWorld", "PAJAMAS": "The First Youtube Cat", @@ -11167,8 +11417,9 @@ "PAVO": "Pavocoin", "PAW": "PAWSWAP", "PAWPAW": "PawPaw", - "PAWS": "PawStars", + "PAWS": "PAWS", "PAWSTA": "dogeatingpasta", + "PAWSTARS": "PawStars", "PAWTH": "Pawthereum", "PAXE": "Paxe", "PAXEX": "PAXEX", @@ -11209,7 +11460,7 @@ "PCCM": "Poseidon Chain", "PCD": " Phecda", "PCE": "PEACE COIN", - "PCH": "POPCHAIN", + "PCH": "Pichi", "PCHS": "Peaches.Finance", "PCI": "PayProtocol Paycoin", "PCKB": "pCKB (via Godwoken Bridge from CKB)", @@ -11272,6 +11523,7 @@ "PEG": "PegNet", "PEGA": "PEGA", "PEGAMAGA": "Pepe Maga", + "PEGASCOIN": "Pegascoin", "PEGG": "PokPok Golden Egg", "PEGS": "PegShares", "PEIPEI": "PeiPei", @@ -11301,6 +11553,7 @@ "PENTA": "Penta", "PEON": "Peon", "PEOPLE": "ConstitutionDAO", + "PEOPLEFB": "PEOPLE", "PEOSONE": "pEOS", "PEP": "Pepechain", "PEPA": "Pepa Inu", @@ -11320,7 +11573,8 @@ "PEPEBURN": "Pepeburn", "PEPEC": "Pepe Chain", "PEPECASH": "Pepe Cash", - "PEPECAT": "PEPE CAT", + "PEPECAT": "PEPECAT", + "PEPECATCLUB": "PEPE CAT", "PEPECEO": "REAL PEPE CEO", "PEPECHAIN": "PEPE Chain", "PEPECO": "PEPE COIN BSC", @@ -11386,6 +11640,7 @@ "PERU": "PeruCoin", "PERX": "PeerEx Network", "PESA": "Credible", + "PESETACOIN": "PesetaCoin", "PESHI": "PESHI", "PESOBIT": "PesoBit", "PESTO": "Pesto the Baby King Penguin", @@ -11408,11 +11663,11 @@ "PFID": "Pofid Dao", "PFL": "Professional Fighters League Fan Token", "PFR": "PayFair", - "PFT": "Pitch Finance Token", + "PFT": "PolarFighters", "PFY": "Portify", "PG": "Pepe Grow", "PGALA": "pGALA", - "PGC": "Pegascoin", + "PGC": "PiggyPiggyCoin", "PGEN": "Polygen", "PGF7T": "PGF500", "PGL": "Prospectors", @@ -11471,11 +11726,13 @@ "PICKLE": "Pickle Finance", "PICO": "PicoGo", "PICOLO": "PICOLO", + "PIDOG": "Pi Network Dog", "PIDOGE": "Pi Network Doge", "PIE": "Persistent Information Exchange", "PIERRE": "sacré bleu", "PIF": "Pepe Wif Hat", "PIG": "Pig Finance", + "PIGC": "Pigcoin", "PIGE": "Pige", "PIGEON": "Pigeon In Yellow Boots", "PIGEONC": "Pigeoncoin", @@ -11485,6 +11742,7 @@ "PIGONK": "PIGONK", "PIGS": "Elon Vitalik Pigs", "PIIN": "piin (Ordinals)", + "PIK": "Pika Protocol", "PIKA": "Pikaboss", "PIKACHU": "Pikachu Inu", "PIKACRYPTO": "Pika", @@ -11501,6 +11759,7 @@ "PINETWORKDEFI": "Pi Network DeFi", "PINEYE": "PinEye", "PING": "CryptoPing", + "PINGO": "PinGo", "PINK": "PINK - The Panther", "PINKCOIN": "PinkCoin", "PINKSALE": "PinkSale", @@ -11530,24 +11789,28 @@ "PIST": "Pist Trust", "PIT": "Pitbull", "PITCH": "PITCH", + "PITCHFINANCE": "Pitch Finance Token", + "PITISCOIN": "Pitis Coin", "PIUU": "PIXIU", "PIVN": "PIVN", "PIVX": "Private Instant Verified Transaction", - "PIX": "Lampix", + "PIX": "PixelSwap", "PIXEL": "Pixels", "PIXELV": "PixelVerse", "PIXFI": "Pixelverse", "PIXL": "PIXL", - "PIZA": "Half Pizza", + "PIZA": "PIZA", "PIZPEPE": "Pepe Pizzeria", - "PIZZA": "PizzaSwap", + "PIZZA": "Pizza", "PIZZACOIN": "PizzaCoin", + "PIZZASWAP": "PizzaSwap", "PJM": "Pajama.Finance", "PKB": "ParkByte", "PKC": "Pikciochain", "PKD": "PetKingdom", "PKF": "PolkaFoundry", "PKG": "PKG Token", + "PKIN": "PUMPKIN", "PKN": "Poken", "PKOIN": "Pocketcoin", "PKT": "PKT", @@ -11581,6 +11844,7 @@ "PLEA": "Plearn", "PLEB": "PLEBToken", "PLEBONBASE": "PLEB", + "PLENA": "PLENA", "PLENTY": "Plenty DeFi", "PLEO": "Empleos", "PLERF": "Plerf", @@ -11638,11 +11902,13 @@ "PMR": "Pomerium Utility Token", "PMT": "POWER MARKET", "PMTN": "Peer Mountain", + "PMX": "Primex Finance", "PNB": "Pink BNB", "PNC": "PlatiniumCoin", "PND": "PandaCoin", "PNDC": "Pond Coin", "PNDN": "Pandana", + "PNDO": "Pondo", "PNDR": "Pandora Finance", "PNFT": "Pawn My NFT", "PNG": "Pangolin", @@ -11743,6 +12009,7 @@ "POP": "Popcoin", "POPC": "PopChest", "POPCAT": "Popcat", + "POPCHAIN": "POPCHAIN", "POPCO": "Popcorn", "POPDOG": "PopDog", "POPE": "PopPepe", @@ -11754,6 +12021,7 @@ "POPO": "popo", "POPOETH": "POPO", "POPSICLE": "Popsicle Finance", + "POPU": "Populous", "POPULARCOIN": "PopularCoin", "POR": "Portugal National Team Fan Token", "PORA": "PORA AI", @@ -11787,7 +12055,7 @@ "POUW": "Pouwifhat", "POW": "PowBlocks", "POWELL": "Jerome Powell", - "POWER": "UniPower", + "POWER": "Powerloom Token", "POWR": "Power Ledger", "POWSCHE": "Powsche", "POX": "Monkey Pox", @@ -11809,10 +12077,11 @@ "PPP": "PayPie", "PPR": "Papyrus", "PPS": "PopulStay", - "PPT": "Populous", + "PPT": "Pop Token", "PPY": "Peerplays", "PQT": "Prediqt", "PRA": "ProChain", + "PRAI": "Privasea AI", "PRARE": "Polkarare", "PRB": "Paribu Net", "PRC": "ProsperCoin", @@ -11862,6 +12131,7 @@ "PROFITHUNTERS": "Profit Hunters Coin", "PROGE": "Protector Roge", "PROJECT89": "Project89", + "PROJECTPAI": "Project Pai", "PROLIFIC": "Prolific Game Studio", "PROM": "Prometeus", "PROMPT": "Wayfinder", @@ -11906,7 +12176,8 @@ "PSEUD": "PseudoCash", "PSF": "Prime Shipping Foundation", "PSG": "Paris Saint-Germain Fan Token", - "PSI": "PSIcoin", + "PSI": "Trident", + "PSICOIN": "PSIcoin", "PSILOC": "Psilocybin", "PSK": "Pool of Stake", "PSL": "Pastel", @@ -11927,7 +12198,7 @@ "PT": "Phemex", "PTA": "PentaCoin", "PTAS": "La Peseta", - "PTC": "PesetaCoin", + "PTC": "Particle Trade", "PTD": "Pilot", "PTERIA": "Pteria", "PTF": "PowerTrade Fuel", @@ -11942,6 +12213,7 @@ "PTP": "Platypus Finance", "PTR": "Petro", "PTRUMP": "Pepe Trump", + "PTS": "Petals", "PTT": "Pink Taxi Token", "PTU": "Pintu Token", "PTX": "PlatinX", @@ -11965,7 +12237,8 @@ "PUMA": "Puma", "PUMBAA": "Pumbaa", "PUMLX": "PUMLx", - "PUMP": "PUMP", + "PUMP": "Big Pump", + "PUMPAI": "PumpAI", "PUMPB": "Pump", "PUMPBTC": "pumpBTC", "PUMPFUNBAN": "Pump Fun Ban", @@ -11994,6 +12267,7 @@ "PURA": "Pura", "PURE": "Puriever", "PUREALT": "Pure", + "PURGE": "Forgive Me Father", "PURP": "Purple Platform io", "PURPE": "Purple Pepe", "PURPLEBTC": "Purple Bitcoin", @@ -12093,6 +12367,7 @@ "QIE": "QI Blockchain", "QINGWA": "ShangXin QingWa", "QISWAP": "QiSwap", + "QKA": "Qkacoin", "QKC": "QuarkChain", "QKNTL": "Quick Intel", "QLC": "Kepple [OLD]", @@ -12186,6 +12461,7 @@ "RABB": "Rabbit INU", "RABBI": "Len \"rabbi\" Sassaman", "RABBIT": "Rabbit Finance", + "RABBITC": "RabBitcoin", "RABI": "Rabi", "RAC": "RAcoin", "RACA": "Radio Caca", @@ -12238,7 +12514,7 @@ "RAT": "RatCoin", "RATECOIN": "Ratecoin", "RATING": "DPRating", - "RATIO": "Ratio", + "RATIO": "Ratio Governance Token", "RATS": "Rats", "RATWIF": "RatWifHat", "RAVE": "Ravendex", @@ -12310,12 +12586,16 @@ "REA": "Realisto", "REACH": "/Reach", "REACT": "Reactive Network", + "READY": "READY!", "REAL": "RealLink", "REALESTATE": "RealEstate", + "REALIS": "Realis Worlds", "REALM": "Realm", "REALMS": "Realms of Ethernity", "REALP": "Real Pepe", "REALPLATFORM": "REAL", + "REALPUMPITCOIN": "PUMP", + "REALR": "Real Realm", "REALTRACT": "RealTract", "REALUSD": "Real USD", "REALUSDV1": "Real USD v1", @@ -12373,7 +12653,9 @@ "REI": "REI Network", "REIGN": "Reign of Terror", "REINDEER": "Reindeer", - "REKT": "REKT", + "REK": "Rekt", + "REKT": "Rekt", + "REKTV1": "REKT", "REKTV2": "REKT 2.0", "REKTV3": "REKT v3 (rekt.game)", "REL": "Reliance", @@ -12440,7 +12722,7 @@ "REW": "Review.Network", "REWARD": "Rewardable", "REWARDS": "Solana Rewards", - "REX": "Imbrex", + "REX": "REVOX", "REXBT": "rexbt by VIRTUALS", "REXHAT": "rexwifhat", "REZ": "Renzo", @@ -12476,8 +12758,9 @@ "RIBB": "Ribbit", "RIBBIT": "Ribbit", "RIC": "Riecoin", - "RICE": "RiceFarm", + "RICE": "DAOSquare Governance Token", "RICECOIN": "RiceCoin", + "RICEFARM": "RiceFarm", "RICHIE": "Richie2.0", "RICHIEV1": "Richie", "RICHOFME": "Rich Of Memes", @@ -12533,6 +12816,7 @@ "RIZZMAS": "Rizzmas", "RJV": "Rejuve.AI", "RKC": "Royal Kingdom Coin", + "RKEY": "RKEY", "RKI": "RAKHI", "RKN": "RAKON", "RKR": "REAKTOR", @@ -12584,7 +12868,7 @@ "ROBOTAXI": "ROBOTAXI", "ROC": "Rasputin Online Coin", "ROCCO": "Just A Rock", - "ROCK": "Bedrock", + "ROCK": "Zenrock", "ROCK2": "Ice Rock Mining", "ROCKET": "Team Rocket", "ROCKETCOIN": "RocketCoin", @@ -12705,8 +12989,9 @@ "RUBB": "Rubber Ducky Cult", "RUBCASH": "RUBCASH", "RUBIT": "Rublebit", + "RUBIUS": "Rubius", "RUBX": "eToro Russian Ruble", - "RUBY": "Rubius", + "RUBY": "RubyToken", "RUBYEX": "Ruby.Exchange", "RUC": "Rush", "RUFF": "Ruff", @@ -12718,7 +13003,9 @@ "RUM": "RUM Pirates of The Arrland Token", "RUN": "Run", "RUNE": "Thorchain", + "RUNESX": "RUNES·X·BITCOIN", "RUNEVM": "RUNEVM", + "RUNI": "Runesterminal", "RUNNER": "Runner", "RUNY": "Runy", "RUP": "Rupee", @@ -12749,7 +13036,7 @@ "RVST": "Revest Finance", "RVT": "Rivetz", "RVX": "Rivex", - "RWA": "Xend Finance", + "RWA": "RWA Inc.", "RWAECO": "RWA Ecosystem", "RWAS": "RWA Finance", "RWB": "RawBlock", @@ -12786,6 +13073,7 @@ "SAAD": "Saad Boi", "SAAS": "SaaSGo", "SABAI": "Sabai Protocol", + "SABER": "Saber", "SABLE": "Sable Finance", "SABR": "SABR Coin", "SAC1": "Sable Coin", @@ -12873,6 +13161,7 @@ "SATA": "Signata", "SATAN": "MrBeast's Cat", "SATO": "Atsuko Sato", + "SATOPAY": "SatoPay", "SATORI": "Satori Network", "SATOSHINAKAMOTO": "Satoshi Nakamoto", "SATOX": "Satoxcoin", @@ -12890,6 +13179,7 @@ "SAUNA": "SaunaFinance Token", "SAV": "Save America", "SAV3": "SAV3", + "SAVEOCEAN": "Save The Ocean", "SAVG": "SAVAGE", "SAVM": "SatoshiVM", "SAY": "SAY Coin", @@ -12908,7 +13198,7 @@ "SBIO": "Vector Space Biosciences, Inc.", "SBNB": "Binance Coin (SpookySwap)", "SBOX": "SUIBOXER", - "SBR": "Saber", + "SBR": "STRATEGIC BITCOIN RESERVE", "SBRT": "SaveBritney", "SBSC": "Subscriptio", "SBT": "SOLBIT", @@ -13048,6 +13338,7 @@ "SENATE": "SENATE", "SENC": "Sentinel Chain", "SEND": "Suilend", + "SENDCOIN": "Sendcoin", "SENDOR": "Sendor", "SENK": "Senk", "SENNO": "SENNO", @@ -13107,7 +13398,7 @@ "SFRC": "Safari Crush", "SFRXETH": "Frax Staked Ether", "SFRXUSD": "Staked Frax USD", - "SFT": "SportsFix", + "SFT": "Fightly", "SFTMX": "Stader sFTMX", "SFTY": "Stella Fantasy", "SFU": "Saifu", @@ -13180,6 +13471,7 @@ "SHIB05": "Half Shiba Inu", "SHIB1": "Shib1", "SHIB2": "SHIB2", + "SHIB20": "Shib2.0", "SHIBA": "Shibaqua", "SHIBAAI": "SHIBAAI", "SHIBAC": "SHIBA CLASSIC", @@ -13188,6 +13480,7 @@ "SHIBAI": "AiShiba", "SHIBAKEN": "Shibaken Finance", "SHIBAMOM": "Shiba Mom", + "SHIBANCE": "Shibance Token", "SHIBAR": "Shibarium Name Service", "SHIBARMY": "Shib Army", "SHIBAW": "Shiba $Wing", @@ -13242,6 +13535,7 @@ "SHK": "Shrike", "SHL": "Oyster Shell", "SHLD": "ShieldCoin", + "SHM": "Shardeum", "SHND": "StrongHands", "SHNT": "Sats Hunters", "SHO": "Showcase Token", @@ -13298,9 +13592,10 @@ "SIFU": "SIFU", "SIG": "Signal", "SIGMA": "SIGMA", - "SIGN": "Sign Token", + "SIGN": "Sign", "SIGNA": "Signa", "SIGNAT": "SignatureChain", + "SIGNMETA": "Sign Token", "SIGT": "Signatum", "SIGU": "Singular", "SIKA": "SikaSwap", @@ -13403,6 +13698,7 @@ "SKX": "SKPANAX", "SKY": "Sky", "SKYA": "Sekuya Multiverse", + "SKYAI": "SKYAI", "SKYCOIN": "Skycoin", "SKYFT": "SKYFchain", "SKYM": "SkyMap", @@ -13432,6 +13728,7 @@ "SLING": "Sling Coin", "SLINK": "Soft Link", "SLISBNB": "Lista Staked BNB", + "SLK": "SLK", "SLM": "SlimCoin", "SLN": "Smart Layer Network", "SLND": "Solend", @@ -13458,8 +13755,9 @@ "SMAC": "Social Media Coin", "SMAK": "Smartlink", "SMARS": "SafeMars", - "SMART": "SmartCash", + "SMART": "Smart game", "SMARTB": "Smart Coin", + "SMARTCASH": "SmartCash", "SMARTCREDIT": "SmartCredit Token", "SMARTH": "SmartHub", "SMARTLOX": "SmartLOX", @@ -13470,6 +13768,7 @@ "SMARTSHARE": "Smartshare", "SMARTUP": "Smartup", "SMAT": "Smathium", + "SMB": "SMB Token", "SMBR": "Sombra", "SMBSWAP": "SimbCoin Swap", "SMC": "SmartCoin", @@ -13483,7 +13782,9 @@ "SMI": "SafeMoon Inu", "SMIDGE": "Smidge", "SMIDGEETH": "Smidge", - "SMILE": "Smile Token", + "SMIL": "Smile Token", + "SMILE": "bitSmiley", + "SMILEAI": "Smile AI", "SMILEK": "Smilek to the Bank", "SMILEY": "SMILEY", "SMILY": "Smily Trump", @@ -13522,11 +13823,14 @@ "SNAI": "SwarmNode.ai", "SNAIL": "SnailBrook", "SNAKE": "snake", + "SNAKEAI": "Snake-ai", "SNAKEMOON": "Snakemoon", "SNAKES": "Snakes Game", + "SNAKETOKEN": "Snake Token", "SNAKT": "Sna-King Trump", "SNAP": "SnapEx", "SNAPCAT": "Snapcat", + "SNAPKERO": "SNAP", "SNB": "SynchroBitcoin", "SNC": "SunContract", "SNCT": "SnakeCity", @@ -13546,7 +13850,7 @@ "SNIP": "LyrnAI", "SNIPPEPE": "SNIPING PEPE", "SNITCH": "Randall", - "SNK": "Snake Token", + "SNK": "Snook", "SNL": "Sport and Leisure", "SNM": "SONM", "SNMT": "Satoshi Nakamoto Token", @@ -13566,6 +13870,7 @@ "SNPAD": "SNP adverse", "SNPC": "SnapCoin", "SNPS": "Snaps", + "SNPT": "SNPIT TOKEN", "SNRG": "Synergy", "SNRK": "Snark Launch", "SNS": "Synesis One", @@ -13694,7 +13999,9 @@ "SONICWIF": "SonicWifHat", "SONNE": "Sonne Finance", "SONOF": "Son of Solana", - "SOON": "Soonaverse", + "SONOR": "SonorusToken", + "SOON": "SOON", + "SOONAVERSE": "Soonaverse", "SOONCOIN": "SoonCoin", "SOOTCASE": "I like my sootcase", "SOP": "SoPay", @@ -13707,14 +14014,13 @@ "SORAETH": "SORA", "SORAI": "Sora AI", "SORAPORN": "Sora Porn", - "SOSNOVKINO": "Sosnovkino", "SOSO": "SoSoValue", - "SOSWAP": "Solana Swap", "SOT": "Soccer Crypto", "SOTA": "SOTA Finance", "SOUL": "Phantasma", "SOULO": "SouloCoin", - "SOULS": "Soulsaver", + "SOULS": "Unfettered Ecosystem", + "SOULSA": "Soulsaver", "SOUND": "Sound Coin", "SOURCE": "ReSource Protocol", "SOUTH": "DeepSouth AI", @@ -13729,9 +14035,11 @@ "SP8DE": "Sp8de", "SPA": "Sperax", "SPAC": "SPACE DOGE", - "SPACE": "Spacelens", + "SPACE": "MicroVisionChain", "SPACECOIN": "SpaceCoin", "SPACED": "SPACE DRAGON", + "SPACEHAMSTER": "Space Hamster", + "SPACELENS": "Spacelens", "SPACEM": "Spacem Token", "SPACEPI": "SpacePi", "SPAD": "SolPad", @@ -13785,7 +14093,8 @@ "SPHYNXV3": "Sphynx Token v3", "SPHYNXV4": "Sphynx Token v4", "SPI": "Shopping.io", - "SPICE": "Spice", + "SPICE": "SPICE", + "SPICETOKEN": "Spice", "SPIDER": "Spider Man", "SPIDERMAN": "SPIDERMAN BITCOIN", "SPIDEY": "Spidey", @@ -13816,7 +14125,10 @@ "SPORE": "Spore", "SPORT": "SportsCoin", "SPORTS": "ZenSports", + "SPORTSFIX": "SportsFix", "SPORTSP": "SportsPie", + "SPOT": "Defispot", + "SPOTCOIN": "Spotcoin", "SPOTS": "Spots", "SPOX": "Sports Future Exchange Token", "SPRING": "Spring", @@ -13839,6 +14151,7 @@ "SPXC": "SpaceXCoin", "SPY": "Smarty Pay", "SPYRO": "SPYRO", + "SQ3": "Squad3", "SQAT": "Syndiqate", "SQD": "SQD", "SQG": "Squid Token", @@ -13869,6 +14182,7 @@ "SRCX": "Source Token", "SREUR": "SocialRemit", "SRG": "Street Runner NFT", + "SRGD": "Studio Releasing Gold", "SRK": "SparkPoint", "SRLTY": "SaitaRealty", "SRLY": "Rally (Solana)", @@ -13880,6 +14194,7 @@ "SRWD": "ShibRWD", "SRX": "StorX", "SS": "Sharder", + "SS20": "Shell Trade", "SSB": "SatoshiStreetBets", "SSC": "SelfSell", "SSD": "Sonic Screw Driver Coin", @@ -13915,6 +14230,7 @@ "STACK": "StackOS", "STACKS": " STACKS PAY", "STACS": "STACS Token", + "STAGE": "Stage", "STAK": "Jigstack", "STAKE": "xDai Chain", "STAKEDETH": "StakeHound Staked Ether", @@ -13923,7 +14239,7 @@ "STAN": "Stank Memes", "STANDARD": "Stakeborg DAO", "STAPT": "Ditto Staked Aptos", - "STAR": "FileStar", + "STAR": "StarHeroes", "STAR10": "Ronaldinho Coin", "STARAMBA": "Staramba", "STARBASE": "Starbase", @@ -13946,7 +14262,8 @@ "STARTER": "Starter.xyz", "STARWARS": "Star Wars", "STARX": "STARX TOKEN", - "STASH": "BitStash", + "STASH": "STASH INU", + "STASHV1": "BitStash", "STAT": "STAT", "STATE": "New World Order", "STATER": "Stater", @@ -13995,6 +14312,7 @@ "STHYPE": "Staked HYPE", "STI": "Seek Tiger", "STIC": "StickMan", + "STICKMAN": "stickman", "STIK": "Staika", "STIMA": "STIMA", "STING": "Sting", @@ -14016,10 +14334,11 @@ "STMAN": "Stickman Battleground", "STMATIC": "Lido Staked Matic", "STMX": "StormX", + "STMXV1": "StormX v1", "STND": "Standard Protocol", "STNEAR": "Staked NEAR", "STNK": "Stonks", - "STO": "Save The Ocean", + "STO": "StakeStone", "STOC": "STO Cash", "STOCK": "Digital Asset Stockpile", "STOG": "Stooges", @@ -14030,7 +14349,7 @@ "STONEDE": "Stone DeFi", "STONK": "STONK", "STONKS": "HarryPotterObamaWallStreetBets10Inu", - "STOP": "SatoPay", + "STOP": "LETSTOP", "STOR": "Self Storage Coin", "STORE": "Bit Store", "STOREP": "Storepay", @@ -14052,7 +14371,8 @@ "STRAY": "Stray Dog", "STRD": "Stride", "STRDY": "Sturdy", - "STREAM": "STREAMIT COIN", + "STREAM": "Streamflow", + "STREAMIT": "STREAMIT COIN", "STREETH": "STREETH", "STRI": "Strite", "STRIKE": "Strike", @@ -14105,9 +14425,11 @@ "SUCR": "Sucre", "SUD": "Sudo Labs", "SUDO": "sudoswap", + "SUEDE": "Johnny Suede", "SUGAR": "Sugar Exchange", "SUI": "Sui", "SUIA": "SUIA", + "SUIAGENT": "aiSUI", "SUIAI": "SUI Agents", "SUIB": "Suiba Inu", "SUIDEPIN": "Sui DePIN", @@ -14117,6 +14439,7 @@ "SUIMON": "Sui Monster", "SUIP": "SuiPad", "SUIRWA": "Sui RWA", + "SUIRWAPIN": "SUIRWAPIN", "SUISHIB": "SuiShiba", "SUITE": "Suite", "SUKI": "SUKI", @@ -14234,6 +14557,7 @@ "SWISE": "StakeWise", "SWITCH": "Switch", "SWM": "Swarm Fund", + "SWO": "SwordMagicToken", "SWOLE": "Swole Doge", "SWOP": "Swop", "SWORD": "eZKalibur", @@ -14257,6 +14581,7 @@ "SXM": "saxumdao", "SXP": "SXP", "SXS": "Sphere", + "SXT": "Space and Time", "SXUT": "SPECTRE Utility Token", "SYA": "SaveYourAssets", "SYBC": "SYB Coin", @@ -14327,12 +14652,13 @@ "TANG": "Tangent", "TANGO": "keyTango", "TANGYUAN": "TangYuan", - "TANK": "CryptoTanks", + "TANK": "AgentTank", "TANPIN": "Tanpin", "TANUKI": "Tanuki", "TANUPAD": "Tanuki Launchpad", "TAO": "Bittensor", "TAOBOT": "tao.bot", + "TAOCAT": "TAOCat by Virtuals", "TAONU": "TAO INU", "TAOP": "TaoPad", "TAOTOOLS": "TAOTools", @@ -14445,6 +14771,7 @@ "TELO": "Telo Meme Coin", "TELOS": "Teloscoin", "TEM": "Temtum", + "TEMA": "Tema", "TEMCO": "TEMCO", "TEMM": "TEM MARKET", "TEMP": "Tempus", @@ -14474,6 +14801,7 @@ "TERR": "Terrier", "TERRA": "Terraport", "TERRAB": "TERRABYTE AI", + "TERRACOIN": "TerraCoin", "TERRY": "Terry The Disgruntled Turtle", "TERZ": "SHELTERZ", "TES": "TeslaCoin", @@ -14485,6 +14813,7 @@ "TETH": "Treehouse ETH", "TETHYS": "Tethys", "TETRA": "Tetra", + "TETSUO": "Tetsuo Coin", "TETU": "TETU", "TEVA": "Tevaera", "TEW": "Trump in a memes world", @@ -14543,6 +14872,7 @@ "THG": "Thetan Arena", "THIK": "ThikDik", "THING": "Nothing", + "THINGSOP": "ThingsOperatingSystem", "THINKWAREAI": "ThinkwareAI", "THISISF": "This is Fine", "THL": "Thala", @@ -14601,7 +14931,7 @@ "TINU": "Telegram Inu", "TINY": "TinyBits", "TIOX": "TIOx", - "TIP": "Tip Blockchain", + "TIP": "Tip", "TIPC": "Tipcoin", "TIPINU": "Tip Inu", "TIPS": "FedoraCoin", @@ -14674,13 +15004,14 @@ "TOC": "TouchCon", "TODAY": "TodayCoin", "TODD": "TURBO TODD", - "TOK": "Tokenplace", + "TOK": "Tokai", "TOKA": "Tonka Finance", "TOKAMAK": "Tokamak Network", "TOKAU": "Tokyo AU", "TOKC": "Tokyo Coin", "TOKE": "Tokemak", "TOKEN": "TokenFi", + "TOKENPLACE": "Tokenplace", "TOKENSTARS": "TokenStars", "TOKERO": "TOKERO LevelUP Token", "TOKKI": "CRYPTOKKI", @@ -14691,6 +15022,7 @@ "TOLO": "Tolo Yacoloco", "TOLYCAT": "Toly's Cat", "TOM": "TOM Finance", + "TOMA": "TomaInfo", "TOMAHAWKCOIN": "Tomahawkcoin", "TOMAN": "IRR", "TOMB": "Tomb", @@ -14738,7 +15070,7 @@ "TORO": "Toro Inoue", "TOROSOL": "Toro", "TORSY": "TORSY", - "TOS": "ThingsOperatingSystem", + "TOS": "Cryptos", "TOSA": "TosaInu BSC", "TOSC": "T.OS", "TOSDIS": "TosDis", @@ -14801,7 +15133,7 @@ "TRB": "Tellor", "TRBT": "Tribute", "TRBV1": "Tellor Tributes v1", - "TRC": "TerraCoin", + "TRC": "Terrace", "TRCB": "TRCB Chain", "TRCL": "Treecle", "TRCT": "Tracto", @@ -14810,7 +15142,8 @@ "TRDS": "Traders Token", "TRDT": "Trident", "TRDX": "Trendix", - "TREAT": "Treat", + "TREA": "Treat", + "TREAT": "Shiba Inu Treat", "TREB": "Treble", "TRECENTO": "Trecento Blockchain Capital", "TREE": "Tree", @@ -14845,7 +15178,8 @@ "TRNGUY": "Tron Guy Project", "TROG": "Trog", "TROGE": "Troge", - "TROLL": "Trollcoin", + "TROLL": "TROLL", + "TROLLC": "Trollcoin", "TROLLHEIM": "Trollheim", "TROLLICTO": "TROLLI CTO", "TROLLMODE": "TROLL MODE", @@ -14891,7 +15225,8 @@ "TRUMPCAT": "TRUMPCAT", "TRUMPCATF": "Trump Cat Family", "TRUMPCATS": "Trump Golden Cat", - "TRUMPCOIN": "TrumpCoin", + "TRUMPCOIN": "MAGA: Fight for Trump", + "TRUMPCOINROCKS": "TrumpCoin", "TRUMPDAO": "TRUMP DAO", "TRUMPDO": "TRUMP", "TRUMPDOGE": "Trump Doge", @@ -14955,6 +15290,7 @@ "TSLT": "Tamkin", "TSN": "Tsunami Exchange Token", "TSO": "Thesirion", + "TSOTCHKE": "tsotchke", "TSR": "Tesra", "TST": "Test", "TSTAI": "Test AI", @@ -14965,7 +15301,7 @@ "TSUKA": "Dejitaru Tsuka", "TSX": "TradeStars", "TT": "ThunderCore", - "TTC": "TTC PROTOCOL", + "TTC": "TonTycoon", "TTF": "TurboTrix Finance", "TTK": "The Three Kingdoms", "TTM": "Tradetomato", @@ -14984,6 +15320,7 @@ "TULIP": "Tulip Protocol", "TUNA": "TUNACOIN", "TUNE": "Bitune", + "TUNETRADEX": "TuneTrade", "TUP": "Tenup", "TUPE": "Turtle Pepe", "TUR": "Turron", @@ -15034,7 +15371,7 @@ "TXC": "TEXITcoin", "TXG": "TRUSTxGAMING", "TXL": "Autobahn Network", - "TXT": "TuneTrade", + "TXT": "Taxa Token", "TYBENG": "TYBENG", "TYBG": "Base God", "TYBGSc": "Base Goddess", @@ -15044,6 +15381,7 @@ "TYLER": "Tyler", "TYOGHOUL": "TYO GHOUL", "TYPE": "TypeAI", + "TYPEL": "TypeIt", "TYPERIUM": "Typerium", "TYPUS": "Typus", "TYRANT": "Fable Of The Dragon", @@ -15054,6 +15392,7 @@ "TZKI": "Tsuzuki Inu", "TZU": "Sun Tzu", "U": "Unidef", + "U2U": "U2U Network", "U8D": "Universal Dollar", "UAEC": "United Arab Emirates Coin", "UAHG": "UAHg", @@ -15152,6 +15491,7 @@ "UMT": "UnityMeta", "UMX": "UniMex Network", "UMY": "KaraStar UMY", + "UNA": "Unagi Token", "UNAT": "Unattanium", "UNB": "Unbound Finance", "UNBNK": "Unbanked", @@ -15159,6 +15499,7 @@ "UNC": "UnCoin", "UNCL": "UNCL", "UNCN": "Unseen", + "UNCOMMONGOODS": "UNCOMMON•GOODS", "UNCX": "UniCrypt", "UND": "United Network Distribution", "UNDB": "unibot.cash", @@ -15185,8 +15526,11 @@ "UNIL": "UniLayer", "UNIM": "Unicorn Milk", "UNIO": "Unio Coin", + "UNIPOWER": "UniPower", + "UNIPT": "Universal Protocol Token", "UNIQ": "Uniqredit", "UNIQUE": "Unique One", + "UNIR": "UniRouter", "UNISD": "unified Stable Dollar", "UNISDV1": "uniswap State Dollar", "UNISTAKE": "Unistake", @@ -15232,7 +15576,7 @@ "UPR": "Upfire", "UPRO": "ULTRAPRO", "UPS": "UPFI Network", - "UPT": "Universal Protocol Token", + "UPT": "UPROCK", "UPTOS": "UPTOS", "UPUNK": "Unicly CryptoPunks Collection", "UPUSD": "Universal US Dollar", @@ -15242,7 +15586,9 @@ "URAC": "Uranus", "URALS": "Urals Coin", "URFA": "Urfaspor Token", - "URO": "UroCoin", + "URMOM": "urmom", + "URO": "Urolithin A", + "UROCOIN": "UroCoin", "URQA": "UREEQA", "URS": "URUS", "URUS": "Urus Token", @@ -15255,7 +15601,7 @@ "USCC": "USC", "USCOIN": "USCoin", "USD0": "Usual", - "USD1": "USD1", + "USD1": "World Liberty Financial USD", "USD3": "Web 3 Dollar", "USDA": "USDa", "USDACC": "USDA", @@ -15292,6 +15638,7 @@ "USDMA": "USD mars", "USDN": "Neutral AI", "USDO": "USD Open Dollar", + "USDONE": "Currency One USD", "USDP": "Pax Dollar", "USDPLUS": "Overnight.fi USD+", "USDQ": "Quantoz USDQ", @@ -15396,6 +15743,7 @@ "VANCE": "JD Vance", "VANCEMEME": "Vance Meme", "VANF": "Van Fwogh", + "VANKEDISI": "vankedisi", "VANRY": "Vanar Chain", "VANT": "Vanta Network", "VANY": "Vanywhere", @@ -15427,6 +15775,7 @@ "VCF": "Valencia CF Fan Token", "VCG": "VCGamers", "VCHF": "VNX Swiss Franc", + "VCI": "VinciToken", "VCK": "28VCK", "VCNT": "ViciCoin", "VCORE": "VCORE", @@ -15457,6 +15806,7 @@ "VEIL": "VEIL", "VEKTOR": "VEKTOR", "VELA": "Vela Token", + "VELAAI": "velaai", "VELAR": "Velar", "VELO": "Velo", "VELOD": "Velodrome Finance", @@ -15482,6 +15832,7 @@ "VERSA": "Versa Token", "VERSACE": "VERSACE", "VERSE": "Verse", + "VERT": "VERT", "VERTAI": "Vertical AI", "VERTEX": "Vertex", "VERUM": "Verum Coin", @@ -15549,6 +15900,7 @@ "VIS": "Vigorus", "VISIO": "Visio", "VISION": "VisionGame", + "VISIONCITY": "Vision City", "VISR": "Visor", "VIST": "VISTA", "VISTA": "Ethervista", @@ -15567,12 +15919,13 @@ "VITY": "Vitteey", "VIU": "Viuly", "VIVEK": "Head of D.O.G.E", + "VIVI": "LH VIVI", "VIVID": "Vivid Coin", "VIVO": "VIVO Coin", "VIX": "VIXCO", "VIX7": "VIX777", "VIXV1": "VIXCO v1", - "VIZ": "Vision City", + "VIZ": "VIZ Token", "VIZION": "ViZion Protocol", "VIZSLASWAP": "VizslaSwap", "VKNF": "VKENAF", @@ -15627,6 +15980,7 @@ "VOLTX": "VolatilityX", "VOLTZ": "Voltz", "VOLX": "VolumeX", + "VON": "Vameon", "VONE": "Vone", "VONSPEED": "Andrea Von Speed", "VOOT": "VootCoin", @@ -15647,6 +16001,7 @@ "VPS": "VPS AI", "VPT": "Veritas Protocol", "VR": "Victoria", + "VR1": "VR1", "VRA": "Verasity", "VRC": "Virtual Coin", "VRGW": "Virtual Reality Game World", @@ -15727,6 +16082,7 @@ "W12": "W12 Protocol", "W2E": "Walk To Earn", "W3C": "W3Coin", + "W3GG": "W3GG Token", "W3M": "Web3Met", "W3S": "Web3Shot", "W3W": "Web3 Whales", @@ -15788,10 +16144,12 @@ "WASSIE": "WASSIE", "WASTED": "WastedLands", "WASTR": "Wrapped Astar", - "WAT": "Wat", + "WAT": "WATCoin", + "WAT0X63": "Wat", "WATC": "WATCoin", "WATCH": "Yieldwatch", - "WATER": "doginwotah", + "WATER": "WATER", + "WATT": "WATTTON", "WAVAX": "Wrapped AVAX", "WAVES": "Waves", "WAVESCOMM": "Waves Community Token", @@ -15858,6 +16216,7 @@ "WEALTH": "WealthCoin", "WEAPON": "MEGAWEAPON", "WEAR": "MetaWear", + "WEAVE6": "Weave6", "WEB": "Webcoin", "WEB3": "WEB3 Inu", "WEB4": "WEB4 AI", @@ -15885,6 +16244,7 @@ "WELA": "Wrapped Elastos", "WELD": "Weld", "WELL": "Moonwell", + "WELL3": "WELL3", "WELLTOKEN": "Well", "WELLV1": "Moonwell v1", "WELON": "WrappedElon", @@ -15941,6 +16301,7 @@ "WHALE": "WHALE", "WHALES": "Whales Market", "WHAT": "What the Duck", + "WHATSONPIC": "WhatsOnPic", "WHBAR": "Wrapped HBAR", "WHC": "Whales Club", "WHEAT": "Wheat Token", @@ -15964,6 +16325,8 @@ "WHX": "WHITEX", "WHY": "WHY", "WHYCAT": "WhyCat", + "WHYPAD": "Unamano", + "WHYPADV1": "Unamano v1", "WIB": "Wibson", "WIBE": "Wibegram", "WIC": "Wi Coin", @@ -16005,6 +16368,7 @@ "WINTER": "Winter", "WINU": "Walter Inu", "WINX": "WinX.io", + "WIOTA": "wIOTA", "WIOTX": "Wrapped IoTeX", "WIRE": "717ai by Virtuals", "WIRTUAL": "Wirtual", @@ -16020,6 +16384,7 @@ "WIWI": "Wiggly Willy", "WIX": "Wixlar", "WIZA": "Wizardia", + "WIZZ": "Wizzwoods Token", "WJD": "WJD", "WJEWEL": "WJEWEL", "WJXN": "Jax.Network", @@ -16062,6 +16427,7 @@ "WNCG": "Wrapped NCG", "WND": "WonderHero", "WNDR": "Wonderman Nation", + "WNE": "Winee3", "WNEAR": "Wrapped Near", "WNEON": "Wrapped Neon EVM", "WNET": "Wavesnode.net", @@ -16075,7 +16441,7 @@ "WNYC": "Wrapped NewYorkCoin", "WNZ": "Winerz", "WOA": "Wrapped Origin Axie", - "WOD": "World of Defish", + "WOD": "World of Dypians", "WOETH": "Wrapped Origin Ether", "WOFM": "World of Masters", "WOID": "WORLD ID", @@ -16105,7 +16471,7 @@ "WONE": "Wrapped Harmony", "WOO": "WOO Network", "WOOD": "Mindfolk Wood", - "WOOF": "Shibance Token", + "WOOF": "WoofWork.io", "WOOFY": "Woofy", "WOOL": "Wolf Game Wool", "WOONK": "Woonkly", @@ -16116,10 +16482,12 @@ "WOP": "WorldPay", "WOR": "Hollywood Capital Group WARRIOR", "WORK": "Work X", + "WORKCHAIN": "WorkChain.io", "WORKE": "Worken", "WORKIE": "Workie", "WORL": "World Record Banana", "WORLD": "World Token", + "WORLDOFD": "World of Defish", "WORM": "HealthyWorm", "WORX": "Worx", "WOS": "Wolf Of Solana", @@ -16339,7 +16707,8 @@ "XELS": "XELS Coin", "XEM": "NEM", "XEN": "XEN Crypto", - "XEND": "Xend Finance", + "XENDV1": "Xend Finance", + "XENDV2": "Xend Finance", "XENIX": "XenixCoin", "XENO": "Xeno", "XENOVERSE": "Xenoverse", @@ -16365,6 +16734,7 @@ "XGD": "X Gold", "XGEM": "Exchange Genesis Ethlas Medium", "XGLI": "Glitter Finance", + "XGN": "0xGen", "XGOLD": "XGOLD COIN", "XGOX": "Go!", "XGP": "XGP", @@ -16489,6 +16859,7 @@ "XQN": "Quotient", "XQR": "Qredit", "XQUOK": "XQUOK", + "XR": "Xraders", "XRA": "Xriba", "XRAI": "X-Ratio A", "XRAY": "Ray Network", @@ -16496,6 +16867,7 @@ "XRD": "Radix", "XRDOGE": "XRdoge", "XRE": "RevolverCoin", + "XREA": "XREATORS", "XRGB": "XRGB", "XRISE": "Xrise", "XRL": "Rialto.AI", @@ -16517,7 +16889,7 @@ "XSAUCE": "xSAUCE", "XSC": "Hyperspace", "XSD": "SounDAC", - "XSEED": "BitSeeds", + "XSEED": "XSEED", "XSGD": "XSGD", "XSH": "SHIELD", "XSHIB": "XSHIB", @@ -16556,6 +16928,7 @@ "XTRM": "XTRM COIN", "XTRUMP": "X TRUMP", "XTT": "XSwap Treasure", + "XTTA": "XTTA", "XTTB20": "XTblock", "XTUSD": "XT Stablecoin XTUSD", "XTV": "XTV", @@ -16585,6 +16958,7 @@ "XY": "XY Finance", "XYM": "Symbol", "XYO": "XY Oracle", + "XYRO": "XYRO", "XYZ": "Universe.XYZ", "XZK": "Mystiko Network", "Y24": "Yield 24", @@ -16605,6 +16979,7 @@ "YAMV2": "YAM v2", "YAOYAO": "Yaoyao's Cat", "YAP": "Yap Stone", + "YAPSTER": "YAPSTER", "YARL": "Yarloo", "YAW": "Yawww", "YAWN": "YAWN", @@ -16705,6 +17080,7 @@ "YOUSIM": "YouSim", "YOVI": "YobitVirtualCoin", "YOYOW": "Yoyow", + "YOZI": "YoZi Protocol", "YPC": "YoungParrot", "YPIE": "PieDAO Yearn Ecosystem Pie", "YPRISMA": "Yearn yPRISMA", @@ -16745,13 +17121,15 @@ "YYE": "YYE Energy", "YYFI": "YYFI.Protocol", "YYOLO": "yYOLO", - "YZY": "Yeezy", + "YZY": "Swasticoin", "Z3": "Z-Cubed", + "ZAAR": "THE•ORDZAAR•RUNES", "ZABAKU": "Zabaku Inu", "ZACK": "Zack Morris", "ZAFI": "ZakumiFi", - "ZAI": "Zero Collateral Dai", + "ZAI": "Zen AI", "ZAIF": "Zaif Token", + "ZAIFIN": "Zero Collateral Dai", "ZAM": "Zamio", "ZAMZAM": "ZAMZAM", "ZANO": "Zano", @@ -16794,26 +17172,28 @@ "ZEBU": "ZEBU", "ZEC": "ZCash", "ZECD": "ZCashDarkCoin", - "ZED": "ZED Token", - "ZEDCOIN": "ZedCoin", + "ZED": "ZedCoins", "ZEDD": "ZedDex", "ZEDTOKEN": "Zed Token", "ZEDX": "ZEDX Сoin", "ZEDXION": "Zedxion", "ZEDXIONV1": "Zedxion v1", "ZEE": "ZeroSwap", + "ZEEP": "ZEEPR", "ZEFI": "ZCore Finance", "ZEFU": "Zenfuse", "ZEIT": "ZeitCoin", "ZEL": "Zelcash", "ZELIX": "ZELIX", "ZEN": "Horizen", + "ZENAD": "Zenad", "ZENC": "Zenc Coin", "ZEND": "zkLend", "ZENF": "Zenland", "ZENI": "Zennies", "ZENIQ": "Zeniq Coin", "ZENITH": "Zenith Chain", + "ZENPROTOCOL": "Zen Protocol", "ZENQ": "Zenqira", "ZENT": "Zentry", "ZEON": "Zeon Network", @@ -16864,7 +17244,8 @@ "ZIPT": "Zippie", "ZIRVE": "Zirve Coin", "ZIV4": "Ziv4 Labs", - "ZIX": "ZIX Token", + "ZIX": "Coinzix Token", + "ZIXTOKEN": "ZIX Token", "ZIZLE": "Zizle", "ZIZY": "ZIZY", "ZJLT": "ZJLT Distributed Factoring Network", @@ -16912,7 +17293,7 @@ "ZMBE": "RugZombie", "ZMN": "ZMINE", "ZMT": "Zipmex Token", - "ZND": "Zenad", + "ZND": "ZND Token", "ZNE": "ZoneCoin", "ZNN": "Zenon", "ZNT": "Zenith Finance", @@ -16935,12 +17316,13 @@ "ZOOMER": "Zoomer Coin", "ZOON": "CryptoZoon", "ZOOT": "Zoo Token", - "ZORA": "Zoracles", + "ZORA": "Zora", + "ZORACLES": "Zoracles", "ZORKSEES": "Zorksees", "ZORO": "Zoro Inu", "ZORRO": "Zorro", "ZORT": "Zort", - "ZP": "Zen Protocol", + "ZP": "Zombie Power", "ZPAE": "ZelaaPayAE", "ZPAY": "ZoidPay", "ZPC": "Zen Panda Coin", @@ -16949,7 +17331,8 @@ "ZPRO": "ZAT Project", "ZPT": "Zeepin", "ZPTC": "Zeptacoin", - "ZRC": "ZrCoin", + "ZRC": "Zircuit", + "ZRCOIN": "ZrCoin", "ZRO": "LayerZero", "ZRPY": "Zerpaay", "ZRS": "Zaros", @@ -16966,6 +17349,7 @@ "ZUC": "Zeux", "ZUCKPEPE": "ZuckPepe", "ZUKI": "Zuki Moba", + "ZULU": "Zulu Network", "ZUM": "ZumCoin", "ZUN": "Zunami Governance Token", "ZUNA": "ZUNA", @@ -16994,7 +17378,9 @@ "ZYTARA": "Zytara dollar", "ZZ": "ZigZag", "ZZC": "ZudgeZury", - "ZZZ": "zzz.finance", + "ZZZ": "ZZZ", + "ZZZV1": "zzz.finance", + "anyeth1": "anyeth1", "eFIC": "FIC Network", "ePRX": "eProxy", "gOHM": "Governance OHM", From 03b04ac7f0035ce6b657f443ef3b19c8bcea13cd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 30 May 2025 19:06:44 +0200 Subject: [PATCH 09/22] Feature/update locales (#4792) Co-authored-by: github-actions[bot] --- apps/client/src/locales/messages.ca.xlf | 6 +++--- apps/client/src/locales/messages.de.xlf | 6 +++--- apps/client/src/locales/messages.es.xlf | 6 +++--- apps/client/src/locales/messages.fr.xlf | 6 +++--- apps/client/src/locales/messages.it.xlf | 6 +++--- apps/client/src/locales/messages.nl.xlf | 6 +++--- apps/client/src/locales/messages.pl.xlf | 6 +++--- apps/client/src/locales/messages.pt.xlf | 6 +++--- apps/client/src/locales/messages.tr.xlf | 6 +++--- apps/client/src/locales/messages.uk.xlf | 6 +++--- apps/client/src/locales/messages.xlf | 6 +++--- apps/client/src/locales/messages.zh.xlf | 6 +++--- 12 files changed, 36 insertions(+), 36 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 5ce42fe53..1d1f57e0b 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -2463,7 +2463,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -5501,7 +5501,7 @@ Go back to Home Page apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -7592,7 +7592,7 @@ Calculations are based on delayed market data and may not be displayed in real-time. apps/client/src/app/components/home-market/home-market.html - 41 + 43 diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 86c156192..41e77aac6 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -1114,7 +1114,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -2478,7 +2478,7 @@ Zurück zur Startseite apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -7592,7 +7592,7 @@ Berechnungen basieren auf verzögerten Marktdaten und werden nicht in Echtzeit angezeigt. apps/client/src/app/components/home-market/home-market.html - 41 + 43 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 95c2af93f..0a3721ea6 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -1099,7 +1099,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -2463,7 +2463,7 @@ Volver a la página principal apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -7593,7 +7593,7 @@ Calculations are based on delayed market data and may not be displayed in real-time. apps/client/src/app/components/home-market/home-market.html - 41 + 43 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 202082270..6aa3e880e 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -1450,7 +1450,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -2958,7 +2958,7 @@ Retour à la Page d’Accueil apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -7592,7 +7592,7 @@ 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.html - 41 + 43 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 005af3ea5..c3da10365 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -1099,7 +1099,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -2463,7 +2463,7 @@ Torna alla pagina iniziale apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -7593,7 +7593,7 @@ I calcoli sono basati su dati di mercato ritardati e potrebbero non essere visualizzati in tempo reale. apps/client/src/app/components/home-market/home-market.html - 41 + 43 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index f285a759b..31e76dc0f 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -1098,7 +1098,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -2462,7 +2462,7 @@ Ga terug naar de startpagina apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -7592,7 +7592,7 @@ Berekeningen zijn gebaseerd op vertraagde marktgegevens en worden mogelijk niet in realtime weergegeven. apps/client/src/app/components/home-market/home-market.html - 41 + 43 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index df975a108..571b27c12 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -2119,7 +2119,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -5044,7 +5044,7 @@ Wróć do Strony Głównej apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -7592,7 +7592,7 @@ Calculations are based on delayed market data and may not be displayed in real-time. apps/client/src/app/components/home-market/home-market.html - 41 + 43 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 9cba3c1bb..d976102c4 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -1330,7 +1330,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -2854,7 +2854,7 @@ Voltar à Página Inicial apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -7592,7 +7592,7 @@ Calculations are based on delayed market data and may not be displayed in real-time. apps/client/src/app/components/home-market/home-market.html - 41 + 43 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index cab998274..e98de40cf 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -1971,7 +1971,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -4772,7 +4772,7 @@ Ana Sayfaya Geri Dön apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -7592,7 +7592,7 @@ Hesaplamalar gecikmeli piyasa verilerine dayanmaktadır ve gerçek zamanlı olarak görüntülenemeyebilir. apps/client/src/app/components/home-market/home-market.html - 41 + 43 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 4113fc335..b9efb87bc 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -1907,7 +1907,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -6115,7 +6115,7 @@ Повернутися на головну сторінку apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -7592,7 +7592,7 @@ Calculations are based on delayed market data and may not be displayed in real-time. apps/client/src/app/components/home-market/home-market.html - 41 + 43 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index e9a6a6c08..736d8af54 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -1989,7 +1989,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -4632,7 +4632,7 @@ Go back to Home Page apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -6827,7 +6827,7 @@ Calculations are based on delayed market data and may not be displayed in real-time. apps/client/src/app/components/home-market/home-market.html - 41 + 43 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 01f2342fa..60fa676aa 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -2128,7 +2128,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -5077,7 +5077,7 @@ 返回首页 apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -7593,7 +7593,7 @@ 计算基于延迟的市场数据,可能无法实时显示。 apps/client/src/app/components/home-market/home-market.html - 41 + 43 From c553fdf6d4c8d967aea4f0be4006fc1d161b8ca7 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 31 May 2025 10:22:02 +0200 Subject: [PATCH 10/22] Bugfix/change investment value to take currency effects into account in holding detail dialog (#4789) * Change investment value to take currency effects into account * Update changelog --- CHANGELOG.md | 4 ++++ apps/api/src/app/portfolio/portfolio.service.ts | 7 ++++--- .../holding-detail-dialog.component.ts | 14 ++++++++------ .../holding-detail-dialog.html | 4 ++-- .../portfolio-holding-response.interface.ts | 2 +- 5 files changed, 19 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 119541163..0888e27a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Upgraded `big.js` from version `6.2.2` to `7.0.1` - Upgraded `ng-extract-i18n-merge` from version `2.14.3` to `2.15.0` +### Fixed + +- Changed the investment value to take the currency effects into account in the holding detail dialog + ## 2.164.0 - 2025-05-28 ### Changed diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 7e373c4cc..e8f50e1e2 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -663,7 +663,7 @@ export class PortfolioService { grossPerformancePercentWithCurrencyEffect: undefined, grossPerformanceWithCurrencyEffect: undefined, historicalData: [], - investment: undefined, + investmentInBaseCurrencyWithCurrencyEffect: undefined, marketPrice: undefined, marketPriceMax: undefined, marketPriceMin: undefined, @@ -853,7 +853,8 @@ export class PortfolioService { grossPerformanceWithCurrencyEffect: position.grossPerformanceWithCurrencyEffect?.toNumber(), historicalData: historicalDataArray, - investment: position.investment?.toNumber(), + investmentInBaseCurrencyWithCurrencyEffect: + position.investmentWithCurrencyEffect?.toNumber(), netPerformance: position.netPerformance?.toNumber(), netPerformancePercent: position.netPerformancePercentage?.toNumber(), netPerformancePercentWithCurrencyEffect: @@ -952,7 +953,7 @@ export class PortfolioService { grossPerformancePercentWithCurrencyEffect: undefined, grossPerformanceWithCurrencyEffect: undefined, historicalData: historicalDataArray, - investment: 0, + investmentInBaseCurrencyWithCurrencyEffect: 0, netPerformance: undefined, netPerformancePercent: undefined, netPerformancePercentWithCurrencyEffect: undefined, diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts index 028866009..d866275c0 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts @@ -102,8 +102,8 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { public hasPermissionToCreateOwnTag: boolean; public hasPermissionToReadMarketDataOfOwnAssetProfile: boolean; public historicalDataItems: LineChartItem[]; - public investment: number; - public investmentPrecision = 2; + public investmentInBaseCurrencyWithCurrencyEffect: number; + public investmentInBaseCurrencyWithCurrencyEffectPrecision = 2; public marketDataItems: MarketData[] = []; public marketPrice: number; public marketPriceMax: number; @@ -233,7 +233,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { feeInBaseCurrency, firstBuyDate, historicalData, - investment, + investmentInBaseCurrencyWithCurrencyEffect, marketPrice, marketPriceMax, marketPriceMin, @@ -288,13 +288,15 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { } ); - this.investment = investment; + this.investmentInBaseCurrencyWithCurrencyEffect = + investmentInBaseCurrencyWithCurrencyEffect; if ( this.data.deviceType === 'mobile' && - this.investment >= NUMERICAL_PRECISION_THRESHOLD + this.investmentInBaseCurrencyWithCurrencyEffect >= + NUMERICAL_PRECISION_THRESHOLD ) { - this.investmentPrecision = 0; + this.investmentInBaseCurrencyWithCurrencyEffectPrecision = 0; } this.marketPrice = marketPrice; diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html index 11898c44e..55ebbcd78 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -146,9 +146,9 @@ size="medium" [isCurrency]="true" [locale]="data.locale" - [precision]="investmentPrecision" + [precision]="investmentInBaseCurrencyWithCurrencyEffectPrecision" [unit]="data.baseCurrency" - [value]="investment" + [value]="investmentInBaseCurrencyWithCurrencyEffect" >Investment
diff --git a/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts b/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts index b330e8baa..000460228 100644 --- a/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts @@ -22,7 +22,7 @@ export interface PortfolioHoldingResponse { grossPerformancePercentWithCurrencyEffect: number; grossPerformanceWithCurrencyEffect: number; historicalData: HistoricalDataItem[]; - investment: number; + investmentInBaseCurrencyWithCurrencyEffect: number; marketPrice: number; marketPriceMax: number; marketPriceMin: number; From fda9cc71f7fc8e39d905cce3a4976e0e6db2811c Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 31 May 2025 10:22:41 +0200 Subject: [PATCH 11/22] Feature/modularize cron service (#4795) * Modularize cron service * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/app.module.ts | 8 +++---- apps/api/src/services/cron/cron.module.ts | 23 +++++++++++++++++++ .../src/services/{ => cron}/cron.service.ts | 15 ++++++------ 4 files changed, 35 insertions(+), 12 deletions(-) create mode 100644 apps/api/src/services/cron/cron.module.ts rename apps/api/src/services/{ => cron}/cron.service.ts (79%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0888e27a2..5979ebc1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Renamed `orders` to `activities` in the `Tag` database schema +- Modularized the cron service - Refreshed the cryptocurrencies list - Improved the language localization for Dutch (`nl`) - Improved the language localization for Polish (`pl`) diff --git a/apps/api/src/app/app.module.ts b/apps/api/src/app/app.module.ts index 87a4db5fc..6f512e89b 100644 --- a/apps/api/src/app/app.module.ts +++ b/apps/api/src/app/app.module.ts @@ -1,13 +1,12 @@ import { EventsModule } from '@ghostfolio/api/events/events.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; -import { CronService } from '@ghostfolio/api/services/cron.service'; +import { CronModule } from '@ghostfolio/api/services/cron/cron.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; import { DataGatheringModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; import { PortfolioSnapshotQueueModule } from '@ghostfolio/api/services/queues/portfolio-snapshot/portfolio-snapshot.module'; -import { TwitterBotModule } from '@ghostfolio/api/services/twitter-bot/twitter-bot.module'; import { DEFAULT_LANGUAGE_CODE, SUPPORTED_LANGUAGE_CODES @@ -78,6 +77,7 @@ import { UserModule } from './user/user.module'; CacheModule, ConfigModule.forRoot(), ConfigurationModule, + CronModule, DataGatheringModule, DataProviderModule, EventEmitterModule.forRoot(), @@ -128,10 +128,8 @@ import { UserModule } from './user/user.module'; SubscriptionModule, SymbolModule, TagsModule, - TwitterBotModule, UserModule, WatchlistModule - ], - providers: [CronService] + ] }) export class AppModule {} diff --git a/apps/api/src/services/cron/cron.module.ts b/apps/api/src/services/cron/cron.module.ts new file mode 100644 index 000000000..06f9d2caa --- /dev/null +++ b/apps/api/src/services/cron/cron.module.ts @@ -0,0 +1,23 @@ +import { UserModule } from '@ghostfolio/api/app/user/user.module'; +import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; +import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; +import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; +import { DataGatheringModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; +import { TwitterBotModule } from '@ghostfolio/api/services/twitter-bot/twitter-bot.module'; + +import { Module } from '@nestjs/common'; + +import { CronService } from './cron.service'; + +@Module({ + imports: [ + ConfigurationModule, + DataGatheringModule, + ExchangeRateDataModule, + PropertyModule, + TwitterBotModule, + UserModule + ], + providers: [CronService] +}) +export class CronModule {} diff --git a/apps/api/src/services/cron.service.ts b/apps/api/src/services/cron/cron.service.ts similarity index 79% rename from apps/api/src/services/cron.service.ts rename to apps/api/src/services/cron/cron.service.ts index 3d4aff08b..b770aa2d7 100644 --- a/apps/api/src/services/cron.service.ts +++ b/apps/api/src/services/cron/cron.service.ts @@ -1,4 +1,9 @@ import { UserService } from '@ghostfolio/api/app/user/user.service'; +import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; +import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; +import { PropertyService } from '@ghostfolio/api/services/property/property.service'; +import { DataGatheringService } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.service'; +import { TwitterBotService } from '@ghostfolio/api/services/twitter-bot/twitter-bot.service'; import { DATA_GATHERING_QUEUE_PRIORITY_LOW, GATHER_ASSET_PROFILE_PROCESS_JOB_NAME, @@ -10,12 +15,6 @@ import { getAssetProfileIdentifier } from '@ghostfolio/common/helper'; import { Injectable } from '@nestjs/common'; import { Cron, CronExpression } from '@nestjs/schedule'; -import { ConfigurationService } from './configuration/configuration.service'; -import { ExchangeRateDataService } from './exchange-rate-data/exchange-rate-data.service'; -import { PropertyService } from './property/property.service'; -import { DataGatheringService } from './queues/data-gathering/data-gathering.service'; -import { TwitterBotService } from './twitter-bot/twitter-bot.service'; - @Injectable() export class CronService { private static readonly EVERY_SUNDAY_AT_LUNCH_TIME = '0 12 * * 0'; @@ -43,7 +42,9 @@ export class CronService { @Cron(CronExpression.EVERY_DAY_AT_5PM) public async runEveryDayAtFivePm() { - this.twitterBotService.tweetFearAndGreedIndex(); + if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { + this.twitterBotService.tweetFearAndGreedIndex(); + } } @Cron(CronExpression.EVERY_DAY_AT_MIDNIGHT) From cf76f54c1c068f06171de5db7e3b443c3e56f113 Mon Sep 17 00:00:00 2001 From: Diego Noah Date: Sat, 31 May 2025 14:56:31 +0600 Subject: [PATCH 12/22] Feature/improve language localization for CA 20250531 (#4796) * Improve language localization for CA * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.ca.xlf | 28 ++++++++++++------------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5979ebc1c..b422474d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Renamed `orders` to `activities` in the `Tag` database schema - Modularized the cron service - Refreshed the cryptocurrencies list +- Improved the language localization for Catalan (`ca`) - Improved the language localization for Dutch (`nl`) - Improved the language localization for Polish (`pl`) - Improved the language localization for Spanish (`es`) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 1d1f57e0b..f2d1ea26b 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -2516,7 +2516,7 @@
{VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {activitat} other {activitats}} apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 14 @@ -4257,7 +4257,7 @@ Mortgages, personal loans, credit cards - Mortgages, personal loans, credit cards + Hipoteques, préstecs personals, targetes de crèdit apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 57 @@ -4265,7 +4265,7 @@ Luxury items, real estate, private companies - Luxury items, real estate, private companies + Articles de luxe, immobiliari, empreses privades apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 73 @@ -4273,7 +4273,7 @@ Account - Account + Compte apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 85 @@ -4289,7 +4289,7 @@ Update Cash Balance - Update Cash Balance + Actualitzar el saldo d’efectiu apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 112 @@ -4297,7 +4297,7 @@ Unit Price - Unit Price + Preu unitari apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 213 @@ -4309,7 +4309,7 @@ Fee - Fee + Quota apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 261 @@ -4321,7 +4321,7 @@ Import Activities - Import Activities + Activitats d’importació apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts 47 @@ -4329,7 +4329,7 @@ Import Dividends - Import Dividends + Importar dividends apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts 88 @@ -4337,7 +4337,7 @@ Importing data... - Importing data... + S’estan important dades... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts 126 @@ -4345,7 +4345,7 @@ Import has been completed - Import has been completed + La importació s’ha completat apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts 134 @@ -4353,7 +4353,7 @@ Validating data... - Validating data... + S’estan validant les dades... apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts 242 @@ -4361,7 +4361,7 @@ Select Holding - Select Holding + Seleccioneu Holding apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 20 @@ -4369,7 +4369,7 @@ Select File - Select File + Seleccioneu Fitxer apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 22 From cb7434a8b299c20b2202bc6d018f54dfad80dca4 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 31 May 2025 10:57:13 +0200 Subject: [PATCH 13/22] Feature/sync demo account activities based on tags (#4797) * Sync demo account activities based on tags * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/admin/admin.controller.ts | 9 +++ apps/api/src/app/admin/admin.module.ts | 2 + apps/api/src/app/info/info.service.ts | 4 +- .../src/app/portfolio/portfolio.service.ts | 6 +- apps/api/src/app/user/user.service.ts | 6 +- apps/api/src/services/demo/demo.module.ts | 13 ++++ apps/api/src/services/demo/demo.service.ts | 59 +++++++++++++++++++ .../admin-overview.component.ts | 25 +++++++- .../admin-overview/admin-overview.html | 21 +++++-- .../admin-overview/admin-overview.module.ts | 2 + apps/client/src/app/services/admin.service.ts | 4 ++ libs/common/src/lib/config.ts | 7 ++- libs/common/src/lib/permissions.ts | 1 + 14 files changed, 147 insertions(+), 13 deletions(-) create mode 100644 apps/api/src/services/demo/demo.module.ts create mode 100644 apps/api/src/services/demo/demo.service.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index b422474d5..9e9b99fad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Improved the _Live Demo_ setup by syncing activities based on tags - Renamed `orders` to `activities` in the `Tag` database schema - Modularized the cron service - Refreshed the cryptocurrencies list diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index 736f6da33..82524ef9b 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -3,6 +3,7 @@ import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard' import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { ManualService } from '@ghostfolio/api/services/data-provider/manual/manual.service'; +import { DemoService } from '@ghostfolio/api/services/demo/demo.service'; import { PropertyDto } from '@ghostfolio/api/services/property/property.dto'; import { DataGatheringService } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.service'; import { @@ -55,6 +56,7 @@ export class AdminController { private readonly adminService: AdminService, private readonly apiService: ApiService, private readonly dataGatheringService: DataGatheringService, + private readonly demoService: DemoService, private readonly manualService: ManualService, @Inject(REQUEST) private readonly request: RequestWithUser ) {} @@ -66,6 +68,13 @@ export class AdminController { return this.adminService.get({ user: this.request.user }); } + @Get('demo-user/sync') + @HasPermission(permissions.syncDemoUserAccount) + @UseGuards(AuthGuard('jwt'), HasPermissionGuard) + public async syncDemoUserAccount(): Promise { + return this.demoService.syncDemoUserAccount(); + } + @HasPermission(permissions.accessAdminControl) @Post('gather') @UseGuards(AuthGuard('jwt'), HasPermissionGuard) diff --git a/apps/api/src/app/admin/admin.module.ts b/apps/api/src/app/admin/admin.module.ts index 54145fa27..598b68f17 100644 --- a/apps/api/src/app/admin/admin.module.ts +++ b/apps/api/src/app/admin/admin.module.ts @@ -4,6 +4,7 @@ import { ApiModule } from '@ghostfolio/api/services/api/api.module'; import { BenchmarkModule } from '@ghostfolio/api/services/benchmark/benchmark.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; +import { DemoModule } from '@ghostfolio/api/services/demo/demo.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module'; import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; @@ -24,6 +25,7 @@ import { QueueModule } from './queue/queue.module'; ConfigurationModule, DataGatheringModule, DataProviderModule, + DemoModule, ExchangeRateDataModule, MarketDataModule, OrderModule, diff --git a/apps/api/src/app/info/info.service.ts b/apps/api/src/app/info/info.service.ts index 9581807b9..1f7b39d9b 100644 --- a/apps/api/src/app/info/info.service.ts +++ b/apps/api/src/app/info/info.service.ts @@ -11,7 +11,7 @@ import { HEADER_KEY_TOKEN, PROPERTY_BETTER_UPTIME_MONITOR_ID, PROPERTY_COUNTRIES_OF_SUBSCRIBERS, - PROPERTY_DEMO_USER_ID, + PROPERTY_DEMO_USER_ID_LEGACY, PROPERTY_IS_READ_ONLY_MODE, PROPERTY_SLACK_COMMUNITY_USERS, ghostfolioFearAndGreedIndexDataSource @@ -237,7 +237,7 @@ export class InfoService { private async getDemoAuthToken() { const demoUserId = (await this.propertyService.getByKey( - PROPERTY_DEMO_USER_ID + PROPERTY_DEMO_USER_ID_LEGACY )) as string; if (demoUserId) { diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index e8f50e1e2..18f923112 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -31,7 +31,7 @@ import { } from '@ghostfolio/common/calculation-helper'; import { DEFAULT_CURRENCY, - EMERGENCY_FUND_TAG_ID, + TAG_ID_EMERGENCY_FUND, UNKNOWN_KEY } from '@ghostfolio/common/config'; import { DATE_FORMAT, getSum, parseDate } from '@ghostfolio/common/helper'; @@ -564,7 +564,7 @@ export class PortfolioService { if ( filters?.length === 1 && - filters[0].id === EMERGENCY_FUND_TAG_ID && + filters[0].id === TAG_ID_EMERGENCY_FUND && filters[0].type === 'TAG' ) { const emergencyFundCashPositions = await this.getCashPositions({ @@ -1655,7 +1655,7 @@ export class PortfolioService { const emergencyFundHoldings = Object.values(holdings).filter(({ tags }) => { return ( tags?.some(({ id }) => { - return id === EMERGENCY_FUND_TAG_ID; + return id === TAG_ID_EMERGENCY_FUND; }) ?? false ); }); diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index 87c82fa0b..2a48b2583 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -411,6 +411,10 @@ export class UserService { user.subscription.offer.durationExtension = undefined; user.subscription.offer.label = undefined; } + + if (hasRole(user, Role.ADMIN)) { + currentPermissions.push(permissions.syncDemoUserAccount); + } } if (this.configurationService.get('ENABLE_FEATURE_READ_ONLY_MODE')) { @@ -433,7 +437,7 @@ export class UserService { } } - if (!environment.production && role === 'ADMIN') { + if (!environment.production && hasRole(user, Role.ADMIN)) { currentPermissions.push(permissions.impersonateAllUsers); } diff --git a/apps/api/src/services/demo/demo.module.ts b/apps/api/src/services/demo/demo.module.ts new file mode 100644 index 000000000..8f86de058 --- /dev/null +++ b/apps/api/src/services/demo/demo.module.ts @@ -0,0 +1,13 @@ +import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; +import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; + +import { Module } from '@nestjs/common'; + +import { DemoService } from './demo.service'; + +@Module({ + exports: [DemoService], + imports: [PrismaModule, PropertyModule], + providers: [DemoService] +}) +export class DemoModule {} diff --git a/apps/api/src/services/demo/demo.service.ts b/apps/api/src/services/demo/demo.service.ts new file mode 100644 index 000000000..477b43e3b --- /dev/null +++ b/apps/api/src/services/demo/demo.service.ts @@ -0,0 +1,59 @@ +import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; +import { PropertyService } from '@ghostfolio/api/services/property/property.service'; +import { + PROPERTY_DEMO_ACCOUNT_ID, + PROPERTY_DEMO_USER_ID, + TAG_ID_DEMO +} from '@ghostfolio/common/config'; + +import { Injectable } from '@nestjs/common'; +import { v4 as uuidv4 } from 'uuid'; + +@Injectable() +export class DemoService { + public constructor( + private readonly prismaService: PrismaService, + private readonly propertyService: PropertyService + ) {} + + public async syncDemoUserAccount() { + const [demoAccountId, demoUserId] = (await Promise.all([ + this.propertyService.getByKey(PROPERTY_DEMO_ACCOUNT_ID), + this.propertyService.getByKey(PROPERTY_DEMO_USER_ID) + ])) as [string, string]; + + let activities = await this.prismaService.order.findMany({ + orderBy: { + date: 'asc' + }, + where: { + tags: { + some: { + id: TAG_ID_DEMO + } + } + } + }); + + activities = activities.map((activity) => { + return { + ...activity, + accountId: demoAccountId, + accountUserId: demoUserId, + comment: null, + id: uuidv4(), + userId: demoUserId + }; + }); + + await this.prismaService.order.deleteMany({ + where: { + userId: demoUserId + } + }); + + return this.prismaService.order.createMany({ + data: activities + }); + } +} diff --git a/apps/client/src/app/components/admin-overview/admin-overview.component.ts b/apps/client/src/app/components/admin-overview/admin-overview.component.ts index 2f814668a..23578cff1 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.component.ts +++ b/apps/client/src/app/components/admin-overview/admin-overview.component.ts @@ -22,12 +22,13 @@ import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { MatSlideToggleChange } from '@angular/material/slide-toggle'; +import { MatSnackBar } from '@angular/material/snack-bar'; import { differenceInSeconds, formatDistanceToNowStrict, parseISO } from 'date-fns'; -import { StringValue } from 'ms'; +import ms, { StringValue } from 'ms'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -42,6 +43,7 @@ export class AdminOverviewComponent implements OnDestroy, OnInit { public coupons: Coupon[]; public hasPermissionForSubscription: boolean; public hasPermissionForSystemMessage: boolean; + public hasPermissionToSyncDemoUserAccount: boolean; public hasPermissionToToggleReadOnlyMode: boolean; public info: InfoItem; public isDataGatheringEnabled: boolean; @@ -60,6 +62,7 @@ export class AdminOverviewComponent implements OnDestroy, OnInit { private changeDetectorRef: ChangeDetectorRef, private dataService: DataService, private notificationService: NotificationService, + private snackBar: MatSnackBar, private userService: UserService ) { this.info = this.dataService.fetchInfo(); @@ -80,6 +83,11 @@ export class AdminOverviewComponent implements OnDestroy, OnInit { permissions.enableSystemMessage ); + this.hasPermissionToSyncDemoUserAccount = hasPermission( + this.user.permissions, + permissions.syncDemoUserAccount + ); + this.hasPermissionToToggleReadOnlyMode = hasPermission( this.user.permissions, permissions.toggleReadOnlyMode @@ -206,6 +214,21 @@ export class AdminOverviewComponent implements OnDestroy, OnInit { } } + public onSyncDemoUserAccount() { + this.adminService + .syncDemoUserAccount() + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(() => { + this.snackBar.open( + '✅ ' + $localize`Demo user account has been synced.`, + undefined, + { + duration: ms('3 seconds') + } + ); + }); + } + public ngOnDestroy() { this.unsubscribeSubject.next(); this.unsubscribeSubject.complete(); diff --git a/apps/client/src/app/components/admin-overview/admin-overview.html b/apps/client/src/app/components/admin-overview/admin-overview.html index bcbf666ef..246e5fe04 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.html +++ b/apps/client/src/app/components/admin-overview/admin-overview.html @@ -169,10 +169,23 @@
Housekeeping
- +
+ @if (hasPermissionToSyncDemoUserAccount) { + + } + +
diff --git a/apps/client/src/app/components/admin-overview/admin-overview.module.ts b/apps/client/src/app/components/admin-overview/admin-overview.module.ts index da49eb858..1c5fba202 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.module.ts +++ b/apps/client/src/app/components/admin-overview/admin-overview.module.ts @@ -9,6 +9,7 @@ import { MatCardModule } from '@angular/material/card'; import { MatMenuModule } from '@angular/material/menu'; import { MatSelectModule } from '@angular/material/select'; import { MatSlideToggleModule } from '@angular/material/slide-toggle'; +import { MatSnackBarModule } from '@angular/material/snack-bar'; import { RouterModule } from '@angular/router'; import { AdminOverviewComponent } from './admin-overview.component'; @@ -24,6 +25,7 @@ import { AdminOverviewComponent } from './admin-overview.component'; MatCardModule, MatMenuModule, MatSelectModule, + MatSnackBarModule, MatSlideToggleModule, ReactiveFormsModule, RouterModule diff --git a/apps/client/src/app/services/admin.service.ts b/apps/client/src/app/services/admin.service.ts index cb72fb9fd..670535291 100644 --- a/apps/client/src/app/services/admin.service.ts +++ b/apps/client/src/app/services/admin.service.ts @@ -246,6 +246,10 @@ export class AdminService { ); } + public syncDemoUserAccount() { + return this.http.get(`/api/v1/admin/demo-user/sync`); + } + public testMarketData({ dataSource, scraperConfiguration, diff --git a/libs/common/src/lib/config.ts b/libs/common/src/lib/config.ts index 06ff59bb7..a3b129b55 100644 --- a/libs/common/src/lib/config.ts +++ b/libs/common/src/lib/config.ts @@ -76,8 +76,6 @@ export const DERIVED_CURRENCIES = [ } ]; -export const EMERGENCY_FUND_TAG_ID = '4452656d-9fa4-4bd0-ba38-70492e31d180'; - export const GATHER_ASSET_PROFILE_PROCESS_JOB_NAME = 'GATHER_ASSET_PROFILE'; export const GATHER_ASSET_PROFILE_PROCESS_JOB_OPTIONS: JobOptions = { attempts: 12, @@ -122,7 +120,9 @@ export const PROPERTY_CURRENCIES = 'CURRENCIES'; export const PROPERTY_DATA_SOURCE_MAPPING = 'DATA_SOURCE_MAPPING'; export const PROPERTY_DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS = 'DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS'; +export const PROPERTY_DEMO_ACCOUNT_ID = 'DEMO_ACCOUNT_ID'; export const PROPERTY_DEMO_USER_ID = 'DEMO_USER_ID'; +export const PROPERTY_DEMO_USER_ID_LEGACY = 'DEMO_USER_ID_LEGACY'; export const PROPERTY_IS_DATA_GATHERING_ENABLED = 'IS_DATA_GATHERING_ENABLED'; export const PROPERTY_IS_READ_ONLY_MODE = 'IS_READ_ONLY_MODE'; export const PROPERTY_IS_USER_SIGNUP_ENABLED = 'IS_USER_SIGNUP_ENABLED'; @@ -171,4 +171,7 @@ export const SUPPORTED_LANGUAGE_CODES = [ 'zh' ]; +export const TAG_ID_EMERGENCY_FUND = '4452656d-9fa4-4bd0-ba38-70492e31d180'; +export const TAG_ID_DEMO = 'efa08cb3-9b9d-4974-ac68-db13a19c4874'; + export const UNKNOWN_KEY = 'UNKNOWN'; diff --git a/libs/common/src/lib/permissions.ts b/libs/common/src/lib/permissions.ts index 592167562..8f8a10427 100644 --- a/libs/common/src/lib/permissions.ts +++ b/libs/common/src/lib/permissions.ts @@ -45,6 +45,7 @@ export const permissions = { readTags: 'readTags', readWatchlist: 'readWatchlist', reportDataGlitch: 'reportDataGlitch', + syncDemoUserAccount: 'syncDemoUserAccount', toggleReadOnlyMode: 'toggleReadOnlyMode', updateAccount: 'updateAccount', updateAuthDevice: 'updateAuthDevice', From cb7326edb37ba3b2ededeba37e5844ef85247018 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 31 May 2025 11:00:18 +0200 Subject: [PATCH 14/22] Release 2.165.0 (#4799) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e9b99fad..b98444e2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ 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 +## 2.165.0 - 2025-05-31 ### Added diff --git a/package-lock.json b/package-lock.json index 3a920234a..47c6bcd04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.164.0", + "version": "2.165.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.164.0", + "version": "2.165.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index 84c12ab76..6624fa7b7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.164.0", + "version": "2.165.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From b66e60e9f4d8958782cd1f8ff23b8fe94abd34e8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 31 May 2025 14:23:59 +0200 Subject: [PATCH 15/22] Feature/update locales (#4798) * Update locales * Update translations * Update changelog --------- Co-authored-by: github-actions[bot] Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 6 ++++++ apps/client/src/locales/messages.ca.xlf | 26 ++++++++++++++++++----- apps/client/src/locales/messages.de.xlf | 28 +++++++++++++++++++------ apps/client/src/locales/messages.es.xlf | 26 ++++++++++++++++++----- apps/client/src/locales/messages.fr.xlf | 26 ++++++++++++++++++----- apps/client/src/locales/messages.it.xlf | 26 ++++++++++++++++++----- apps/client/src/locales/messages.nl.xlf | 26 ++++++++++++++++++----- apps/client/src/locales/messages.pl.xlf | 26 ++++++++++++++++++----- apps/client/src/locales/messages.pt.xlf | 26 ++++++++++++++++++----- apps/client/src/locales/messages.tr.xlf | 26 ++++++++++++++++++----- apps/client/src/locales/messages.uk.xlf | 26 ++++++++++++++++++----- apps/client/src/locales/messages.xlf | 24 ++++++++++++++++----- apps/client/src/locales/messages.zh.xlf | 26 ++++++++++++++++++----- 13 files changed, 257 insertions(+), 61 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b98444e2c..b3afa9d26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ 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 German (`de`) + ## 2.165.0 - 2025-05-31 ### Added diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index f2d1ea26b..948e56414 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -1591,7 +1591,7 @@ Està segur qeu vol eliminar aquest cupó? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142
@@ -1599,7 +1599,7 @@ Està segur que vol eliminar aquest missatge del sistema? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -1607,7 +1607,7 @@ Està segur que vol depurar el cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -1615,7 +1615,7 @@ Si us plau, afegeixi el seu missatge del sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -1735,7 +1735,7 @@ Depurar el Cache apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -7604,6 +7604,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 41e77aac6..7709a8a13 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -634,7 +634,7 @@ Möchtest du diesen Gutscheincode wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -642,7 +642,7 @@ Möchtest du den Cache wirklich leeren? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -650,7 +650,7 @@ Bitte gebe deine Systemmeldung ein: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -762,7 +762,7 @@ Cache leeren apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -5732,7 +5732,7 @@ Möchtest du diese Systemmeldung wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -7597,13 +7597,29 @@ changelog - changelog + changelog kebab-case libs/common/src/lib/paths.ts 37 + + Demo user account has been synced. + Demo Benutzerkonto wurde synchronisiert. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Synchronisiere Demo Benutzerkonto + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 0a3721ea6..2f61747c4 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -635,7 +635,7 @@ ¿Estás seguro de eliminar este cupón? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -643,7 +643,7 @@ ¿Estás seguro de limpiar la caché? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -651,7 +651,7 @@ Por favor, establece tu mensaje del sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -747,7 +747,7 @@ Limpiar caché apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -5709,7 +5709,7 @@ Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -7605,6 +7605,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 6aa3e880e..5e5efaf52 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -874,7 +874,7 @@ Voulez-vous vraiment supprimer ce code promotionnel ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -882,7 +882,7 @@ Voulez-vous vraiment vider le cache ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -890,7 +890,7 @@ Veuillez définir votre message système : apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -1006,7 +1006,7 @@ Vider le Cache apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -5708,7 +5708,7 @@ Confirmer la suppresion de ce message système? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -7604,6 +7604,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index c3da10365..b90afc752 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -635,7 +635,7 @@ Vuoi davvero eliminare questo buono? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -643,7 +643,7 @@ Vuoi davvero svuotare la cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -651,7 +651,7 @@ Imposta il messaggio di sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -747,7 +747,7 @@ Svuota la cache apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -5709,7 +5709,7 @@ Confermi di voler cancellare questo messaggio di sistema? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -7605,6 +7605,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 31e76dc0f..72ac1e155 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -634,7 +634,7 @@ Wil je deze coupon echt verwijderen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -642,7 +642,7 @@ Wil je echt de cache legen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -650,7 +650,7 @@ Stel je systeemboodschap in: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -746,7 +746,7 @@ Cache legen apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -5708,7 +5708,7 @@ Wilt u dit systeembericht echt verwijderen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -7604,6 +7604,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 571b27c12..8d426ecd9 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -1415,7 +1415,7 @@ Czy naprawdę chcesz usunąć ten kupon? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -1423,7 +1423,7 @@ Czy naprawdę chcesz usunąć tę wiadomość systemową? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -1431,7 +1431,7 @@ Czy naprawdę chcesz wyczyścić pamięć podręczną? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -1439,7 +1439,7 @@ Proszę ustawić swoją wiadomość systemową: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -1547,7 +1547,7 @@ Wyczyszczenie pamięci podręcznej apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -7604,6 +7604,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index d976102c4..804a0c31a 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -778,7 +778,7 @@ Deseja realmente eliminar este cupão? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -786,7 +786,7 @@ Deseja realmente limpar a cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -794,7 +794,7 @@ Por favor, defina a sua mensagem do sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -878,7 +878,7 @@ Limpar Cache apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -5708,7 +5708,7 @@ Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -7604,6 +7604,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index e98de40cf..7a26eac52 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -1323,7 +1323,7 @@ Önbelleği temizlemeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -1331,7 +1331,7 @@ Önbelleği temizlemeyi gerçekten istiyor musunuz apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -1339,7 +1339,7 @@ Lütfen sistem mesajınızı belirleyin: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -1455,7 +1455,7 @@ Önbelleği temizle apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -5708,7 +5708,7 @@ Bu sistem mesajını silmeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -7604,6 +7604,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index b9efb87bc..d5ca1c3c8 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -1587,7 +1587,7 @@ Ви дійсно хочете видалити цей купон? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -1595,7 +1595,7 @@ Ви дійсно хочете видалити це системне повідомлення? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -1603,7 +1603,7 @@ Ви дійсно хочете очистити кеш? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -1611,7 +1611,7 @@ Будь ласка, встановіть ваше системне повідомлення: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -1723,7 +1723,7 @@ Очистити кеш apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -7604,6 +7604,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 736d8af54..3a1be97e4 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -1356,28 +1356,28 @@ Do you really want to delete this coupon? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 Do you really want to delete this system message? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 Do you really want to flush the cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 Please set your system message: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -1472,7 +1472,7 @@ Flush Cache apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -6838,6 +6838,20 @@ 37 + + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + + + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 60fa676aa..fb53750cf 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -1424,7 +1424,7 @@ 您确实要删除此优惠券吗? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -1432,7 +1432,7 @@ 您真的要删除这条系统消息吗? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + 155 @@ -1440,7 +1440,7 @@ 您真的要刷新缓存吗? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -1448,7 +1448,7 @@ 请设置您的系统消息: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -1556,7 +1556,7 @@ 刷新缓存 apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -7605,6 +7605,22 @@ 37 + + Demo user account has been synced. + Demo user account has been synced. + + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 + + + + Sync Demo User Account + Sync Demo User Account + + apps/client/src/app/components/admin-overview/admin-overview.html + 181 + + From 32baf1946ce14d72d048ec076868c0004258788d Mon Sep 17 00:00:00 2001 From: Aris Hadrian Date: Sat, 31 May 2025 13:23:53 -0700 Subject: [PATCH 16/22] Feature/improve language localization for UK 20250531 (#4802) * Improve language localization for UK * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.uk.xlf | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b3afa9d26..cb675c0e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the language localization for German (`de`) +- Improved the language localization for Ukrainian (`uk`) ## 2.165.0 - 2025-05-31 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index d5ca1c3c8..3ab04d5ef 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -2220,7 +2220,7 @@ Change with currency effect Change - Зміна з урахуванням валютного ефекту Зміна + Зміна з урахуванням валютного ефекту Зміна apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 50 @@ -2228,7 +2228,7 @@ Performance with currency effect Performance - Прибутковість з урахуванням валютного ефекту валюти Прибутковість + Прибутковість з урахуванням валютного ефекту валюти Прибутковість apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 69 @@ -6656,7 +6656,7 @@ Get access to 80’000+ tickers from over 50 exchanges - Отримайте доступ до 100 000+ тікерів з понад 50 бірж + Отримайте доступ до 80 000+ тікерів з понад 50 бірж libs/ui/src/lib/i18n.ts 24 From 9757df859fa43331d034f517b4c62c303d25f738 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 1 Jun 2025 09:01:23 +0200 Subject: [PATCH 17/22] Feature/improve data providers management style of admin control panel (#4804) * Various style improvements --- .../admin-settings/admin-settings.component.html | 7 +++---- .../admin-settings/admin-settings.component.scss | 13 +++++++++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.html b/apps/client/src/app/components/admin-settings/admin-settings.component.html index 2dcdefdd0..2d577d582 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.component.html +++ b/apps/client/src/app/components/admin-settings/admin-settings.component.html @@ -23,7 +23,7 @@ [enableLink]="false" /> @if (isGhostfolioApiKeyValid === false) { - Early Access } @@ -105,12 +105,11 @@ } @else if (isGhostfolioApiKeyValid === false) { } } diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.scss b/apps/client/src/app/components/admin-settings/admin-settings.component.scss index c08ba95bc..384143300 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.component.scss +++ b/apps/client/src/app/components/admin-settings/admin-settings.component.scss @@ -1,6 +1,19 @@ :host { display: block; + button { + &.special { + background: linear-gradient(45deg, rgb(228, 94, 237), rgb(104, 94, 237)); + color: #fff; + } + } + + .badge { + &.early-access { + border: 1px solid var(--mat-table-row-item-outline-color); + } + } + .mat-mdc-progress-bar { --mdc-linear-progress-active-indicator-height: 0.5rem; --mdc-linear-progress-track-height: 0.5rem; From ef8bbf1ae8284e3702c9eb6cfca0f4496dfb3d36 Mon Sep 17 00:00:00 2001 From: Fabio Carlos Date: Sun, 1 Jun 2025 00:48:24 -0700 Subject: [PATCH 18/22] Feature/improve language localization for TR 20250531 (#4803) * Improve language localization for TR * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.tr.xlf | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb675c0e2..4d62dc94c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the language localization for German (`de`) +- Improved the language localization for Turkish (`tr`) - Improved the language localization for Ukrainian (`uk`) ## 2.165.0 - 2025-05-31 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 7a26eac52..6676ad3bc 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -1320,7 +1320,7 @@ Do you really want to delete this coupon? - Önbelleği temizlemeyi gerçekten istiyor musunuz? + Bu kuponu gerçekten silmek istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts 142 @@ -1328,7 +1328,7 @@ Do you really want to flush the cache? - Önbelleği temizlemeyi gerçekten istiyor musunuz + Önbelleği temizlemeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts 179 @@ -1548,7 +1548,7 @@ Do you really want to delete this user? - Bu kullanıcıyı silmeyi gerçekten istiyor musunu? + Bu kullanıcıyı silmeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-users/admin-users.component.ts 142 @@ -1744,7 +1744,7 @@ Get started - Haydi Başlayalım + Haydi Başlayalım apps/client/src/app/components/header/header.component.html 420 From 7342e7e5ec15b8269dc2dfc51bc50e0f1a8d7d80 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 1 Jun 2025 09:49:37 +0200 Subject: [PATCH 19/22] Feature/support creating custom tags in create or update activity dialog (#4801) * Support creating custom tags in create or update activity dialog * Update changelog --- CHANGELOG.md | 4 ++ .../holding-detail-dialog.component.ts | 7 ++-- .../holding-detail-dialog.html | 4 +- ...ate-or-update-activity-dialog.component.ts | 37 ++++++++++++++++++- .../create-or-update-activity-dialog.html | 3 +- 5 files changed, 46 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d62dc94c..92a277712 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Added support to create custom tags in the create or update activity dialog (experimental) + ### Changed - Improved the language localization for German (`de`) diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts index d866275c0..cdaea83dc 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts @@ -452,10 +452,9 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { if (state?.user) { this.user = state.user; - this.hasPermissionToCreateOwnTag = hasPermission( - this.user.permissions, - permissions.createOwnTag - ); + this.hasPermissionToCreateOwnTag = + hasPermission(this.user.permissions, permissions.createOwnTag) && + this.user?.settings?.isExperimentalFeatures; this.tagsAvailable = this.user?.tags?.map((tag) => { diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html index 55ebbcd78..0f6c46a80 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -388,9 +388,7 @@ , public dialogRef: MatDialogRef, private formBuilder: FormBuilder, - @Inject(MAT_DATE_LOCALE) private locale: string + @Inject(MAT_DATE_LOCALE) private locale: string, + private userService: UserService ) {} public ngOnInit() { this.currencyOfAssetProfile = this.data.activity?.SymbolProfile?.currency; + this.hasPermissionToCreateOwnTag = + this.data.user?.settings?.isExperimentalFeatures && + hasPermission(this.data.user?.permissions, permissions.createOwnTag); this.locale = this.data.user?.settings?.locale; this.mode = this.data.activity?.id ? 'update' : 'create'; @@ -219,6 +226,34 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.changeDetectorRef.markForCheck(); }); + this.activityForm.get('tags').valueChanges.subscribe((tags: Tag[]) => { + const newTag = tags.find(({ id }) => { + return id === undefined; + }); + + if (newTag && this.hasPermissionToCreateOwnTag) { + this.dataService + .postTag({ ...newTag, userId: this.data.user.id }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((tag) => { + this.activityForm.get('tags').setValue( + tags.map((currentTag) => { + if (currentTag.id === undefined) { + return tag; + } + + return currentTag; + }) + ); + + this.userService + .get(true) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(); + }); + } + }); + this.activityForm .get('type') .valueChanges.pipe(takeUntil(this.unsubscribeSubject)) diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html index 08e1b5162..985394a40 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -313,8 +313,9 @@ -
+
Date: Sun, 1 Jun 2025 09:50:08 +0200 Subject: [PATCH 20/22] Feature/improve style of system message (#4806) * Improve style of system message * Update changelog --- CHANGELOG.md | 1 + apps/client/src/app/app.component.html | 2 +- apps/client/src/app/app.component.scss | 6 ++++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 92a277712..2c5a2771d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Improved the style of the system message - Improved the language localization for German (`de`) - Improved the language localization for Turkish (`tr`) - Improved the language localization for Ukrainian (`uk`) diff --git a/apps/client/src/app/app.component.html b/apps/client/src/app/app.component.html index a04e457ba..9680d0830 100644 --- a/apps/client/src/app/app.component.html +++ b/apps/client/src/app/app.component.html @@ -10,7 +10,7 @@ (click)="onCreateAccount()" > You are using the Live Demo. - Create Account + Create Account
} diff --git a/apps/client/src/app/app.component.scss b/apps/client/src/app/app.component.scss index 241d3331e..f848fe6ff 100644 --- a/apps/client/src/app/app.component.scss +++ b/apps/client/src/app/app.component.scss @@ -15,12 +15,14 @@ z-index: 999; .info-message { - color: rgba(var(--palette-foreground-text), 1); + color: rgba(var(--light-primary-text)); font-size: 80%; + font-weight: 500; max-width: 100%; .a { - font-weight: 500; + border: 1px solid rgba(var(--light-primary-text)); + border-radius: 0.25rem; } } } From c59d2701f0896580cb3a017d81dc127cd08afa08 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 1 Jun 2025 09:52:52 +0200 Subject: [PATCH 21/22] Feature/update locales (#4807) Co-authored-by: github-actions[bot] --- apps/client/src/locales/messages.ca.xlf | 12 ++++++------ apps/client/src/locales/messages.de.xlf | 12 ++++++------ apps/client/src/locales/messages.es.xlf | 12 ++++++------ apps/client/src/locales/messages.fr.xlf | 12 ++++++------ apps/client/src/locales/messages.it.xlf | 12 ++++++------ apps/client/src/locales/messages.nl.xlf | 12 ++++++------ apps/client/src/locales/messages.pl.xlf | 12 ++++++------ apps/client/src/locales/messages.pt.xlf | 12 ++++++------ apps/client/src/locales/messages.tr.xlf | 12 ++++++------ apps/client/src/locales/messages.uk.xlf | 12 ++++++------ apps/client/src/locales/messages.xlf | 12 ++++++------ apps/client/src/locales/messages.zh.xlf | 12 ++++++------ 12 files changed, 72 insertions(+), 72 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 948e56414..d667f6ceb 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -1123,7 +1123,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1171,7 +1171,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1803,7 +1803,7 @@ Plataformes apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -1811,7 +1811,7 @@ Etiquetes apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -2231,7 +2231,7 @@ Informar d’un Problema amb les Dades apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -6893,7 +6893,7 @@ Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 7709a8a13..5ee8eb1d7 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -534,7 +534,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -582,7 +582,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1338,7 +1338,7 @@ Tags apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1354,7 +1354,7 @@ Datenfehler melden apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -3966,7 +3966,7 @@ Plattformen apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -6917,7 +6917,7 @@ API-Schlüssel setzen apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 2f61747c4..85a13ca73 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -535,7 +535,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -583,7 +583,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1323,7 +1323,7 @@ Etiquetas apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1339,7 +1339,7 @@ Reporta un anomalía de los datos apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -3943,7 +3943,7 @@ Plataformas apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -6894,7 +6894,7 @@ Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 5e5efaf52..01593fe6d 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -590,7 +590,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -638,7 +638,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -930,7 +930,7 @@ Étiquettes apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1682,7 +1682,7 @@ Signaler une Erreur de Données apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -3942,7 +3942,7 @@ Platformes apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -6893,7 +6893,7 @@ Définir clé API apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index b90afc752..cef21a5b1 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -535,7 +535,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -583,7 +583,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1323,7 +1323,7 @@ Tag apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1339,7 +1339,7 @@ Segnala un’anomalia dei dati apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -3943,7 +3943,7 @@ Piattaforme apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -6894,7 +6894,7 @@ Imposta API Key apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 72ac1e155..7b27a8cfe 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -534,7 +534,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -582,7 +582,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1322,7 +1322,7 @@ Tags apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1338,7 +1338,7 @@ Gegevensstoring melden apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -3942,7 +3942,7 @@ Platforms apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -6893,7 +6893,7 @@ API-sleutel instellen apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 8d426ecd9..140e35872 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -1015,7 +1015,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1063,7 +1063,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1635,7 +1635,7 @@ Platformy apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -1643,7 +1643,7 @@ Tagi apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -2403,7 +2403,7 @@ Zgłoś Błąd Danych apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -6893,7 +6893,7 @@ Skonfiguruj klucz API apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 804a0c31a..1b079bcd0 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -590,7 +590,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -638,7 +638,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1626,7 +1626,7 @@ Marcadores apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1642,7 +1642,7 @@ Dados do Relatório com Problema apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -3942,7 +3942,7 @@ Plataformas apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -6893,7 +6893,7 @@ Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 6676ad3bc..e044b4211 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -979,7 +979,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1027,7 +1027,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1379,7 +1379,7 @@ Etiketler apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1543,7 +1543,7 @@ Platformlar apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -2247,7 +2247,7 @@ Rapor Veri Sorunu apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -6893,7 +6893,7 @@ API anahtarını ayarla apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 3ab04d5ef..88be53938 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -1467,7 +1467,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1515,7 +1515,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1835,7 +1835,7 @@ Встановити ключ API apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 @@ -1843,7 +1843,7 @@ Платформи apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -1851,7 +1851,7 @@ Теги apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -2343,7 +2343,7 @@ Повідомити про збій даних apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 3a1be97e4..e0772a40f 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -965,7 +965,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1012,7 +1012,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1553,14 +1553,14 @@ Platforms apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 Tags apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -2243,7 +2243,7 @@ Report Data Glitch apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -6233,7 +6233,7 @@ Set API key apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index fb53750cf..391ec6d26 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -1024,7 +1024,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 336 + 337 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1072,7 +1072,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 343 + 344 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -1644,7 +1644,7 @@ 平台 apps/client/src/app/components/admin-settings/admin-settings.component.html - 137 + 136 @@ -1652,7 +1652,7 @@ 标签 apps/client/src/app/components/admin-settings/admin-settings.component.html - 143 + 142 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -2412,7 +2412,7 @@ 报告数据故障 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 407 @@ -6894,7 +6894,7 @@ 设置 API 密钥 apps/client/src/app/components/admin-settings/admin-settings.component.html - 113 + 112 From 8b8d19438385993915b012610bbdff0af1f2fd55 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 2 Jun 2025 14:24:19 +0200 Subject: [PATCH 22/22] Feature/clean up legacy demo user id property (#4808) * Clean up --- apps/api/src/app/info/info.service.ts | 4 ++-- libs/common/src/lib/config.ts | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/api/src/app/info/info.service.ts b/apps/api/src/app/info/info.service.ts index 1f7b39d9b..9581807b9 100644 --- a/apps/api/src/app/info/info.service.ts +++ b/apps/api/src/app/info/info.service.ts @@ -11,7 +11,7 @@ import { HEADER_KEY_TOKEN, PROPERTY_BETTER_UPTIME_MONITOR_ID, PROPERTY_COUNTRIES_OF_SUBSCRIBERS, - PROPERTY_DEMO_USER_ID_LEGACY, + PROPERTY_DEMO_USER_ID, PROPERTY_IS_READ_ONLY_MODE, PROPERTY_SLACK_COMMUNITY_USERS, ghostfolioFearAndGreedIndexDataSource @@ -237,7 +237,7 @@ export class InfoService { private async getDemoAuthToken() { const demoUserId = (await this.propertyService.getByKey( - PROPERTY_DEMO_USER_ID_LEGACY + PROPERTY_DEMO_USER_ID )) as string; if (demoUserId) { diff --git a/libs/common/src/lib/config.ts b/libs/common/src/lib/config.ts index a3b129b55..e124360a1 100644 --- a/libs/common/src/lib/config.ts +++ b/libs/common/src/lib/config.ts @@ -122,7 +122,6 @@ export const PROPERTY_DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS = 'DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS'; export const PROPERTY_DEMO_ACCOUNT_ID = 'DEMO_ACCOUNT_ID'; export const PROPERTY_DEMO_USER_ID = 'DEMO_USER_ID'; -export const PROPERTY_DEMO_USER_ID_LEGACY = 'DEMO_USER_ID_LEGACY'; export const PROPERTY_IS_DATA_GATHERING_ENABLED = 'IS_DATA_GATHERING_ENABLED'; export const PROPERTY_IS_READ_ONLY_MODE = 'IS_READ_ONLY_MODE'; export const PROPERTY_IS_USER_SIGNUP_ENABLED = 'IS_USER_SIGNUP_ENABLED';