docs(project-editor): document 2026-07-17 bug-hunt audit pass
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user