Ran via ng update @angular/cdk@22 - no code migrations required.
Verified after full upgrade (core/cli/animations/common/compiler/
forms/platform-browser/router/service-worker/cdk all now 22.0.8/
22.0.6): tsc --noEmit clean, ng build --configuration=production
clean (same pre-existing bundle-budget warning, size unchanged),
arch:check:boundaries and arch:check:cycles both pass. Live-verified
in browser: storefront home renders correctly (categories/products/
i18n all working), /backoffice/dashboard (admin shell, lazy-loaded
per the earlier routing fix) renders correctly, no console errors on
either.
Required a Node.js upgrade on the dev machine first (Angular 22 CLI
needs Node >=22.22.3 or >=24.15; machine had v22.16.0) - done by the
user before this update ran.
Ran via ng update @angular/core@22 @angular/cli@22 (schematics applied
automatically). TypeScript bumped 5.9.3 -> 6.0.3 as a required peer.
Migrations applied:
- provideHttpClient() calls gained withXhr() where HttpXhrBackend is used
(app.config.ts)
- optional-chaining expressions wrapped in $safeNavigationMigration()
(language-selector.component.html)
- nullishCoalescingNotNullable/optionalChainNotNullable extended
diagnostics disabled in tsconfig.app.json/tsconfig.spec.json (matches
the new stricter default the migration works around)
Next: ng update @angular/cdk@22, then verify tsc/build/tests.
RC-01 Phase 1 mechanical fixes (verified against current repo state,
not blindly reapplied from TODO.md):
- admin/products create/edit/duplicate now protected by an unsaved-
changes guard (adminProductDirtyGuard), mirroring the existing
categories pattern. AdminProductsFacade had zero dirty-tracking
before this - added a dirty signal, set true on updateDraft(),
cleared on load/create/successful save. Added confirmLeaveUnsaved
to the adminProducts i18n section (en/ru/hy) - categories already
had its own copy of this key, products didn't.
- barry-cache bumped ^0.1.0 -> ^0.9.3 (the pinned range no longer
resolved on the registry - ETARGET - which had been silently
blocking every npm install/uninstall all cycle).
- Removed primeng/primeicons (npm uninstall, now unblocked) - the
only consumer (items-carousel) was already deleted in RC PERF-01.
- Removed core/search/services/search-history.service.ts, a dead
1-line re-export with zero importers (verified: the real
implementation is features/search/services/search-history.service.ts,
used by search.facade.ts). Left core/search/models/* alone - those
ARE live, imported by catalog components.
Verified before touching: HeaderConfig.showProfile toggle is already
removed from the header-section editor template (TODO.md was stale on
this one) - no change needed, will correct the tracking doc separately.
tsc --noEmit clean, npm run build green (bundle unchanged, primeng
was already tree-shaken out, this just removes the dead dependency
declaration itself).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Add @lucide/angular dependency and a single shared entry point for
every icon in the app: app-icon (src/app/shared/ui/icon), backed by a
canonical name -> Lucide-icon registry (icon-registry.ts) covering
every concept the RC icon audit needs across storefront, builder, and
backoffice. One name per meaning, one default size/stroke-width, so
every screen renders the same icon the same way.
Package note: lucide-angular (unscoped) is deprecated upstream in
favor of @lucide/angular - installed the maintained package directly.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Milestone 1 of the Configuration Engine sprint.
- Add schema/ registry: FieldSchema model, SECTION_FIELD_SCHEMAS covering
every editable field per section, and EditorSchemaService (getFields,
getField, all, getByPath). Single source of truth for labels, defaults,
and validator references; sections stay hand-authored (metadata-augmented).
- Stand up Karma + Jasmine (ng test) with a headless, sandbox-free Chrome
launcher; add tsconfig.spec.json, karma.conf.js, angular.json test target,
and npm "test" script. First spec: editor-schema.service.spec (7 passing).
No behavior change. Gate: arch:check, tsc --noEmit, npm test (7/7), build all green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>