Files
marketplaces/docs/KNOWN-ISSUES.md

142 lines
8.3 KiB
Markdown
Raw Normal View History

# 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
1. **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.ts` or the widget components - not fixed
this session, needs config-side investigation if it reproduces with
real tenant data rather than mock config.
2. **~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.ts` have no `adminProducts.*`,
`adminCategories.*`, `adminOrders.*`, `adminTransactions.*`,
`adminUsers.*`, `adminMonitoring.*`, or `adminAnalytics.*` 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 (see `translate.service.ts`), so every
templated string in these features (buttons, table headers, filters,
badges, empty/placeholder text) renders literally as e.g.
`adminProducts.create` instead 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 under
`src/app/features/admin/**`: `adminProducts` 72, `adminCategories` 23,
`adminOrders` 24, `adminUsers` 21, `adminMonitoring` 13,
`adminAnalytics` 12, `adminTransactions` 13 (≈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.
## Fixed
1. **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-bar` buttons were plain unstyled `<button>`s
(`project-editor-save-bar.component.html/.scss`) - now use the shared
`app-button` primitive.
- Fixed: `.platform-nav-group` (`header.component.html/.scss`) applied
`platform-nav-btn-left` to 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`/`-right` classes.
- 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 behind
`prefers-reduced-motion`.
- Polished: `admin-dashboard-card.component.scss` and
`admin-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-pagination` primitives 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 in
`admin-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
`::before` inset to expand the hit area without changing the visual
badge size.
- Fixed: `section.shared.scss` (used by all 11 project-editor sections)
had a bare `button`/`button.secondary` style with zero hover, focus, or
transition - added hover/active/focus-visible/disabled states plus
`prefers-reduced-motion` guard, applied uniformly across every section.
- Added: `project-editor-page.component.scss` `.project-editor-stack > *`
now fades/slides in (220ms) whenever `@switch` swaps 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 --noEmit` clean 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 serve` process died independently of these edits, confirmed via
`curl` connection-refused before restart) - restarted via
`npm 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).
2. **Project Editor footer: payment icons and social links had no validation.**
`footer-section.component.ts` parsed both fields from pipe-delimited
`<textarea>` strings (`icon.src|icon.alt`, `link.id|link.label|link.url`)
with zero validation - malformed rows silently produced empty `src`/`alt`/
`url` values instead of surfacing an error.
- Fixed: 2026-07-16, replaced both textareas with `app-key-value-editor`
rows (icon picked via `MediaPickerComponent`, label/URL via `app-input`),
added inline URL-format validation on social links (same `HTTP_URL`
pattern used in `project-validator.service.ts`) and a missing footer-logo
media picker.
3. **Project Editor navigation: nav link labels only editable for the default locale.**
`navigation-section.component.ts`'s `labelOf` helper (and the facade's
`updateNavLinkLabel`) always read/wrote the default locale's key on a
`NavigationLocalizedText` label 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-tabs` to the section; the label
input now reads/writes the active tab's locale via a new
`editableLabel()` helper, and `ProjectEditorFacade.updateNavLinkLabel()`
gained an optional `locale` parameter (defaults to the current default
locale, so existing callers are unaffected).
4. **Quick Actions: 3 untranslated raw i18n keys.**
`dashboard.actionUsers`, `dashboard.actionMonitoring`,
`dashboard.actionAnalytics` rendered as literal key strings instead of
translated labels on the admin dashboard's Quick Actions section, because
`admin-dashboard.facade.ts` referenced them but they were never added to
`translations.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.
## Notes (not bugs, just flag before shipping)
- `src/environments/environment.ts`: `useMockData` was temporarily flipped to
`true` during 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 to
`false` afterward - matches its pre-session value.