2026-07-15 20:25:12 +04:00
|
|
|
|
# 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
|
|
|
|
|
|
|
2026-07-16 23:32:31 +04:00
|
|
|
|
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
|
2026-07-16 00:19:41 +04:00
|
|
|
|
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.
|
2026-07-15 20:25:12 +04:00
|
|
|
|
|
docs(project-editor): document 2026-07-17 bug-hunt audit pass
- EDITOR.md: updated sections table (branding OG/gallery + image-field,
header layout/sticky, widgets JSON error feedback), the inline-validation
paragraph (now lists every wired fieldKey, not just the original 3
sections), the primitives table (app-image-field, app-code-editor), and a
new dated section detailing all 9 fixed bugs plus the 3 real gaps found
but deferred (theme mode dead at runtime, dynamic-renderer unwired,
header profile menu missing).
- KNOWN-ISSUES.md: added the 3 deferred gaps as new Open items, added a
Fixed entry summarizing the 9 bugs (points to EDITOR.md for full detail
rather than duplicating it).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-17 21:12:10 +04:00
|
|
|
|
3. **Theme Mode selector has no runtime effect.** `theme-section`'s light/dark/
|
|
|
|
|
|
system dropdown saves correctly and `theme-engine.service.ts` sets a
|
|
|
|
|
|
`data-theme-mode` attribute on `<html>`, but no CSS anywhere in the app
|
|
|
|
|
|
reads that attribute — picking Dark or System changes nothing visually
|
|
|
|
|
|
today. Theme palette colors are unaffected (they're real CSS custom
|
|
|
|
|
|
properties, genuinely live). Fixing this means implementing actual
|
|
|
|
|
|
dark-mode CSS (a dark palette + `[data-theme-mode]`/`prefers-color-scheme`
|
|
|
|
|
|
strategy + a `matchMedia` listener for "system", since that can change
|
|
|
|
|
|
without a reload) — a real feature project, not a wiring fix.
|
|
|
|
|
|
- Found: 2026-07-17, project-editor bug-hunt audit (`docs/EDITOR.md`).
|
|
|
|
|
|
|
|
|
|
|
|
4. **`dynamic-renderer/` pipeline exists but is never wired up.**
|
|
|
|
|
|
`src/app/dynamic-renderer/{page-renderer,section-renderer,section-engine,
|
|
|
|
|
|
page-resolver,widget-host}` has services and models but zero components
|
|
|
|
|
|
or templates (every directory has only a `.gitkeep`). The storefront
|
|
|
|
|
|
homepage renders through a separate, older path that doesn't consume it.
|
|
|
|
|
|
Two editor fields feed this dead pipeline with no visible effect:
|
|
|
|
|
|
`layout.type` (Theme section, "Site Layout") and the homepage section's
|
|
|
|
|
|
own `type` field (`homepage-section.component.ts`'s
|
|
|
|
|
|
`updateSection(id, 'type', ...)` has no UI calling it, because of this).
|
|
|
|
|
|
Needs a decision: finish wiring it in (if it's WIP for a planned
|
|
|
|
|
|
replacement) or delete it as abandoned scaffolding.
|
|
|
|
|
|
- Found: 2026-07-17, project-editor bug-hunt audit.
|
|
|
|
|
|
|
|
|
|
|
|
5. **`HeaderConfig.showProfile` toggle has no corresponding UI.** The header
|
|
|
|
|
|
editor's "Profile" toggle updates a real config field, but
|
|
|
|
|
|
`header.component.html` never references `showProfile` — there's no
|
|
|
|
|
|
profile/account menu in the storefront header to show or hide. Needs an
|
|
|
|
|
|
auth-system check first (does one exist yet?) before building the menu.
|
|
|
|
|
|
- Found: 2026-07-17, project-editor bug-hunt audit.
|
|
|
|
|
|
|
docs: end-of-sprint refresh — known issues, roadmap progress
- KNOWN-ISSUES: log 4 items surfaced during RC-Premium-01 (payment modal
still custom, cart confirm() has no dialog pattern, stars/legacy hex
with no token match, category/search hand-rolled skeletons), not
previously tracked outside STORE_FRONT_UX_REVIEW.md.
- FRONTEND-ROADMAP: add Sprint 30 status (verify pass re-run green,
git push still pending explicit go-ahead), dedupe open-items list
against KNOWN-ISSUES.
- graphify graph regenerated (graphify-out/, cache only, not tracked).
- Obsidian notes: skipped, no running Obsidian instance in this session.
- No architecture change this sprint — no ADR links to update.
- No application code touched.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-23 23:38:06 +04:00
|
|
|
|
6. **Payment modal / bank-payment iframe on Cart still custom, not `app-dialog`.**
|
docs: sync documentation after perf/a11y/release-candidate work
- PROJECT.md: Current Status updated (perf/a11y/RC walkthrough all
done, new report docs added to index).
- FRONTEND-ROADMAP.md: RC PERF-01, RC A11Y-01, and Release Candidate
walkthrough entries added; known-open-items list updated (2 new
flags from RC walkthrough, primeng removal blocker, large chunks,
backend-ready sprint explicitly deferred pending a real API contract).
- KNOWN-ISSUES.md: corrected item 6 (payment modal focus-trap
assumption was wrong, now actually fixed); added items 9-12 (brand
contrast failures, Contacts content gap, WYSIWYG editor mislabeled,
primeng removal blocker); added 2 Fixed entries for this cycle's
P0s (query-param routing, Categories CRUD).
- Graphify graph regenerated (graphify-out/, cache only, not tracked).
- Obsidian: skipped, no running Obsidian instance in this session.
- No architecture change this cycle (perf/a11y/bug fixes only) — no
new ADR.
- No application code touched.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-24 10:51:05 +04:00
|
|
|
|
Correction (2026-07-24, RC A11Y-01): the "already has focus-trap" assumption
|
|
|
|
|
|
below was wrong — it had none. RC A11Y-01 ported `app-dialog`'s confirmed-
|
|
|
|
|
|
correct focus-trap/Escape/return-focus pattern directly onto it
|
|
|
|
|
|
(`docs/ACCESSIBILITY_REPORT.md`), so the accessibility gap is closed. It's
|
|
|
|
|
|
still a separate custom component, not the shared `app-dialog` itself —
|
|
|
|
|
|
migrating it to the actual primitive remains a composition change,
|
|
|
|
|
|
deliberately left out of every polish pass so far.
|
docs: end-of-sprint refresh — known issues, roadmap progress
- KNOWN-ISSUES: log 4 items surfaced during RC-Premium-01 (payment modal
still custom, cart confirm() has no dialog pattern, stars/legacy hex
with no token match, category/search hand-rolled skeletons), not
previously tracked outside STORE_FRONT_UX_REVIEW.md.
- FRONTEND-ROADMAP: add Sprint 30 status (verify pass re-run green,
git push still pending explicit go-ahead), dedupe open-items list
against KNOWN-ISSUES.
- graphify graph regenerated (graphify-out/, cache only, not tracked).
- Obsidian notes: skipped, no running Obsidian instance in this session.
- No architecture change this sprint — no ADR links to update.
- No application code touched.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-23 23:38:06 +04:00
|
|
|
|
- Found: 2026-07-23, RC-Premium-01 (`docs/STORE_FRONT_UX_REVIEW.md`).
|
|
|
|
|
|
|
|
|
|
|
|
7. **Cart's `clearCart()` uses native `confirm()`, no styled confirm dialog.**
|
|
|
|
|
|
No existing storefront pattern for a confirm-remove dialog to follow yet —
|
|
|
|
|
|
introducing the first one is an architecture decision, not polish.
|
|
|
|
|
|
- Found: 2026-07-23, RC-Premium-01.
|
|
|
|
|
|
|
|
|
|
|
|
8. **`stars.component` rating glyph color and a few legacy hex literals in
|
|
|
|
|
|
`pages/category`/`pages/search` have no exact design-token match.**
|
|
|
|
|
|
Left as literals to avoid an unintended visual shift; needs a deliberate
|
|
|
|
|
|
token-extension decision before normalizing.
|
|
|
|
|
|
- Found: 2026-07-23, RC-Premium-01.
|
|
|
|
|
|
|
docs: sync documentation after perf/a11y/release-candidate work
- PROJECT.md: Current Status updated (perf/a11y/RC walkthrough all
done, new report docs added to index).
- FRONTEND-ROADMAP.md: RC PERF-01, RC A11Y-01, and Release Candidate
walkthrough entries added; known-open-items list updated (2 new
flags from RC walkthrough, primeng removal blocker, large chunks,
backend-ready sprint explicitly deferred pending a real API contract).
- KNOWN-ISSUES.md: corrected item 6 (payment modal focus-trap
assumption was wrong, now actually fixed); added items 9-12 (brand
contrast failures, Contacts content gap, WYSIWYG editor mislabeled,
primeng removal blocker); added 2 Fixed entries for this cycle's
P0s (query-param routing, Categories CRUD).
- Graphify graph regenerated (graphify-out/, cache only, not tracked).
- Obsidian: skipped, no running Obsidian instance in this session.
- No architecture change this cycle (perf/a11y/bug fixes only) — no
new ADR.
- No application code touched.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-24 10:51:05 +04:00
|
|
|
|
9. **Genuine brand-color contrast failures (WCAG AA).** `--border-color`
|
|
|
|
|
|
fails 3:1 UI-component contrast in every theme (1.24-1.42:1 measured);
|
|
|
|
|
|
`--success/--warning/--error/--info-color` fail 4.5:1 when used as plain
|
|
|
|
|
|
text-on-white in a handful of places. Real palette colors, not a token
|
|
|
|
|
|
bug — fixing means visibly changing the brand, needs theme-owner sign-off.
|
|
|
|
|
|
- Found: 2026-07-24, RC A11Y-01 (`docs/ACCESSIBILITY_REPORT.md`).
|
|
|
|
|
|
|
|
|
|
|
|
10. **Footer "Contacts" link has no static-page content in mock data.**
|
|
|
|
|
|
Unlike the "About" link (which was a route-name mismatch, fixed), no
|
|
|
|
|
|
content exists for Contacts at all — needs a content decision, not a
|
|
|
|
|
|
code fix.
|
|
|
|
|
|
- Found: 2026-07-24, Release Candidate walkthrough (`docs/RELEASE_REPORT.md`).
|
|
|
|
|
|
|
|
|
|
|
|
11. **Builder's static-page body editor is hidden and mislabeled.** The
|
|
|
|
|
|
actual WYSIWYG content editor isn't on the "Content" tab (title/image
|
|
|
|
|
|
only) — it's inside a collapsed `<details>` under "Advanced", labeled
|
|
|
|
|
|
"Source HTML (advanced)" though it's the only way to edit page content.
|
|
|
|
|
|
Works correctly once found; relocating/relabeling is a navigation
|
|
|
|
|
|
decision, not a bug fix.
|
|
|
|
|
|
- Found: 2026-07-24, Release Candidate walkthrough.
|
|
|
|
|
|
|
|
|
|
|
|
12. **`primeng`/`primeicons` still in `package.json` after their only
|
|
|
|
|
|
consumer was deleted.** `npm uninstall` fails (`ETARGET`) on a
|
|
|
|
|
|
pre-existing, unrelated broken `barry-cache` devDependency resolution —
|
|
|
|
|
|
fix that first, then drop the now-fully-unused dependency (likely closes
|
|
|
|
|
|
most of the remaining bundle-budget overage in one move).
|
|
|
|
|
|
- Found: 2026-07-24, RC PERF-01 (`docs/PERFORMANCE_REPORT.md`).
|
|
|
|
|
|
|
2026-07-15 20:25:12 +04:00
|
|
|
|
## Fixed
|
|
|
|
|
|
|
2026-07-16 23:32:31 +04:00
|
|
|
|
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.**
|
2026-07-16 02:16:29 +04:00
|
|
|
|
`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.
|
|
|
|
|
|
|
2026-07-16 23:32:31 +04:00
|
|
|
|
3. **Project Editor navigation: nav link labels only editable for the default locale.**
|
2026-07-16 02:16:29 +04:00
|
|
|
|
`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).
|
|
|
|
|
|
|
2026-07-16 23:32:31 +04:00
|
|
|
|
4. **Quick Actions: 3 untranslated raw i18n keys.**
|
2026-07-15 20:25:12 +04:00
|
|
|
|
`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.
|
|
|
|
|
|
|
docs(project-editor): document 2026-07-17 bug-hunt audit pass
- EDITOR.md: updated sections table (branding OG/gallery + image-field,
header layout/sticky, widgets JSON error feedback), the inline-validation
paragraph (now lists every wired fieldKey, not just the original 3
sections), the primitives table (app-image-field, app-code-editor), and a
new dated section detailing all 9 fixed bugs plus the 3 real gaps found
but deferred (theme mode dead at runtime, dynamic-renderer unwired,
header profile menu missing).
- KNOWN-ISSUES.md: added the 3 deferred gaps as new Open items, added a
Fixed entry summarizing the 9 bugs (points to EDITOR.md for full detail
rather than duplicating it).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-17 21:12:10 +04:00
|
|
|
|
5. **Project Editor: 9 real correctness bugs across footer, features,
|
|
|
|
|
|
widgets, languages, preview, static-pages, general, branding/SEO, and the
|
|
|
|
|
|
shared media picker.** Found via a section-by-section "does this control
|
|
|
|
|
|
actually do what it claims at runtime" audit, not a feature pass. Full
|
|
|
|
|
|
detail (repro steps, fix, live verification) in `docs/EDITOR.md`'s
|
|
|
|
|
|
"Bug-hunt audit pass (2026-07-17)" section — summary:
|
|
|
|
|
|
- Footer social-link/payment-icon id generation reproducibly collided
|
|
|
|
|
|
(array-length-derived / fixed suffix), corrupting `@for (track item.id)`
|
|
|
|
|
|
identity on the public storefront footer.
|
|
|
|
|
|
- Features' wishlist/compare toggle only drove one of the two flags that
|
|
|
|
|
|
actually gate visibility at runtime.
|
|
|
|
|
|
- Widgets' JSON-fallback textarea silently discarded invalid edits instead
|
|
|
|
|
|
of showing an error.
|
|
|
|
|
|
- Languages' add-locale silently no-opped on a duplicate code.
|
|
|
|
|
|
- Preview's import bypassed undo history and draft `localStorage`
|
|
|
|
|
|
persistence entirely.
|
|
|
|
|
|
- Static Pages' create/duplicate-page slug generation had the same
|
|
|
|
|
|
collision bug as the footer one.
|
|
|
|
|
|
- General's free-text language fields bypassed `LocaleSyncService`
|
|
|
|
|
|
(no translation-entry propagation) and had no guard against an
|
|
|
|
|
|
unsupported default locale.
|
|
|
|
|
|
- Branding's `socialImageUrl` field (added earlier the same session) was
|
|
|
|
|
|
never actually read by `SeoService` — dead on arrival until wired in.
|
|
|
|
|
|
- The shared `app-media-picker`'s backing facade is a root singleton;
|
|
|
|
|
|
search/folder/page filters leaked between independently-opened picker
|
|
|
|
|
|
dialogs on the same page.
|
|
|
|
|
|
- Found & fixed: 2026-07-17. Each bug was reproduced live via
|
|
|
|
|
|
`window.ng.getComponent()` before fixing and re-verified after.
|
|
|
|
|
|
- 3 further gaps were found but are real feature work, not wiring bugs —
|
|
|
|
|
|
moved to Open (items 3-5 above) rather than fixed inline: Theme Mode
|
|
|
|
|
|
has no runtime effect, the `dynamic-renderer/` pipeline is unwired,
|
|
|
|
|
|
and the header's Profile toggle has no corresponding menu.
|
|
|
|
|
|
|
2026-07-17 22:19:03 +04:00
|
|
|
|
6. **`admin/categories` facade: dead create-draft recovery + broken
|
|
|
|
|
|
drag-reorder.** Found via the same bug-hunt method as project-editor's
|
|
|
|
|
|
audit, applied to `admin/products` + `admin/categories`. Full detail
|
|
|
|
|
|
(repro steps, fix, live verification) in `docs/ADMIN.md`'s "Bug-hunt audit
|
|
|
|
|
|
pass (2026-07-17)" section - summary:
|
|
|
|
|
|
- `startCreate()` generated a fresh `category-${Date.now()}` id every
|
|
|
|
|
|
call and keyed the `localStorage` autosave draft off it, so create-mode
|
|
|
|
|
|
draft recovery could never find a match (even within the same tab,
|
|
|
|
|
|
seconds apart) and orphaned an entry every abandoned attempt.
|
|
|
|
|
|
- `reorder(id, targetOrder)` wrote the dropped-on row's `order` value
|
|
|
|
|
|
straight onto the dragged category, tying two siblings on the same
|
|
|
|
|
|
`order` instead of repositioning - and since every seeded category
|
|
|
|
|
|
starts at `order: 0`, every drag on fresh data was a silent no-op.
|
|
|
|
|
|
- Found & fixed: 2026-07-17. Each reproduced live via
|
|
|
|
|
|
`window.ng.getComponent()` before fixing, re-verified after (real
|
|
|
|
|
|
backend unreachable in this environment, so via
|
|
|
|
|
|
`facade.categories.set([...])` synthetic siblings feeding the same
|
|
|
|
|
|
facade methods/gateway calls the UI drives).
|
2026-07-17 22:25:58 +04:00
|
|
|
|
- A third bug from the same audit pass, fixed in a follow-up commit:
|
|
|
|
|
|
`admin-product-form`/`admin-category-form` hardcoded translation-tab
|
|
|
|
|
|
locales to `['en','ru','hy']` instead of the tenant's actual
|
|
|
|
|
|
`supportedLocales`. Fixed by giving `AdminProductsFacade`/
|
|
|
|
|
|
`AdminCategoriesFacade` a `supportedLocales` computed +
|
|
|
|
|
|
`ensureLocalesLoaded()` reading/lazily-loading
|
|
|
|
|
|
`ProjectEditorFacade.bootstrap()` (same pattern
|
|
|
|
|
|
`AdminDashboardFacade.ensureLoaded()` already uses), threaded down to
|
|
|
|
|
|
both form components via a new `locales` `@Input()`. Verified live:
|
|
|
|
|
|
rendered tab order changed from the hardcoded `['en','ru','hy']` to the
|
|
|
|
|
|
real tenant order `['ru','en','hy']` in both editors.
|
2026-07-17 22:19:03 +04:00
|
|
|
|
|
2026-07-23 23:53:39 +04:00
|
|
|
|
7. **`pages/category` and `pages/search` hand-rolled skeleton markup
|
|
|
|
|
|
replaced with shared `app-skeleton`.** Both pages had their own
|
|
|
|
|
|
`.skeleton-card`/`.skeleton-image`/`.skeleton-line` shimmer CSS with
|
|
|
|
|
|
hardcoded hex colors, duplicating what `app-skeleton` already provides
|
|
|
|
|
|
and what `catalog-container`/`product-details-container` already use.
|
|
|
|
|
|
- Fixed: 2026-07-23, RC STORE-01 (`docs/STORE_REVIEW.md`).
|
|
|
|
|
|
|
|
|
|
|
|
8. **Cart's dead `.email-form` markup and CSS removed.** Post-payment
|
|
|
|
|
|
email/phone-capture form was commented-out markup with a matching
|
|
|
|
|
|
~90-line dead CSS block still shipping in the bundle.
|
|
|
|
|
|
- Fixed: 2026-07-23, RC STORE-01.
|
|
|
|
|
|
|
docs: sync documentation after perf/a11y/release-candidate work
- PROJECT.md: Current Status updated (perf/a11y/RC walkthrough all
done, new report docs added to index).
- FRONTEND-ROADMAP.md: RC PERF-01, RC A11Y-01, and Release Candidate
walkthrough entries added; known-open-items list updated (2 new
flags from RC walkthrough, primeng removal blocker, large chunks,
backend-ready sprint explicitly deferred pending a real API contract).
- KNOWN-ISSUES.md: corrected item 6 (payment modal focus-trap
assumption was wrong, now actually fixed); added items 9-12 (brand
contrast failures, Contacts content gap, WYSIWYG editor mislabeled,
primeng removal blocker); added 2 Fixed entries for this cycle's
P0s (query-param routing, Categories CRUD).
- Graphify graph regenerated (graphify-out/, cache only, not tracked).
- Obsidian: skipped, no running Obsidian instance in this session.
- No architecture change this cycle (perf/a11y/bug fixes only) — no
new ADR.
- No application code touched.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-24 10:51:05 +04:00
|
|
|
|
9. **App-wide query-param routing broken (P0).** `language.guard.ts`'s
|
|
|
|
|
|
legacy-URL redirect built the target with `router.createUrlTree([...])`
|
|
|
|
|
|
using a single path-segment string with the query string baked in, so it
|
|
|
|
|
|
got percent-encoded into the path instead of parsed as query params
|
|
|
|
|
|
(`/edit/branding?devBypassAdmin=true` → `/ru/edit/branding%3FdevBypassAdmin%3Dtrue`,
|
|
|
|
|
|
a dead route). This guard runs on every top-level route app-wide, so any
|
|
|
|
|
|
bookmarked/shared deep link with query params was silently broken —
|
|
|
|
|
|
found during the Builder RC walkthrough but affects all 3 surfaces.
|
|
|
|
|
|
- Fixed: 2026-07-24, Release Candidate walkthrough (`docs/RELEASE_REPORT.md`),
|
|
|
|
|
|
`router.parseUrl()` instead of a hand-built path segment.
|
|
|
|
|
|
|
|
|
|
|
|
10. **Backoffice Categories CRUD completely broken end-to-end (P0).**
|
|
|
|
|
|
`admin-categories-gateway.token.ts` resolved via
|
|
|
|
|
|
`RuntimeProviderStrategyService.getBackofficeProviderMode()`, which —
|
|
|
|
|
|
unlike `getBootstrapProviderMode()` — has no `isLocalhost()` fallback,
|
|
|
|
|
|
so it always picked the real HTTP `AdminCategoriesApiGateway` instead of
|
|
|
|
|
|
the local mock in an environment with no real backend. Combined with
|
|
|
|
|
|
`saveDraft()` having no error handler: every create/publish click
|
|
|
|
|
|
silently failed, `dirty` never cleared, and the unsaved-changes guard
|
|
|
|
|
|
then blocked navigation with zero feedback.
|
|
|
|
|
|
- Fixed: 2026-07-24, Release Candidate walkthrough, wired to the
|
|
|
|
|
|
already-defined `getCategoryProviderMode()` + added the same
|
|
|
|
|
|
`isLocalhost()` fallback `getBootstrapProviderMode()` already had.
|
|
|
|
|
|
Live-verified: create/edit/reorder all persist correctly now.
|
|
|
|
|
|
|
2026-07-15 20:25:12 +04:00
|
|
|
|
## 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.
|