From 38f22024c7b1069346ead4aec1a5e08e50eff969 Mon Sep 17 00:00:00 2001 From: 4gray Date: Sun, 4 Oct 2026 10:09:21 +0200 Subject: [PATCH] perf(workspace): make the workspace shell Eager components OnPush Plan item C6 step 3 for libs/workspace: the seven Eager components in workspace/shell/feature, including the workspace shell root the idle audit found re-rendering on every idle tick. Their templates read signals, signal inputs, computed values and template-event state only; the one plain field written outside the template (categoryLockTarget) is not rendered. They switch to OnPush without other changes. Co-Authored-By: Claude Opus 5.5 --- docs/architecture/zoneless-migration.md | 14 +++++++------- .../workspace-command-palette.component.ts | 2 +- ...workspace-collection-context-panel.component.ts | 2 +- .../workspace-context-panel.component.ts | 2 +- .../workspace-settings-context-panel.component.ts | 2 +- ...orkspace-keyboard-shortcuts-dialog.component.ts | 2 +- .../workspace-shell/workspace-shell.component.ts | 2 +- .../workspace-sources.component.ts | 2 +- 8 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/architecture/zoneless-migration.md b/docs/architecture/zoneless-migration.md index 630d51ff2..bd6fb2207 100644 --- a/docs/architecture/zoneless-migration.md +++ b/docs/architecture/zoneless-migration.md @@ -114,13 +114,13 @@ files that still contain `ChangeDetectionStrategy.Eager`. ### libs/workspace (7) -- [ ] `libs/workspace/shell/feature/src/lib/workspace-command-palette/workspace-command-palette.component.ts` -- [ ] `libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-collection-context-panel.component.ts` -- [ ] `libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-context-panel.component.ts` -- [ ] `libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-settings-context-panel.component.ts` -- [ ] `libs/workspace/shell/feature/src/lib/workspace-keyboard-shortcuts/workspace-keyboard-shortcuts-dialog.component.ts` -- [ ] `libs/workspace/shell/feature/src/lib/workspace-shell/workspace-shell.component.ts` (idle audit root) -- [ ] `libs/workspace/shell/feature/src/lib/workspace-sources/workspace-sources.component.ts` +- [x] `libs/workspace/shell/feature/src/lib/workspace-command-palette/workspace-command-palette.component.ts` +- [x] `libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-collection-context-panel.component.ts` +- [x] `libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-context-panel.component.ts` +- [x] `libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-settings-context-panel.component.ts` +- [x] `libs/workspace/shell/feature/src/lib/workspace-keyboard-shortcuts/workspace-keyboard-shortcuts-dialog.component.ts` +- [x] `libs/workspace/shell/feature/src/lib/workspace-shell/workspace-shell.component.ts` (idle audit root) +- [x] `libs/workspace/shell/feature/src/lib/workspace-sources/workspace-sources.component.ts` ### libs/playlist (14) diff --git a/libs/workspace/shell/feature/src/lib/workspace-command-palette/workspace-command-palette.component.ts b/libs/workspace/shell/feature/src/lib/workspace-command-palette/workspace-command-palette.component.ts index b0d8f3889..56833b25a 100644 --- a/libs/workspace/shell/feature/src/lib/workspace-command-palette/workspace-command-palette.component.ts +++ b/libs/workspace/shell/feature/src/lib/workspace-command-palette/workspace-command-palette.component.ts @@ -45,7 +45,7 @@ interface WorkspaceCommandGroupSection { selector: 'app-workspace-command-palette', imports: [MatDialogModule, MatIconModule, TranslatePipe], templateUrl: './workspace-command-palette.component.html', - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.OnPush, styleUrl: './workspace-command-palette.component.scss', }) export class WorkspaceCommandPaletteComponent implements AfterViewInit { diff --git a/libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-collection-context-panel.component.ts b/libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-collection-context-panel.component.ts index ca0f75f30..70f638bfb 100644 --- a/libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-collection-context-panel.component.ts +++ b/libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-collection-context-panel.component.ts @@ -54,7 +54,7 @@ import { WorkspaceShellContextDrawerService } from '@iptvnator/workspace/shell/u /> `, - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.OnPush, styleUrl: './workspace-context-panel.component.scss', }) export class WorkspaceCollectionContextPanelComponent { diff --git a/libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-context-panel.component.ts b/libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-context-panel.component.ts index a2b87f5bd..ff449972a 100644 --- a/libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-context-panel.component.ts +++ b/libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-context-panel.component.ts @@ -82,7 +82,7 @@ interface WorkspaceCategoryLike { WorkspaceContextErrorViewComponent, ], templateUrl: './workspace-context-panel.component.html', - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.OnPush, styleUrl: './workspace-context-panel.component.scss', }) export class WorkspaceContextPanelComponent { diff --git a/libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-settings-context-panel.component.ts b/libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-settings-context-panel.component.ts index 5a93f9125..cdfb1669c 100644 --- a/libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-settings-context-panel.component.ts +++ b/libs/workspace/shell/feature/src/lib/workspace-context-panel/workspace-settings-context-panel.component.ts @@ -11,7 +11,7 @@ import { SettingsContextService } from '@iptvnator/workspace/shell/util/settings selector: 'app-workspace-settings-context-panel', imports: [MatIconModule, RouterLink, RouterLinkActive, TranslateModule], styleUrls: ['./workspace-settings-context-panel.component.scss'], - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.OnPush, template: `

