From d70bc473bee75e297e350d067f15d61989a92916 Mon Sep 17 00:00:00 2001 From: Cyprian Zasada <120047588+cyptrix12@users.noreply.github.com> Date: Thu, 23 Jul 2026 17:30:23 +0200 Subject: [PATCH 1/4] Task/improve language localization for PL (20260723) (#7399) * Update translation * Update changelog --- CHANGELOG.md | 6 ++++++ apps/client/src/locales/messages.pl.xlf | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 572f17688a..fce8d4ac60 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 Polish (`pl`) + ## 3.32.0 - 2026-07-22 ### Changed diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 5d18539aa3..0bc20eec6b 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -6526,7 +6526,7 @@ Active - Antywne + Aktywne apps/client/src/app/components/home-holdings/home-holdings.component.ts 64 From 60f34f4759adf0c30930c51bed90094cf54f8c4f Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 23 Jul 2026 17:44:39 +0200 Subject: [PATCH 2/4] Bugfix/spacing in testimonials of landing page (#7398) * Fix spacing * Update changelog --- CHANGELOG.md | 4 ++++ apps/client/src/app/pages/landing/landing-page.html | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fce8d4ac60..4122d17fbc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for Polish (`pl`) +### Fixed + +- Improved the spacing in the testimonial section on the landing page + ## 3.32.0 - 2026-07-22 ### Changed diff --git a/apps/client/src/app/pages/landing/landing-page.html b/apps/client/src/app/pages/landing/landing-page.html index cb86b471db..bdd5f422f6 100644 --- a/apps/client/src/app/pages/landing/landing-page.html +++ b/apps/client/src/app/pages/landing/landing-page.html @@ -247,11 +247,11 @@ @if (testimonial.url) { {{ testimonial.author - }} + }}, } @else { - {{ testimonial.author }} + {{ testimonial.author }}, } - , {{ testimonial.country }} From f451199a9900093ed0883ae5b6b22b80050b2df0 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 23 Jul 2026 17:45:14 +0200 Subject: [PATCH 3/4] Task/migrate deprecated animation providers (#7396) * Migrate deprecated animation providers * Update changelog --- CHANGELOG.md | 1 + apps/client/src/main.ts | 2 -- libs/ui/src/lib/carousel/carousel.component.ts | 2 +- .../entity-logo.component.stories.ts | 8 +++++--- .../fire-calculator.component.stories.ts | 12 +++++++++--- .../symbol-autocomplete.component.stories.ts | 8 +++++--- .../tags-selector.component.stories.ts | 10 ++++++++-- .../top-holdings/top-holdings.component.html | 2 +- .../top-holdings/top-holdings.component.scss | 15 +++++++++++++++ .../lib/top-holdings/top-holdings.component.ts | 17 ----------------- .../ui/src/lib/value/value.component.stories.ts | 9 +++++++-- 11 files changed, 52 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4122d17fbc..f936dd472f 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 +- Refactored the deprecated animation providers (`provideAnimations()` and `provideNoopAnimations()`) - Improved the language localization for Polish (`pl`) ### Fixed diff --git a/apps/client/src/main.ts b/apps/client/src/main.ts index 45901baeca..3e80df9c73 100644 --- a/apps/client/src/main.ts +++ b/apps/client/src/main.ts @@ -23,7 +23,6 @@ import { import { MatSnackBarModule } from '@angular/material/snack-bar'; import { MatTooltipModule } from '@angular/material/tooltip'; import { bootstrapApplication } from '@angular/platform-browser'; -import { provideAnimations } from '@angular/platform-browser/animations'; import { RouterModule, TitleStrategy } from '@angular/router'; import { ServiceWorkerModule } from '@angular/service-worker'; import { provideIonicAngular } from '@ionic/angular/standalone'; @@ -82,7 +81,6 @@ import { environment } from './environments/environment'; ), LanguageService, ModulePreloadService, - provideAnimations(), provideHttpClient(withInterceptorsFromDi()), provideIonicAngular(), provideMarkdown(), diff --git a/libs/ui/src/lib/carousel/carousel.component.ts b/libs/ui/src/lib/carousel/carousel.component.ts index 4ecd12c79b..f47d41ae5f 100644 --- a/libs/ui/src/lib/carousel/carousel.component.ts +++ b/libs/ui/src/lib/carousel/carousel.component.ts @@ -1,4 +1,5 @@ import { + ANIMATION_MODULE_TYPE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, @@ -11,7 +12,6 @@ import { ViewChild } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; -import { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations'; import { IonIcon } from '@ionic/angular/standalone'; import { addIcons } from 'ionicons'; import { chevronBackOutline, chevronForwardOutline } from 'ionicons/icons'; diff --git a/libs/ui/src/lib/entity-logo/entity-logo.component.stories.ts b/libs/ui/src/lib/entity-logo/entity-logo.component.stories.ts index 6c89718bd2..45a9962944 100644 --- a/libs/ui/src/lib/entity-logo/entity-logo.component.stories.ts +++ b/libs/ui/src/lib/entity-logo/entity-logo.component.stories.ts @@ -1,6 +1,5 @@ import { CommonModule } from '@angular/common'; -import { importProvidersFrom } from '@angular/core'; -import { provideNoopAnimations } from '@angular/platform-browser/animations'; +import { ANIMATION_MODULE_TYPE, importProvidersFrom } from '@angular/core'; import { applicationConfig, Meta, StoryObj } from '@storybook/angular'; import { EntityLogoImageSourceServiceMock } from '../mocks/entity-logo-image-source.service.mock'; @@ -13,8 +12,11 @@ export default { decorators: [ applicationConfig({ providers: [ - provideNoopAnimations(), importProvidersFrom(CommonModule), + { + provide: ANIMATION_MODULE_TYPE, + useValue: 'NoopAnimations' + }, { provide: EntityLogoImageSourceService, useValue: new EntityLogoImageSourceServiceMock() diff --git a/libs/ui/src/lib/fire-calculator/fire-calculator.component.stories.ts b/libs/ui/src/lib/fire-calculator/fire-calculator.component.stories.ts index ad80499d7b..f4528aac63 100644 --- a/libs/ui/src/lib/fire-calculator/fire-calculator.component.stories.ts +++ b/libs/ui/src/lib/fire-calculator/fire-calculator.component.stories.ts @@ -1,6 +1,7 @@ import { DEFAULT_LOCALE } from '@ghostfolio/common/config'; import { CommonModule } from '@angular/common'; +import { ANIMATION_MODULE_TYPE } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import '@angular/localize/init'; import { MatButtonModule } from '@angular/material/button'; @@ -8,7 +9,6 @@ import { provideNativeDateAdapter } from '@angular/material/core'; import { MatDatepickerModule } from '@angular/material/datepicker'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { moduleMetadata } from '@storybook/angular'; import type { Meta, StoryObj } from '@storybook/angular'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; @@ -32,10 +32,16 @@ export default { MatFormFieldModule, MatInputModule, NgxSkeletonLoaderModule, - NoopAnimationsModule, ReactiveFormsModule ], - providers: [FireCalculatorService, provideNativeDateAdapter()] + providers: [ + FireCalculatorService, + provideNativeDateAdapter(), + { + provide: ANIMATION_MODULE_TYPE, + useValue: 'NoopAnimations' + } + ] }) ] } as Meta; diff --git a/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.stories.ts b/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.stories.ts index de7a09a042..5bae01c70f 100644 --- a/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.stories.ts +++ b/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.stories.ts @@ -2,14 +2,13 @@ import { LookupItem } from '@ghostfolio/common/interfaces'; import { CommonModule } from '@angular/common'; import { HttpClient } from '@angular/common/http'; -import { importProvidersFrom } from '@angular/core'; +import { ANIMATION_MODULE_TYPE, importProvidersFrom } from '@angular/core'; import { FormControl, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms'; -import { provideNoopAnimations } from '@angular/platform-browser/animations'; import { applicationConfig, Meta, StoryObj } from '@storybook/angular'; import { HttpClientMock } from '../mocks/httpClient.mock'; @@ -75,8 +74,11 @@ export default { decorators: [ applicationConfig({ providers: [ - provideNoopAnimations(), importProvidersFrom(CommonModule, FormsModule, ReactiveFormsModule), + { + provide: ANIMATION_MODULE_TYPE, + useValue: 'NoopAnimations' + }, { provide: NgControl, useValue: { diff --git a/libs/ui/src/lib/tags-selector/tags-selector.component.stories.ts b/libs/ui/src/lib/tags-selector/tags-selector.component.stories.ts index d11175fd1c..48aeaffe31 100644 --- a/libs/ui/src/lib/tags-selector/tags-selector.component.stories.ts +++ b/libs/ui/src/lib/tags-selector/tags-selector.component.stories.ts @@ -1,6 +1,6 @@ import { CommonModule } from '@angular/common'; +import { ANIMATION_MODULE_TYPE } from '@angular/core'; import '@angular/localize/init'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; import { GfTagsSelectorComponent } from './tags-selector.component'; @@ -10,7 +10,13 @@ export default { component: GfTagsSelectorComponent, decorators: [ moduleMetadata({ - imports: [CommonModule, NoopAnimationsModule] + imports: [CommonModule], + providers: [ + { + provide: ANIMATION_MODULE_TYPE, + useValue: 'NoopAnimations' + } + ] }) ] } as Meta; diff --git a/libs/ui/src/lib/top-holdings/top-holdings.component.html b/libs/ui/src/lib/top-holdings/top-holdings.component.html index 11900106ae..60f8032891 100644 --- a/libs/ui/src/lib/top-holdings/top-holdings.component.html +++ b/libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -58,7 +58,7 @@ mat-cell [attr.colspan]="displayedColumns.length" > -
+
collapsed', - animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)') - ) - ]) - ], changeDetection: ChangeDetectionStrategy.OnPush, imports: [ GfValueComponent, diff --git a/libs/ui/src/lib/value/value.component.stories.ts b/libs/ui/src/lib/value/value.component.stories.ts index 5a285e89ba..a5971b2520 100644 --- a/libs/ui/src/lib/value/value.component.stories.ts +++ b/libs/ui/src/lib/value/value.component.stories.ts @@ -1,5 +1,5 @@ +import { ANIMATION_MODULE_TYPE } from '@angular/core'; import '@angular/localize/init'; -import { provideNoopAnimations } from '@angular/platform-browser/animations'; import { applicationConfig, moduleMetadata } from '@storybook/angular'; import type { Meta, StoryObj } from '@storybook/angular'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; @@ -11,7 +11,12 @@ export default { component: GfValueComponent, decorators: [ applicationConfig({ - providers: [provideNoopAnimations()] + providers: [ + { + provide: ANIMATION_MODULE_TYPE, + useValue: 'NoopAnimations' + } + ] }), moduleMetadata({ imports: [NgxSkeletonLoaderModule] From fab16d09799787693e78ad1fbd4f0917c2c86299 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 23 Jul 2026 17:45:58 +0200 Subject: [PATCH 4/4] Task/add stack trace logging for MaxListenersExceededWarning (#7400) * Add stack trace logging for MaxListenersExceededWarning * Update changelog --- CHANGELOG.md | 4 ++++ apps/api/src/main.ts | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f936dd472f..3b0b0a418e 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 the stack trace logging for `MaxListenersExceededWarning` occurrences + ### Changed - Refactored the deprecated animation providers (`provideAnimations()` and `provideNoopAnimations()`) diff --git a/apps/api/src/main.ts b/apps/api/src/main.ts index 77d571ea0b..b30a20323e 100644 --- a/apps/api/src/main.ts +++ b/apps/api/src/main.ts @@ -26,6 +26,15 @@ import { AppModule } from './app/app.module'; import { environment } from './environments/environment'; const logger = new Logger('Bootstrap'); +const processWarningLogger = new Logger('ProcessWarning'); + +process.on('warning', ({ name, stack }) => { + if (name === 'MaxListenersExceededWarning') { + // Log the stack trace of MaxListenersExceededWarning occurrences to identify + // the event emitter and the call site which registers the listeners + processWarningLogger.warn(stack); + } +}); async function bootstrap() { // Respect HTTP_PROXY / HTTPS_PROXY / NO_PROXY for outbound HTTP requests