Files
marketplaces/docs/RELEASE_REPORT.md

124 lines
6.7 KiB
Markdown
Raw Normal View History

2026-07-26 00:20:57 +04:00
# Release Candidate RC-02 — Final Release Report
Date: 2026-07-26
Branch: `B2B`
## Completed
1. **Storefront localization.** Replaced remaining hardcoded English strings
(rating/discount aria-labels, hero-carousel dots, product-carousel prev/next
buttons, dialog close button, toast dismiss, QR-code alt text, bank-payment
iframe title, guest checkout fallback name) with `translate` pipe/service
calls, backed by new `common.*` i18n keys in en/ru/hy.
Commit: `1163bfd`.
2. **Empty-store wording.** Audited every empty-collection branch across
storefront, builder, and backoffice. Found and fixed one real defect: the
category/subcategory empty states used "Oops!"/"Упс!" apology framing for a
normal zero-results condition. Everywhere else in the codebase already
correctly separates a real `error()` branch from an empty-collection
branch with distinct, neutral wording (verified across catalog, product,
cart, wishlist/compare, admin list pages, dashboard, media, builder).
Commit: `1163bfd`.
3. **Merchant-friendly wording (Monitoring/Analytics/Reports/Diagnostics).**
Analytics, Reports (moderation/reports), and Diagnostics were already
clean — no raw HTTP/queue-worker strings found. Monitoring had three
developer-facing spots: background queue slugs, webhook event keys, and
the activity log's "api" category showing a raw
`GET /api/products responded 200 in 84ms` line as the primary message.
All three now show plain-language labels by default, with the raw string
for API/error/warning events moved behind a collapsed "Technical details"
`<details>`. Commit: `ca343c4`.
4. **Dialog consistency.** Replaced all 12 native `confirm()` calls and 4
native `alert()` calls across cart, media library, static-pages editor,
and 5 builder components. Confirms now use a new shared
`app-confirm-dialog` (composes the existing `app-dialog` + `app-button`
no new dependency), following the same local-signal pattern already used
in admin-categories. Cart's alerts route through the existing
`UserNotificationService` toast pipeline instead. Zero native
`confirm`/`alert`/`prompt` remain in production code (verified by grep).
Commit: `6c6fa00`.
5. **Images.** Found and fixed a real defect: `getMainImage()`'s no-photo
fallback pointed at `/assets/images/placeholder.svg`, but that file (and
the whole `assets/images/` directory) never existed — any item with zero
photos rendered a browser broken-image icon. Added the asset. Also added
an `(error)` handler on every dynamic `<img>` that renders a
user/admin-supplied URL (product card, cart line item, cart payment QR,
product gallery main + thumbnails), so a 404'd image URL swaps to the
placeholder instead of shipping broken. Commit: `3e54e88`.
6. **Legacy cleanup.** Investigated `pages/category`, `pages/search`,
`pages/item-detail`, `pages/info/**`, `pages/legal/**` (40+ files) and
`dynamic-renderer/`. First five were confirmed unrouted dead code (each
had a live replacement already serving its traffic) — deleted outright.
`dynamic-renderer/` was confirmed **active** (it's the live homepage
rendering pipeline via `HomeComponent``WebsiteRuntimeFacade`
`PageRendererService`/`PageResolverService`
`DynamicPageLayoutComponent`) — a prior doc note calling it "unwired" was
stale and has been corrected. `docs/TODO.md`, `docs/KNOWN-ISSUES.md`,
`docs/FRONTEND-ROADMAP.md`, `docs/PROJECT_INDEX.md` updated accordingly.
Commit: `a670ca9`.
7. **Final QA.** `npx tsc --noEmit` clean after every commit above.
`ng serve` production-mode build compiles with no errors. Manually
smoke-tested in-browser: home page loads with zero console errors; cart
page loads with mock data; the new clear-cart confirm dialog opens with
correctly translated title/message/buttons, Cancel closes it without
side effects, zero console errors throughout. Backoffice route requires
an authenticated admin session (existing `adminAuthGuard` behavior,
unrelated to this pass) so the Monitoring page's new wording was verified
by reading the compiled template/component, not by an authenticated
click-through.
## Known limitations
- The i18n string audit and empty-state audit were scoped to storefront/
customer-facing surfaces per the task list; backoffice/builder templates
were spot-checked but not exhaustively re-audited for hardcoded strings.
- `app-confirm-dialog` is a new small shared component (composes existing
`app-dialog`/`app-button`, no new library). It intentionally does not
cover every dialog in the codebase — only the sites that were previously
using native `confirm()`/`alert()`.
- Backoffice Monitoring's Technical-details fix only touches the mock local
gateway (`AdminMonitoringLocalGateway`); once a real API-backed gateway
exists, it will need to populate `technicalDetail` the same way to keep
the "Technical details" affordance working.
- No new automated tests were added for this pass (none existed for the
touched components beforehand either); verification was typecheck +
manual smoke test as described above.
## Deferred items
- Everything already tracked in `docs/TODO.md` under "Backend — skipped,
doing together" remains deferred (bootstrap real content, builder
publish/validate backend, backoffice CRUD, media pipeline) — explicitly
out of scope per this task's "NO BACKEND CHANGES" instruction.
- Non-blocking pre-existing items from prior RC passes noted in
`docs/KNOWN-ISSUES.md` (genuine brand-color contrast failures needing
theme-owner sign-off, 2 large lazy chunks needing a dedicated split task,
`primeng`/`primeicons` removal blocked on an unrelated `barry-cache`
dependency issue) are unchanged by this pass.
## Launch recommendation
**Ready to ship** from a customer-demo-polish standpoint: no native browser
dialogs, no broken-image paths on the audited surfaces, no raw developer
jargon in Monitoring's default view, no apology-toned empty states, and the
five dead-code page directories are gone rather than lingering as
demo-confusing zombies. The remaining known limitations above are scope
boundaries (backend, exhaustive re-audit, test coverage) rather than found
defects — recommend proceeding, with the backoffice-auth-gated smoke test
as the one item worth a human doing a real authenticated click-through on
before the actual demo.
## Commits (this pass)
- `1163bfd` fix(storefront): replace hardcoded strings with i18n, neutral empty-state wording
- `a670ca9` chore(cleanup): delete unrouted legacy pages, update docs
- `6c6fa00` fix(ui): replace native confirm()/alert() with shared dialogs and toasts
- `3e54e88` fix(storefront): add missing placeholder image asset and onerror fallback
- `ca343c4` fix(backoffice): merchant-friendly wording in Monitoring