Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
83 lines
4.8 KiB
Markdown
83 lines
4.8 KiB
Markdown
# 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. **~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. **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.
|
||
|
||
2. **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).
|
||
|
||
3. **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.
|