docs(project-editor): document 2026-07-17 bug-hunt audit pass
Some checks failed
Architecture Governance / architecture (push) Has been cancelled

- 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>
This commit is contained in:
sdarbinyan
2026-07-17 21:12:10 +04:00
parent c069cafe45
commit a8a5de5392
2 changed files with 92 additions and 6 deletions

View File

@@ -45,6 +45,37 @@ don't fix inline unless asked.
itself (empty-state copy for the skeleton/empty-state consistency fix),
it does not touch the ~178 pre-existing gap.
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.
## Fixed
1. **Full-project UX/UI + motion pass across storefront, admin dashboard,
@@ -132,6 +163,39 @@ don't fix inline unless asked.
`/:lang/backoffice/dashboard?devBypassAdmin=true`.
- Fixed: 2026-07-15, added the 3 keys to the interface + all 3 locales.
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.
## Notes (not bugs, just flag before shipping)
- `src/environments/environment.ts`: `useMockData` was temporarily flipped to