chore(cleanup): delete nine dead components, orphaned i18n keys and unused deps#1116
Conversation
…nused deps Removes verified-dead components (0 class/selector references outside their own files): EpgListComponent (+ epg-list-item), EpgViewComponent, LiveEpgPanelComponent, StalkerCollectionChannelsListComponent, NavigationComponent, FilterSortMenuComponent, video-player ToolbarComponent, PortalCollectionShellComponent and LoadingOverlayComponent, together with their barrel exports. Alive code extracted from the deleted trees: - LiveEpgPanelSummary -> libs/ui/shared-portals/src/lib/live-epg-panel-summary.ts - EpgProgramActivationEvent -> libs/ui/epg/src/lib/epg-program-activation-event.ts - epg-list.utils.ts trimmed to the three timeline-used helpers and moved to libs/ui/epg/src/lib/epg-program.utils.ts - epg-item-description/ moved up out of the deleted epg-list/ folder Also removes 18 i18n keys now unused (from all 18 locales), dead CSS selectors targeting the deleted elements, and unused dependencies: lodash (+ @types/lodash), semver, @ngrx/component-store and @videojs/http-streaming (videojs-quality-selector-hls declares no peer dependency on it; video.js 8 bundles VHS). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The merged note said @ngrx/component-store is listed in package.json but unused; this branch removes the dependency entirely. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Greptile SummaryThis PR removes nine verified-dead Angular components (~4,800 LOC) left over from the EPG timeline rework in #1102, along with orphaned i18n keys, dead CSS selectors, and four unused npm dependencies. The alive code embedded in those trees (two interfaces and a utility module) has been cleanly extracted into standalone files.
Confidence Score: 5/5Safe to merge — pure dead-code removal with all alive code correctly extracted and re-wired. Every deleted component was verified to have zero class references and zero selector usages in the surviving codebase. All import paths for the relocated utilities and interfaces were updated across eight consumer files. The barrel exports for both affected libraries are consistent with what the surviving callers import. Removed npm packages have no remaining import sites. The build and 113 unit tests pass per the PR description. No files require special attention. The extracted utility file (epg-program.utils.ts) and the two new interface files are straightforward and match their consumers exactly. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
subgraph deleted["Deleted Components (dead code)"]
D1[EpgListComponent]
D2[EpgViewComponent]
D3[LiveEpgPanelComponent]
D4[StalkerCollectionChannelsListComponent]
D5[NavigationComponent]
D6[FilterSortMenuComponent]
D7[ToolbarComponent]
D8[PortalCollectionShellComponent]
D9[LoadingOverlayComponent]
end
subgraph extracted["Extracted — alive code"]
E1[epg-program-activation-event.ts]
E2[epg-program.utils.ts]
E3[live-epg-panel-summary.ts]
E4[epg-item-description/]
end
subgraph survivors["Surviving consumers"]
S1[epg-timeline.component.ts]
S2[epg-list-view.component.ts]
S3[epg-list-view.utils.ts]
S4[multi-epg-container.component.ts]
S5[4 layout components]
end
D1 -->|extracted| E1
D1 -->|extracted| E2
D1 -->|extracted| E4
D3 -->|extracted| E3
E1 --> S1
E1 --> S2
E2 --> S1
E2 --> S3
E4 --> S2
E4 --> S4
E3 --> S5
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
subgraph deleted["Deleted Components (dead code)"]
D1[EpgListComponent]
D2[EpgViewComponent]
D3[LiveEpgPanelComponent]
D4[StalkerCollectionChannelsListComponent]
D5[NavigationComponent]
D6[FilterSortMenuComponent]
D7[ToolbarComponent]
D8[PortalCollectionShellComponent]
D9[LoadingOverlayComponent]
end
subgraph extracted["Extracted — alive code"]
E1[epg-program-activation-event.ts]
E2[epg-program.utils.ts]
E3[live-epg-panel-summary.ts]
E4[epg-item-description/]
end
subgraph survivors["Surviving consumers"]
S1[epg-timeline.component.ts]
S2[epg-list-view.component.ts]
S3[epg-list-view.utils.ts]
S4[multi-epg-container.component.ts]
S5[4 layout components]
end
D1 -->|extracted| E1
D1 -->|extracted| E2
D1 -->|extracted| E4
D3 -->|extracted| E3
E1 --> S1
E1 --> S2
E2 --> S1
E2 --> S3
E4 --> S2
E4 --> S4
E3 --> S5
Reviews (4): Last reviewed commit: "Merge origin/master: wire new EPG list v..." | Re-trigger Greptile |
The Tier A gate failed in CI because deleting the dead epg-view and live-epg-panel components removed the only specs in libs/ui/shared-portals. The lib now contains a single type-only interface (LiveEpgPanelSummary), so there is no runtime code to unit test; reclassify it to Tier C with a documented reason, matching the gate's own guidance. Also update remaining doc references to the deleted components in docs/architecture/stalker-epg.md, iptvnator-ui-guidelines.md and CLAUDE.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Master added EpgListViewComponent (#1115) written against the old epg-list/ paths this branch deletes, plus the lint/coverage CI hardening (#1117). Resolution: - ui/epg barrel: keep relocated epg-item-description and epg-program-activation-event exports, add the three new epg-list-view exports, drop the deleted epg-list.component export. - epg-list-view imports updated to ../epg-item-description, ../epg-program-activation-event and ../epg-program.utils. - Restore deduplicateProgramsByTimeSlot (+ private helpers) in epg-program.utils.ts — the new list view makes it live again. - _portal-layout.scss / unified-live-tab.component.scss: panel selectors cover app-epg-timeline and app-epg-list-view only. - Drop the deleted epg-list.component.spec.ts entry from the max-lines baseline. - m3u-playlist-module.md: add EpgListViewComponent to the EPG components table. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 similar comment
|
@codex review |
|
Codex Review: Didn't find any major issues. You're on a roll. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Resolves conflicts against the dead-component cleanup (#1116), the max-lines lint baseline (#1117) and the vertical EPG list view (#1115): - libs/ui/shared-portals/src/index.ts: keep master's barrel (EpgView and LiveEpgPanel components were deleted, LiveEpgPanelSummary extracted) plus the new actor-view export from this branch - settings-form.utils.ts / settings.component.spec.ts: keep both the new epgViewMode control from master and the tmdb settings group Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Summary
package.json.Changes
Deleted components
EpgListComponent+ private childepg-list-item/(libs/ui/epg)EpgViewComponentandLiveEpgPanelComponent(libs/ui/shared-portals)StalkerCollectionChannelsListComponent(libs/portal/stalker/feature)NavigationComponent(libs/portal/shared/ui— siblingportal-rail-links.componentkept)FilterSortMenuComponent(libs/playlist/shared/ui)ToolbarComponent(libs/ui/playback— siblingsidebar/kept)PortalCollectionShellComponent(libs/portal/shared/ui)LoadingOverlayComponent(libs/portal/xtream/feature)Alive code extracted from the deleted trees
LiveEpgPanelSummaryinterface →libs/ui/shared-portals/src/lib/live-epg-panel-summary.ts(4 live layouts import it via the barrel, unchanged)EpgProgramActivationEventinterface →libs/ui/epg/src/lib/epg-program-activation-event.ts(used by the timeline and 3 layouts)epg-list.utils.tstrimmed to the three helpers the EPG timeline still uses (getProgramTimeMs,getProgramDateKey,areProgramsSame) and moved tolibs/ui/epg/src/lib/epg-program.utils.tsepg-item-description/moved up out of the deletedepg-list/folder (still used by the programme dialog, multi-EPG, and channel-list-item)Cleanup
styles.scss,_portal-layout.scss,unified-live-tab.component.scsslodash(+@types/lodash),semver,@ngrx/component-store,@videojs/http-streaming(videojs-quality-selector-hlsdeclares no peer dependency on it; video.js 8 bundles VHS internally)docs/architecture/m3u-playlist-module.md,docs/architecture/iptvnator-ui-guidelines.md,CLAUDE.mdTesting
pnpm nx build web— passespnpm nx build electron-backend— passespnpm nx affected -t test --uncommitted— 113 tests across 34 projects, all passpnpm nx affected -t lint --uncommitted— 38/40 pass; the 2 failures (workspace-shell-util,remote-control) are pre-existing issues in files this PR does not touch🤖 Generated with Claude Code