- fix save-bar buttons to use shared app-button primitive (were unstyled) - fix platform-nav-group border/radius via structural selectors, drop dead -middle/-right classes - storefront widgets (hero/categories/product-carousel/footer-nav): design tokens, hover/focus states, 44px touch targets, entrance motion, reduced- motion guards - admin dashboard cards + quick-actions: hover lift, entrance animation - admin product-form gallery remove badge: hover/focus + expanded hit area - project-editor section.shared button styles: hover/active/focus/disabled states + reduced-motion; section-switch fade-in motion Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
8.3 KiB
Known Issues (fix after sprint wrap-up)
Running list of bugs spotted during manual verification, deferred until the current sprint's feature work is done. Add to this list as more are found; don't fix inline unless asked.
Open
-
Homepage hero-to-categories dead space gap on the storefront home page. Traces to bootstrap mock config (widget/section padding values in the dev bootstrap fixture), not a code defect in
dynamic-page-layout.component.tsor the widget components - not fixed this session, needs config-side investigation if it reproduces with real tenant data rather than mock config. -
~179 untranslated raw i18n keys across the entire admin backoffice CRUD UI (products/categories/orders/transactions/users/monitoring/analytics).
translations.ts/en.ts/ru.ts/hy.tshave noadminProducts.*,adminCategories.*,adminOrders.*,adminTransactions.*,adminUsers.*,adminMonitoring.*, oradminAnalytics.*sections at all (confirmed: zero matches for any of these prefixes in any of the 4 i18n files).TranslateService.t()falls through to returning the raw dotted key string when a key isn't found (seetranslate.service.ts), so every templated string in these features (buttons, table headers, filters, badges, empty/placeholder text) renders literally as e.g.adminProducts.createinstead of real copy - same root cause as the already-fixed dashboard Quick Actions bug below, just at the scale of almost the entire admin backoffice built across Sprints 20-27.- Counted by grepping all
'adminXxx.yyy'translate-pipe usages undersrc/app/features/admin/**:adminProducts72,adminCategories23,adminOrders24,adminUsers21,adminMonitoring13,adminAnalytics12,adminTransactions13 (≈178 distinct keys, ×3 locales ≈ 534 strings to author). - Likely why it was never caught: every affected Sprint (20-27) explicitly noted live-browser click-through was blocked on the guarded admin route and verification was tsc/build/arch:check only - none of those catch missing i18n keys (pipe arguments are plain strings, not type-checked).
- Found: 2026-07-15, during Sprint 28 manual audit (reading templates + grepping i18n files, not live browser).
- Deferred to Sprint 29 ("translation validation" is explicit Sprint 29
scope per
docs/SPRINT-PLAN.md) rather than fixed inline during Sprint 28 polish - authoring ~534 correct strings across 3 languages is a large, separate, mechanical pass of its own and shouldn't be rushed inside a polish sprint. Sprint 28 only adds the handful of new keys it introduces itself (empty-state copy for the skeleton/empty-state consistency fix), it does not touch the ~178 pre-existing gap.
- Counted by grepping all
Fixed
-
Full-project UX/UI + motion pass across storefront, admin dashboard, admin CRUD, and project-editor. User asked (2026-07-16) for a full UX/UI audit across admin, dashboard, and storefront, sequenced: storefront -> admin dashboard -> admin CRUD -> project-editor. All 4 phases completed:
- Fixed:
project-editor-save-barbuttons were plain unstyled<button>s (project-editor-save-bar.component.html/.scss) - now use the sharedapp-buttonprimitive. - Fixed:
.platform-nav-group(header.component.html/.scss) appliedplatform-nav-btn-leftto every nav button regardless of position, causing double borders and wrong end-radius; replaced with:first-child/:last-child/:not(:first-child)structural selectors, dropped the dead-middle/-rightclasses. - Polished: storefront widgets used on every page -
hero-widget.component.ts,categories-widget.component.ts,product-carousel-widget.component.ts,footer-navigation-widget.component.ts- added design tokens, hover/ focus states, 44px touch targets, entrance motion, all gated behindprefers-reduced-motion. - Polished:
admin-dashboard-card.component.scssandadmin-dashboard-quick-actions.component.scss- hover lift, entrance animation, reduced-motion guard. - Audited: admin backoffice CRUD (products/categories/orders/users/
transactions/monitoring/analytics) - already consistently built on the
shared
app-button/app-table/app-badge/app-empty-state/app-paginationprimitives from earlier sprints; grepped all 7 areas for raw unstyled<button>s (the save-bar bug pattern) and found only one: the gallery-image remove badge inadmin-product-form.component.scss(.gallery-item button) had no hover/focus state and a 20x20px hit area below the 44px touch-target minimum - fixed with hover/focus-visible states and an invisible::beforeinset to expand the hit area without changing the visual badge size. - Fixed:
section.shared.scss(used by all 11 project-editor sections) had a barebutton/button.secondarystyle with zero hover, focus, or transition - added hover/active/focus-visible/disabled states plusprefers-reduced-motionguard, applied uniformly across every section. - Added:
project-editor-page.component.scss.project-editor-stack > *now fades/slides in (220ms) whenever@switchswaps the active section component;.project-editor-section-actions button(reset section) got the same hover/focus treatment as the rest of the shared button styles. - Verified:
tsc --noEmitclean after every batch of edits; live-checked in browser at each phase (homepage nav-group render, save-bar render, dashboard cards, project-editor section switch + reset button). - One dev-server crash occurred mid-session (unrelated pre-existing
ng serveprocess died independently of these edits, confirmed viacurlconnection-refused before restart) - restarted vianpm run dexar, not a regression from this work. - See item 1 below (homepage dead-space gap) for the one issue found but not fixed (config data, not code).
- Fixed:
-
Project Editor footer: payment icons and social links had no validation.
footer-section.component.tsparsed both fields from pipe-delimited<textarea>strings (icon.src|icon.alt,link.id|link.label|link.url) with zero validation - malformed rows silently produced emptysrc/alt/urlvalues instead of surfacing an error.- Fixed: 2026-07-16, replaced both textareas with
app-key-value-editorrows (icon picked viaMediaPickerComponent, label/URL viaapp-input), added inline URL-format validation on social links (sameHTTP_URLpattern used inproject-validator.service.ts) and a missing footer-logo media picker.
- Fixed: 2026-07-16, replaced both textareas with
-
Project Editor navigation: nav link labels only editable for the default locale.
navigation-section.component.ts'slabelOfhelper (and the facade'supdateNavLinkLabel) always read/wrote the default locale's key on aNavigationLocalizedTextlabel map, so switching locales elsewhere in the editor had no effect on nav link text - other locales' translations could only be edited by hand-editing the exported JSON.- Fixed: 2026-07-16, added
app-locale-tabsto the section; the label input now reads/writes the active tab's locale via a neweditableLabel()helper, andProjectEditorFacade.updateNavLinkLabel()gained an optionallocaleparameter (defaults to the current default locale, so existing callers are unaffected).
- Fixed: 2026-07-16, added
-
Quick Actions: 3 untranslated raw i18n keys.
dashboard.actionUsers,dashboard.actionMonitoring,dashboard.actionAnalyticsrendered as literal key strings instead of translated labels on the admin dashboard's Quick Actions section, becauseadmin-dashboard.facade.tsreferenced them but they were never added totranslations.ts/en.ts/ru.ts/hy.ts.- Found: 2026-07-15, manual browser verification of
/:lang/backoffice/dashboard?devBypassAdmin=true. - Fixed: 2026-07-15, added the 3 keys to the interface + all 3 locales.
- Found: 2026-07-15, manual browser verification of
Notes (not bugs, just flag before shipping)
src/environments/environment.ts:useMockDatawas temporarily flipped totrueduring this session's manual verification (so Categories/Products dashboard cards showed mock counts instead of erroring against a nonexistent local/api/backoffice/*backend), then reverted back tofalseafterward - matches its pre-session value.