{{ 'SETTINGS.TITLE' | translate }}

diff --git a/libs/workspace/shell/feature/src/lib/workspace-keyboard-shortcuts/workspace-keyboard-shortcuts-dialog.component.ts b/libs/workspace/shell/feature/src/lib/workspace-keyboard-shortcuts/workspace-keyboard-shortcuts-dialog.component.ts index 6140c36b0..07d5c036c 100644 --- a/libs/workspace/shell/feature/src/lib/workspace-keyboard-shortcuts/workspace-keyboard-shortcuts-dialog.component.ts +++ b/libs/workspace/shell/feature/src/lib/workspace-keyboard-shortcuts/workspace-keyboard-shortcuts-dialog.component.ts @@ -19,7 +19,7 @@ export interface WorkspaceKeyboardShortcutsDialogData { selector: 'app-workspace-keyboard-shortcuts-dialog', imports: [MatButtonModule, MatDialogModule, MatIconModule, TranslatePipe], templateUrl: './workspace-keyboard-shortcuts-dialog.component.html', - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.OnPush, styleUrl: './workspace-keyboard-shortcuts-dialog.component.scss', }) export class WorkspaceKeyboardShortcutsDialogComponent { diff --git a/libs/workspace/shell/feature/src/lib/workspace-shell/workspace-shell.component.ts b/libs/workspace/shell/feature/src/lib/workspace-shell/workspace-shell.component.ts index a86114ed7..98e433cb5 100644 --- a/libs/workspace/shell/feature/src/lib/workspace-shell/workspace-shell.component.ts +++ b/libs/workspace/shell/feature/src/lib/workspace-shell/workspace-shell.component.ts @@ -49,7 +49,7 @@ import { LIVE_CATEGORIES_POPOVER } from '@iptvnator/portal/shared/util'; ], templateUrl: './workspace-shell.component.html', styleUrl: './workspace-shell.component.scss', - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.OnPush, providers: [ WorkspaceShellFacade, WorkspaceShellRouteStateService, diff --git a/libs/workspace/shell/feature/src/lib/workspace-sources/workspace-sources.component.ts b/libs/workspace/shell/feature/src/lib/workspace-sources/workspace-sources.component.ts index 76c60d2a3..168d3924e 100644 --- a/libs/workspace/shell/feature/src/lib/workspace-sources/workspace-sources.component.ts +++ b/libs/workspace/shell/feature/src/lib/workspace-sources/workspace-sources.component.ts @@ -61,7 +61,7 @@ interface SortOption { TranslatePipe, ], templateUrl: './workspace-sources.component.html', - changeDetection: ChangeDetectionStrategy.Eager, + changeDetection: ChangeDetectionStrategy.OnPush, styleUrl: './workspace-sources.component.scss', }) export class WorkspaceSourcesComponent {