Commit Graph

122 Commits

Author SHA1 Message Date
sdarbinyan
aedc05110c docs: design spec + backend ask for email/phone OTP login (item 4)
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-15 17:51:15 +04:00
sdarbinyan
3056be53db docs: implementation plan for admin product views column (item 1)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-15 16:11:09 +04:00
sdarbinyan
7f3a22abb8 docs: design spec for admin product views column (item 1)
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-15 15:58:49 +04:00
sdarbinyan
55e4938a57 docs: spec update - reuse existing topbar bell instead of new sidebar badge
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-15 03:43:07 +04:00
sdarbinyan
cfee91355b docs: implementation plan for admin purchase notifications (item 7)
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-15 03:20:32 +04:00
sdarbinyan
0d0f4e5f9c docs: design spec for admin purchase notifications (item 7)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-15 02:08:36 +04:00
sdarbinyan
e6d64abd56 docs: replace 62 scattered/stale markdown files with two living references
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Removes all tracked repo documentation (root status docs, docs/,
docs/architecture/foundation/**, docs/archive/**, docs/context/BACKEND-AUDIT.md
+ adrs, src/assets/mock/README.md) and replaces it with:

- GAPS-AND-IMPROVEMENTS.md — role-based findings (user, PO, QA, backend,
  accessibility, engineering) plus automated code-review passes over the
  storefront and backoffice, each with file:line references. Findings only,
  no fixes applied.
- BACKEND-API-REFERENCE.md — single consolidated backend contract: auth
  (both mechanisms), bootstrap, pagination/sorting/filtering conventions,
  error model, every live/mock-only endpoint with JSON examples, and the
  admin-domain DI-token seam gaps.

Open items and unresolved decisions from the deleted docs (KNOWN-ISSUES,
PRODUCT_BACKLOG, SPRINT-PLAN-NEXT, Seller-Management audits, etc.) were
harvested into the two new files before deletion, not lost.

CLAUDE.md/AGENTS.md/GEMINI.md/.claude/ and docs/context/{INDEX,LOG,
MAINTENANCE,README}.md are untouched — confirmed gitignored, never part of
git history, outside this cleanup's scope.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 03:17:09 +04:00
sdarbinyan
7a2f2a452f refactor: migrate cart payment modals to shared app-dialog primitive
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Third attempt, done properly this time - first two were reverted
(one stopped cleanly on real conflicts, one botched sequencing and
deleted the old focus-trap before finishing the swap).

DialogComponent gains closeOnEscape/closeOnBackdropClick (default true,
backward-compatible with its 13 other call sites) and ariaLabel (for
dialogs with no visible title header). FOCUSABLE_SELECTOR now includes
iframe for the bank-payment panel's focus trap.

Cart wires closeOnBackdropClick=false on both dialogs (in-flight payment
shouldn't cancel on a stray click) and closeOnEscape tied to the bank
popup's open state, so Escape closes the nested bank iframe first and
falls back to the QR view - matches the original priority exactly.

Original geometry (500px QR modal/40px padding, 960x760 bank modal/
56-16-16 padding, both mobile breakpoints) preserved via :host ::ng-deep
overrides scoped per dialog instance - same pattern already used by
product-carousel-widget.component.ts.

cart.component.ts loses ~90 lines of hand-rolled ViewChild/HostListener/
focus-trap code - app-dialog owns all of it now.

Verified live in browser: dialog sizing/padding/aria-label correct at
mobile+desktop, backdrop-click confirmed inert, Escape-priority confirmed
(bank closes first, then QR), initial focus lands on close button.
83/83 tests pass, tsc/build clean.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 11:13:33 +04:00
sdarbinyan
6d075fc5b9 perf: drop @lucide/angular, hand-roll used icons - initial bundle 13.68MB -> 2.64MB
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
@lucide/angular shipped its entire ~1500-icon set in the initial bundle
despite the app only using 85 named-imported icons - confirmed upstream
tree-shaking failure (sideEffects:false, clean named imports, single
non-splittable fesm file). Replaced icon-registry.ts/icon.component.ts
with hand-rolled inline SVG rendering of just the 85 used icons,
transcribed from lucide's own node data for pixel-identical output.
Zero call-site changes - AppIconName and app-icon's public API unchanged.

Also: karma-coverage wired (npm run test:coverage), baseline captured
in docs/SPRINT-PLAN-NEXT.md (32% statements / 18.5% branches).

Cart-modal -> app-dialog migration was attempted and reverted - real
conflicts (backdrop-close, nested-modal escape priority, iframe sizing),
documented in docs/FUTURE_FEATURES.md for a properly scoped follow-up.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 10:55:00 +04:00
sdarbinyan
a95ca37a4b docs: quantify the initial-bundle icon-set bloat finding
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
11MB of the ~14MB initial bundle is the full @lucide/angular icon set
despite clean named imports for ~85 icons - confirmed by build inspection,
previously undocumented (existing note only covered the two lazy chunks).
Root cause is upstream tree-shaking, not app code. Real fixes (package
upgrade or dropping the dependency) need sign-off before touching.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 21:53:05 +04:00
sdarbinyan
ce63931bc2 feat: dead-config sweep, test suite foundation, widget settingsSchema validation
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Sprint G: audited every BootstrapConfig field for a real runtime consumer
(docs/DEAD-CONFIG-AUDIT.md). Wired 3 previously-dead editable fields:
footer.logoUrl, company.address.street/contacts.phone, catalog.suggestionsEnabled.
Remaining dead fields needing a business/design decision tracked in
PRODUCT_BACKLOG.md/KNOWN-ISSUES.md, not silently left.

Sprint H: 6 new spec files (test count 57 -> 83), covering ProjectEditorFacade
(undo/redo, draft persistence, publish gating), AdminAnalyticsFacade
(never-fabricate-a-number contract), and regression coverage for this
session's carousel/hero/profile-toggle fixes.

Sprint I: widget settingsSchema (declared in widget-manifest.json, never
validated) now enforced via a new lightweight schema check in
ProjectValidator, surfaced through the existing issuesByField pipeline.
Same check reused in diagnostics so editor and diagnostics can't disagree.

Verification: tsc clean, ng build clean, 83/83 tests pass, barry-cache
validate clean (2 pre-existing unrelated warnings only).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 20:47:13 +04:00
sdarbinyan
6f9401fa8f docs: sprint plan for dead-config sweep, test suite foundation, widget schema enforcement
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 19:32:48 +04:00
sdarbinyan
55b379bd6d fix: manifest-aware layout picker, real carousel items-per-page, hero arrows/swipe/2-panel
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Sprint E: homepage section editor now filters the layout-strategy picker
to each widget's widget-manifest.json supportedLayouts instead of always
showing all 5 strategies. columns field gated to widgets that read it
(hero, product-collection carousel).

Sprint F: closes client bug report (no items-per-page control, hero
carousel not manually/automatically scrollable, no 1-2 slide big-carousel
option). Product carousel item width now driven by layout.columns
(reused, was already editable but dead). Hero widget gains prev/next
arrows, touch swipe, and 1-2 panel mode via the same field.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 19:25:34 +04:00
sdarbinyan
3e3185cb6e docs: mark GLOBAL-SPRINT-PLAN housekeeping checklist complete
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 18:53:18 +04:00
sdarbinyan
48bcffa22c feat: close stub-page gaps - profile login/logout, admin Reports/Settings, Help/Docs links
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Sprint A: storefront header profile control (login/logout only, no menu),
wired to existing customer Telegram auth (AuthService).

Sprint B: backoffice/reports page, reuses AdminAnalyticsFacade (Sales,
Top Products, Marketplace Health cards + CSV export).

Sprint C: backoffice/settings page, admin UI density preference
(comfortable/compact), localStorage-persisted, applied to app-table
across all admin list pages.

Sprint D: admin bottom-nav Help -> mailto using existing supportEmail,
Documentation -> external link via new TenantConfig.documentationUrl.
AdminNavLink gains externalHref for non-routerLink nav entries.

Docs: docs/GLOBAL-SPRINT-PLAN.md tracks the full sprint breakdown.
docs/COMING-SOON-AUDIT.md removed, folded into docs/KNOWN-ISSUES.md.
docs/BACKEND.md updated with the new documentationUrl bootstrap field.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 17:48:50 +04:00
sdarbinyan
96c1527d1b docs+fix: Final design review of Seller Management - one real bug found and fixed
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Principal-architect-level review of the entire Seller Management body
of work (7 prior docs + all touched code), verified against fresh
tsc --noEmit and arch:check runs, not recalled from memory.

Real bug found and fixed (in scope per this mission's "unless
absolutely required" carve-out - a one-line correctness fix to
already-committed code, not new feature work):
AdminSellerManagementPageComponent.sellerManagementEnabled read the
bootstrap snapshot once via a plain signal() at construction, not
reactively via bootstrapRevision() the way UiRuntimeFacade/SeoService
both correctly do elsewhere in this codebase. Fixed to computed() keyed
on bootstrapRevision(). Currently invisible (flag is always false,
signal was never even read in the template) but would have gone stale
the moment bootstrap ever reloaded with the flag true. tsc clean after
the fix.

Findings documented in Seller-Management-Final-Design-Review.md (no
Critical/High severity found anywhere):
- Medium: SellerConfig (bootstrap wire shape) and Seller/SellerBranding
  (domain entity) are two unreconciled type hierarchies for the same
  concept - self-flagged already in BACKEND.md SS11.6, restated here as
  an independently-confirmed finding rather than letting it drift.
- Medium: no reusable capability-guard abstraction exists anywhere in
  the codebase, despite ADR-009/ADR-011 both prescribing "check the
  flag in one place" - ADR-009's own described FeatureFlagService was
  never built. Fine with one consumer, a real drift risk the moment a
  second one needs the same check.
- Medium: the flag's true branch has never been exercised, even
  manually - every verification claim in this whole body of work was
  tested at the flag's real value (false).
- Low/nice-to-have: sellerId typed as bare string instead of the UUID
  alias used everywhere else in the new sellers domain; MarketplaceRef
  vs TenantConfig overlap (deliberate, documented, but worth watching);
  documentation-to-code ratio (8 docs, zero backend bytes) carries a
  consolidation-burden risk, especially the Unified/Split-Orders
  question restated independently in 4 different docs.
- Explicitly checked for and did NOT find: circular dependencies,
  scattered tenant/seller conditionals, over-engineering relative to
  the typed-models-only mandate, or any auth/payment code touched.

Verdict: not an unqualified "ready for implementation" - two Medium
findings should be resolved by decision/small build before real
backend work starts, not because they block anything today but
because both compound in cost the longer they're left unresolved.
Everything actually built (typed foundation, disabled-by-default flag,
Phase 1 UI, plus the bug this review fixed) is solid and ready to
stay exactly as-is. No Critical or High-severity issue found anywhere.
2026-07-26 22:56:40 +04:00
sdarbinyan
9e9c11dff2 docs: Backend Migration Plan for Seller Management
Documentation only, no code. Synthesizes the 3 prior audits
(Seller-Management.md, the Backoffice readiness audit, the Storefront
audit) plus BACKEND.md SS11 into one migration plan covering all 17
requested modules: Authentication, Authorization, Bootstrap, Products,
Categories, Orders, Payments, Transactions, Reviews, Analytics, Media,
Search, CMS, Builder, Settings, Notifications, Emails, Audit Logs.

Per module: current behavior, future behavior, migration strategy,
backward compatibility, risk, effort, and an endpoint classification
(No change / Minor change / Major change / New endpoint) grounded in
facts already established in the prior audits - no new exploration,
no invented specifics.

Headline finding: Orders (the Unified-vs-Split-Orders decision) is the
single highest-risk, most consequential item in the whole plan -
payments/refunds/reporting all depend on it, and it can't be resolved
by an additive field the way every other domain's seller-scoping can.
Payments stays untouched (ADR-010, frozen) under the Unified path;
only Split Orders would ever touch the payment flow, and only then
with the same scrutiny the original frozen implementation got.

Cross-cutting sections included per mission: Database changes
(one nullable seller_id column touches existing tables, everything
else is new tables - no NOT NULL migration ever required), Permission
changes, Caching (bootstrap cache key must include resolved seller
identity), Indexes, Security (seller-to-seller isolation treated with
tenant-isolation rigor), Performance, API Versioning (ties to the
already-open BACKEND.md SS2.10 decision), Migration order (14 numbered
dependency steps), and 6 recommended implementation phases (A:
Foundation through F: Operational polish).

Every phase explicitly re-asserts the non-negotiable constraint:
modules.sellerManagement.enabled=false must show zero behavioral
difference before/after each phase ships.

Linked from docs/architecture/foundation/README.md alongside the
other Seller Management docs.
2026-07-26 22:49:07 +04:00
sdarbinyan
fa6e5cd68b docs(backend): add Seller Management section to BACKEND.md
docs/BACKEND_API.md no longer exists as a live file (merged into
BACKEND.md in an earlier consolidation pass, per that doc's own intro
- only docs/archive/BACKEND_API.md remains, historical only). This
mission's "update BACKEND_API.md" instruction is fulfilled by
extending the doc that actually supersedes it: new §11 "Seller
Management (Optional Capability)", added to the top-of-file table of
contents, no existing section renumbered or altered.

Every subsection explicitly tagged Implemented / Planned / Future,
matching the same legend used in docs/architecture/foundation/
Seller-Management.md (the frontend-side capability doc this section
is the backend counterpart to):

- 11.2 Future entities: Marketplace (Implemented, existing
  TenantConfig unchanged), Seller/SellerBranding (Planned - frontend
  types exist, no backend schema), SellerUser/SellerSettings/
  SellerInvitation (Future - no type, no concept, named for roadmap
  completeness only).
- 11.3 Future endpoints: Seller CRUD/Activation/Invitations/Branding/
  Analytics/Dashboard - all Future, none designed, each noted as
  following the existing mock-to-API-gateway pattern (SS8) once built.
- 11.4 Authentication: SellerPermissionRole (4 roles) explicitly
  flagged as a separate vocabulary from the existing, live AdminRole -
  not merged, no guard wired, zero auth change.
- 11.5 Domain resolution: market.com -> Marketplace is Implemented
  today (ADR-001, backend-Host-resolved); nike.market.com -> Marketplace
  -> Seller is Future, no backend resolves it - and per the storefront
  audit, needs no frontend routing change once it does.
- 11.6 Bootstrap additions: modules/modules.sellerManagement documented
  as Implemented-as-contract (typed, always false/absent today);
  sellerScope/sellerBranding as Planned with an explicitly flagged open
  question (SellerConfig vs SellerBranding nesting not reconciled);
  permissions noted as existing/unrelated today.
- 11.7 Checkout modes: Unified Order vs Split Orders - Future, not
  designed, flagged as the single most consequential undecided item
  for backend design given payments/refunds/reporting all depend on it.
- 11.8 Product ownership: sellerId? on Item/AdminProduct/AdminOrder -
  Implemented as schema only (optional, absent = marketplace-owned,
  verified backward-compatible via tsc staying clean). Existing
  products remain valid with no migration required - NULL/absent
  ownership documented as a permanent state, not transitional.

No backend implemented. No frontend code touched. Documentation only.
2026-07-26 22:41:57 +04:00
sdarbinyan
f4b92c7909 docs: Storefront audit for market.com/seller.market.com compatibility
Audit only, no code changed - facts gathered by reading current
source (routes, containers, header/footer, SeoService), not assumed.
Covers Homepage, Categories, Products, Search, Favorites, Cart,
Checkout, Reviews, SEO, Breadcrumbs, Header, Footer.

Core finding: tenant resolution is already entirely backend-side by
request Host (ADR-001) - the frontend just consumes whatever bootstrap
comes back for whatever hostname it's running on. A seller subdomain
is architecturally closer to already working than any part of the
Backoffice audit found; the real gaps are all about whether the
*data* rendered carries a seller-aware value, not about routing/
hosting.

Key findings:
- Canonical URLs already correct today - SeoService.siteUrl derives
  from location.origin dynamically, not hardcoded. Nothing to change.
- Header/Footer/SEO branding all read through one shared facade
  (UiRuntimeFacade.reloadFromBootstrap()) - a single future injection
  point that would cascade to all three for free, rather than three
  separate fixes.
- SeoService.setItemMeta() (per-product OG/canonical tags) is defined
  but never called anywhere in the codebase today - a pre-existing
  dead hook, unrelated to seller-scoping but blocking any future
  per-product/per-seller SEO work until wired.
- No dedicated breadcrumb component/service exists anywhere in the
  storefront - the only breadcrumb logic in the app is one local
  signal in catalog-container.component.ts.
- Checkout is not a separate route - it's an inline popup flow in
  cart.component.ts, with no multi-vendor/multi-seller cart concept
  at all. This is where Checkout Modes and Unified/Split Orders (both
  marked Future in Seller-Management.md) would actually need to land.
- Structured data (JSON-LD) and sitemap generation don't exist for
  anyone today, marketplace or seller - net-new work either way, not
  seller-specific gaps.
- One pre-existing, unrelated issue noted in passing: og:locale is
  hardcoded 'ru_RU' in SeoService - flagged, not fixed (out of scope).

Linked from docs/architecture/foundation/README.md alongside the
other Seller Management docs.
2026-07-26 22:32:41 +04:00
sdarbinyan
f2499df6a9 docs: Backoffice readiness audit for future Seller Management
Audit only, no code changed - every fact gathered by reading current
facades/gateways/components on this branch, not assumed. Covers all
13 admin modules (Dashboard, Products, Categories, Orders, Customers,
Users, Analytics, Reviews/Moderation, Media, CMS, Builder, Settings,
Monitoring, Transactions).

Per module: answers the 3 readiness questions (does Marketplace Owner
see everything / would Seller see only their own / would Seller Staff
be limited), documents where a future scope would be injected (an
existing method/interface parameter to extend - no "if seller" checks
introduced anywhere), lists components that currently assume global
ownership, and classifies Ready / Needs scope / Needs permissions /
Needs API change.

Key findings:
- Only 3 of 13 gateways (Categories, Dashboard-metrics, Media) are
  DI-token-swappable today; everything else needs that seam added
  first, independent of seller scoping.
- Orders is the load-bearing blocker: Customers, Transactions, and
  half of Analytics all derive from its same unscoped full-fetch order
  list, and AdminOrderItem has no per-item seller attribution at all -
  the concrete gap behind Seller-Management.md's open Unified-vs-Split-
  Orders question.
- Users already carries an AdminUserScope/AdminRole concept (label-
  only today) - the natural future home for the Marketplace Owner/
  Seller/Seller Staff/Platform Admin role vocabulary.
- CMS/Static Pages and Builder/Project Editor are structurally not
  about data scoping at all (marketplace-wide content, single global
  config document respectively) - seller-level work there is new
  product surface, not an extension.
- No admin module anywhere does role-based hiding of buttons or data
  today - confirmed, not assumed.

Linked from docs/architecture/foundation/README.md alongside the
other Seller Management docs.
2026-07-26 22:22:22 +04:00
sdarbinyan
3dafd872e4 docs: Seller Management capability documentation - Implemented/Planned/Future
Master entry-point doc (Seller-Management.md) consolidating everything
built across the prior 4 commits (ADR-011, domain models, Phase 1 UI,
UX review) plus the full roadmap, with every section explicitly
tagged Implemented / Planned / Future so nothing reads as built that
isn't.

Covers: Overview, Architecture & Hierarchy, Marketplace, Seller,
Roles & Permissions, Feature Flags, Bootstrap, Future API, Seller
Storefronts, Seller Branding, Seller Ownership, Checkout Modes,
Unified/Split Orders, Migration & Compatibility (why existing
marketplaces stay unchanged, with the concrete verification evidence
for each claim), Developer Notes, Builder Notes, Backend Notes.

Explicitly marked Future (not designed, no shape decided) rather than
documented as if real: the API surface, seller storefronts, checkout
modes, and the unified-vs-split-order decision - none of these have
any code or ADR behind them yet, unlike the typed models/feature flag/
Phase 1 UI which are genuinely Implemented.

Added a rollout-stage diagram (types+flag -> Phase 1 UI -> backend
decisions -> CRUD -> branding/storefronts -> checkout modes) showing
work stops after "Phase 1 UI" today. Linked as the entry point from
docs/architecture/foundation/README.md and docs/PROJECT_INDEX.md,
ahead of ADR-011/diagrams/domain-models/UX-review which stay as
detail references.

No code changed.
2026-07-26 22:13:15 +04:00
sdarbinyan
96be20c75d fix(admin): Seller Management UX review - a11y label fix, icon list, review doc
Reviewed the Phase 1 UI against every other Backoffice page. Found and
fixed 2 real issues; everything else verified already consistent
(built entirely from shared components, so hover/focus/dialog-a11y/
dark-readiness/contrast come from those components, not reinvented).

Fixed:
- Message textarea had no id/aria-describedby wiring (app-input
  self-wires this via injected FormFieldContext; the raw textarea -
  no dedicated textarea component exists yet - never got it, so the
  visible label's `for` pointed nowhere). Added explicit aria-label
  bound to the same translation key as the visible label.
- Learn More dialog's feature list would render native browser
  bullets (no global list-style reset exists outside details>summary
  in styles.scss). Replaced with checkCircle icon + text rows,
  consistent with how the rest of the app pairs icons with list/status
  meaning.

Added docs/architecture/foundation/Seller-Management-UX-Review.md
documenting both fixes plus everything checked and confirmed already
consistent (empty-state usage, icon reuse, translations completeness
across en/ru/hy, responsive at 1280px/375px, dialog a11y verified via
accessibility tree not assumed).

tsc --noEmit clean, arch:check (boundaries + cycles) clean. Live-
verified: Learn More dialog shows all 6 items each with an icon
(confirmed via DOM query), textarea aria-label confirmed
"Сообщение", no console errors.
2026-07-26 22:07:14 +04:00
sdarbinyan
86091a4742 feat(sellers): typed domain models for future Seller Management - no logic, no API, no auth changes
Typed models only, per mission. Nothing outside the new files reads
or writes any of this yet.

New core/sellers/models/ (mirrors core/products/models,
core/auth/models convention):
- MarketplaceRef - minimal {id,slug,name} reference from a seller
  back to its marketplace, distinct from bootstrap's TenantConfig.
- SellerStatus - 'pending'|'active'|'suspended'|'disabled', no
  transition logic.
- SellerScope - {sellerId, marketplaceId}, domain-level counterpart
  to BootstrapConfig.seller (SellerConfig from the ADR-011 pass).
- SellerBranding (+SellerContact/SellerAddress/SellerThemeOverrides)
  - logo/banner/description/contacts/address/theme overrides, every
    field optional. Marketplace branding/theme remain default;
    nothing consumes this yet.
- SellerPermissionRole/SellerPermissions - marketplaceOwner/seller/
  sellerStaff/platformAdmin. Separate vocabulary from the existing
  AdminRole (core/auth/models/permission.model.ts) - not merged, not
  wired into any guard, zero auth behavior change.
- Seller - the eventual entity, composed from the above.

Changed (optional-only, verified backward compatible):
- Item (models/item.model.ts) gained sellerId?: string
- AdminProduct (features/admin/products/models/) gained
  sellerId?: string
- AdminOrder (features/admin/orders/models/) gained sellerId?: string

Absent means marketplace-owned in every case, exactly like every
existing product/order today. No consumer of any of these three
models needed updating. AdminOrderItem (per-line-item ownership) and
the existing PermissionsConfig/AdminRole system were deliberately not
touched - out of scope for this pass.

Added docs/architecture/foundation/Seller-Management-Domain-Models.md
documenting every new type, every changed field, and the explicit
non-goals list. Linked from the foundation README alongside ADR-011
and the diagrams doc.

tsc --noEmit clean, arch:check (boundaries + cycles) clean.
2026-07-26 21:55:11 +04:00
sdarbinyan
22282b1d44 docs: register ADR-011 (Seller Management) in ARCHITECTURE.md and PROJECT_INDEX.md
Pointer-only updates, no rewrite: added ADR-011 to both docs' existing
ADR lists/counts, plus a one-line Seller Management entry in
PROJECT_INDEX.md's capability summary noting it's typed-foundation-
only, disabled by default, not implemented.
2026-07-26 20:17:02 +04:00
sdarbinyan
6029acc2d4 docs(architecture): ADR-011 - optional Seller Management module
Documents the decision behind the typed contracts added in the
previous commit: Seller Management is an optional platform capability
module (Platform -> Marketplace -> Seller, 0..N per marketplace), not
a second tenancy tier. Backend resolves seller scope the same way it
already resolves tenant (ADR-001); frontend never resolves it itself.
Gated by one typed flag (modules.sellerManagement.enabled), same
capability-guard discipline as ADR-009, defaulting to disabled/absent
so existing marketplaces are byte-identical.

Explicitly scopes out UI, backend, and business logic as future work
requiring its own ADR/implementation pass once the module is actually
built out.

Added companion diagrams (Seller-Management-Diagrams.md): hierarchy,
bootstrap module-gate flow, and the type-contract class diagram.
Registered ADR-011 in the foundation README's ADR index.
2026-07-26 20:15:40 +04:00
sdarbinyan
eba9b7f4f0 docs: finalize BACKEND.md as a self-contained implementation prompt
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Goal: this document alone, pasted into a fresh Claude session, should
be enough for a backend dev to implement against without getting
stuck or inventing conventions the frontend doesn't actually need.

Fixed a real bug: ~65 cross-references throughout the document pointed
to docs/AUTHENTICATION.md, docs/ERROR_CONTRACT.md, docs/MAINTENANCE_MODE.md
- three sibling docs that were deleted and fully merged into this
document's own §4/§6/§10 during the earlier doc-consolidation pass, but
the in-text references were never updated. A fresh agent following
those links would hit dead ends repeatedly. Bulk-replaced with in-
document section references; hand-fixed ~4 sentences that framed §6/
§10 as "sibling task, in progress" (stale - both are complete, this
document's §6/§10 already are the settled contract, nothing to wait on).

Added "Recommended default" to every item across the document's 5
consolidated "Requires backend decision" registers (§2.12 framework,
§3.21 CRUD cross-cutting - 18 items, §4 §12 auth open items - 9 items,
§6 error-model summary - 9 items, §10 maintenance-mode list - 5 items).
Each default is derived from what the frontend already implies or
standard REST/security convention - no invented APIs or business
rules. ~6 items are explicitly flagged as real business/security
decisions instead (order state-machine rules, Ed25519 cutover
strategy, refresh-token reuse-detection posture) since those carry
consequences no amount of frontend-code-reading can resolve.

Added a "How to use this document" preamble up front: work in §9's
dependency order not document order, apply recommended defaults and
keep moving, only stop for the explicitly-flagged business/security
items, don't invent beyond what's written or directly implied.

Frontend side: confirmed nothing else is left. docs/TODO.md already
has zero blockers; docs/KNOWN-ISSUES.md's one open item (unreachable
Ed25519 error-code UI) is correctly left open and documented rather
than faked closed - fixing it needs a real backend emitting real
distinguishable error codes, which doesn't exist yet and can't be
fabricated without inventing an API contract.

No frontend code touched. No architecture changed. No APIs invented.
2026-07-26 16:10:33 +04:00
sdarbinyan
a32c3f241d docs: fill 2 gaps in BACKEND.md against final handoff checklist
Reviewed BACKEND.md top to bottom (4775 lines, 10 sections) against
the full backend-handoff checklist (auth, bootstrap, every endpoint,
media, all domains, pagination/filter/sort/search, error contract,
maintenance mode, status codes, versioning, rate limits, CORS,
security, websocket/events, mock-to-api migration).

Confirmed already covered, no action: Authentication (§4, all
sub-items), Bootstrap (§1, full), every domain's CRUD contract (§3.1-
3.20, includes Moderation under 3.17.b), Media (§7), SEO (bootstrap
SeoConfig + per-page seo + sitemap tracked as remaining work), Error
Model (§6), Maintenance Mode (§10), Migration guide (§8).

Added (genuine gaps, not covered anywhere in the doc):
- §2.10 API path versioning - no endpoint has a version segment/header
  anywhere; only BootstrapConfig.schemaVersion exists and that only
  versions the bootstrap payload shape, not the API surface. Flagged
  as a backend/infra decision with zero frontend impact either way.
- §2.11 Real-time/WebSocket - confirmed no WebSocket/SSE exists
  anywhere in the frontend; consolidated the 5 places that look "live"
  (QR/Telegram login, payment status, session validity, maintenance
  notice, admin monitoring) into one table, all client-side polling.
  Flagged push-vs-poll as a backend decision, most relevant to payment
  latency and the session-revocation propagation delay.
- Renumbered the section's "Consolidated requires-backend-decision"
  list 2.9 -> 2.12 (moved after the two new subsections, no other
  content changed) and added both new items to it. No other §2.x
  cross-references existed elsewhere in the doc to update.

No duplication found requiring merge; docs/archive/BACKEND_API.md
cross-references are intentional (superseded-but-kept historical
detail, per the doc's own stated design), not obsolete/duplicate
content.
2026-07-26 15:57:21 +04:00
sdarbinyan
261ce6d55b docs: final documentation consolidation - one canonical doc set
Audited every *.md in docs/ and root. Merged five overlapping backend
docs (BACKEND_INTEGRATION.md + AUTHENTICATION.md + ERROR_CONTRACT.md +
MAINTENANCE_MODE.md + the already-archived BACKEND_API.md/
BACKEND_API_REMAINING_WORK.md) into one canonical docs/BACKEND.md
(4775 lines, 10 numbered sections) - deleted the four standalone
files outright now that their content is fully inlined.

Archived (not deleted - real historical value): ADMIN.md (Sprint
19-28 build log, sprint-report-shaped, not a living reference) and
FRONTEND-ROADMAP.md (despite its name, a shipped-history changelog
with detail no other doc has - not a forward roadmap, so keeping it
in root alongside NEXT_PHASE.md was exactly the "10 roadmaps"
confusion being cleaned up).

Deleted outright (zero value): SPRINTS.md - a leftover copy-pasted
sprint-kickoff prompt saved as a file, not documentation.

Rewrote docs/PROJECT_STATUS.md with completion-percentage estimates
per area (frontend/backend/UI/admin/storefront) and an explicit
first-customer-readiness call. Rewrote docs/NEXT_PHASE.md to the
strict 5-phase structure (backend integration -> production testing
-> performance -> monitoring -> v2 ideas), pointing to PRODUCT_BACKLOG
.md/FUTURE_FEATURES.md for phase 5 detail instead of duplicating it.

Rewrote root README.md - was stale (referenced deleted pages/info,
pages/legal folders from a prior RC pass), now covers architecture,
frontend/backend status, how to run, mock<->API switch mechanism
(useMockData in environment.ts), current folder structure, and a
documentation map.

Updated docs/PROJECT_INDEX.md (the stated entry point) to link only
the surviving doc set - every remaining document is reachable from it.

Fixed every broken/stale cross-reference to the deleted/renamed
backend docs across ARCHITECTURE.md, EDITOR.md, FRONTEND.md,
PROJECT-STRUCTURE.md, StaticPages.md, KNOWN-ISSUES.md (10 individual
link fixes, verified by repo-wide grep before and after). Left
CHANGELOG.md's two historical entries untouched - changelogs are
append-only history, not live navigation, editing past entries would
misrepresent what was true at the time.

Not touched (explicitly out of scope): docs/architecture/foundation/**
(enforced ADRs/governance, permanent not sprint-shaped),
docs/context/** (Barry Cache infrastructure, "do not edit by hand"
per CLAUDE.md), .claude/worktrees/** (separate git worktrees
containing an unrelated project's docs, not this repo's documentation).

docs/ root: 22 files -> 16. Plus 5 in docs/archive/ (was 3).
2026-07-26 14:56:25 +04:00
sdarbinyan
d03ef2db50 docs: final project closeout - classify TODO, backend spec, status
Classified every TODO.md item into one of DONE/BACKEND/PRODUCT
DECISION/FUTURE VERSION/BUG, verified against source, not against
prior docs:

- BACKEND items (bootstrap content, builder draft/publish, 6 admin
  CRUD domains, media pipeline) confirmed already covered by
  BACKEND_INTEGRATION.md; appended a mapping appendix rather than
  duplicating raw bullets. Fixed 22 stale internal BACKEND_API.md
  cross-references left over from before that file was archived.
- PRODUCT DECISION items (dark mode, brand-color WCAG contrast,
  stars.component token gap, footer Contacts content, advanced
  analytics, payment providers) moved to new docs/PRODUCT_BACKLOG.md.
- FUTURE VERSION items (Angular 22, bundle splitting, cart-modal
  composition cleanup, hero-spacing investigation) moved to new
  docs/FUTURE_FEATURES.md.
- BUG: rewrote docs/KNOWN-ISSUES.md down to the one real, verified,
  currently-reproducible frontend bug (Ed25519 admin-auth error codes
  session-expired/invalid-signature are unreachable -
  toAuthErrorShape() never reads a body error code, only maps HTTP
  status, and no status ever produces those two codes - confirmed by
  reading auth.service.ts + auth-error.model.ts). Condensed the
  "Fixed" history instead of carrying full verbose repro text forward.
- DONE items removed outright (dead-code deletion, dashboard false
  positive, RC-02 fixes, stale "dynamic-renderer unwired"/"178 missing
  keys" claims already disproven by source).

docs/TODO.md rewritten to the exact "no blockers" template - nothing
left qualifies as a release blocker.

New docs/PROJECT_STATUS.md: honest per-area status (frontend/backend/
docs/auth/builder/storefront/admin), known limitations, and explicit
production/backend/demo readiness calls - including correcting an
initial draft's unpushed-commit count (53, not 10, per git log
origin/B2B..HEAD).

New docs/NEXT_PHASE.md: work that can only start once a real backend
exists (gateway swap-in, mock removal, dormant-auth activation, role
enforcement, integration/E2E tests, perf profiling, monitoring,
maintenance-mode UI).

docs/PROJECT_INDEX.md (the stated entry point) updated to link the new
doc set and stop pointing at the now-archived BACKEND_API.md/AUTH.md.
docs/FRONTEND-ROADMAP.md's "Known open items" replaced with pointers
to the new category-split docs instead of a duplicated mixed list.

Not swept: a handful of low-traffic docs (architecture ADRs,
FRONTEND.md, EDITOR.md, ARCHITECTURE.md, PROJECT-STRUCTURE.md,
StaticPages.md, ADMIN.md) still reference the old BACKEND_API.md/
AUTH.md filenames - noted as a known gap in PROJECT_STATUS.md rather
than touched blindly, since they're historical-context docs, not the
navigation entry point.
2026-07-26 12:35:26 +04:00
sdarbinyan
99f7bace2d docs: assemble BACKEND_INTEGRATION.md, single canonical backend spec
4349 lines, 9 numbered sections per the Backend Finalization Sprint
spec: Bootstrap, Endpoint Framework, CRUD Contracts (~102 endpoints
across 20 domains), Authentication (spliced from AUTHENTICATION.md),
Security, Error Model (spliced from ERROR_CONTRACT.md), Uploads, Real
Backend Implementation Guide, Backend Checklist (34 items).

Everything traced to docs/context/BACKEND-AUDIT.md and actual current
source - proposed (unverified) paths explicitly marked as such,
everything the frontend has no opinion on marked "Requires backend
decision" rather than invented.

Archived the three docs this supersedes (BACKEND_API.md, AUTH.md,
BACKEND_API_REMAINING_WORK.md) to docs/archive/ with pointers back to
this file. AUTHENTICATION.md, ERROR_CONTRACT.md, MAINTENANCE_MODE.md
kept in place as standalone companion references (their content is
also inlined/cross-referenced here). ADMIN.md left untouched - it's a
frontend admin-UI sprint doc, not a backend spec, no overlap.

Verified via repo-wide search: no other backend/API spec docs remain
outside archive/ and this canonical file.
2026-07-26 12:17:51 +04:00
sdarbinyan
05c85b115d docs: prune TODO.md to verified-open items only
Re-verified every entry against source code, not against prior docs.
Removed/marked-resolved: "Featured Products" hardcoded string (gone),
dashboard Проблема status false-positive (unhealthy only fires on real
fetch error, verified in admin-dashboard.facade.ts), Monitoring raw
dev text (fixed RC-02), cart/builder native dialogs (fixed RC-02),
legacy dead pages (deleted RC-02), dynamic-renderer "unwired" claim
(false - it's live), ~178 missing adminXxx i18n keys (re-counted,
near parity now), missing image placeholder/footer payment icons
(fixed today).

Remaining items are genuinely unverified-as-done or explicitly
deferred (backend work, WCAG contrast sign-off, bundle splitting,
Angular 22 upgrade, unpushed commits).
2026-07-26 12:06:34 +04:00
sdarbinyan
3f5ab30a74 docs: create ERROR_CONTRACT.md and MAINTENANCE_MODE.md
Unified API error envelope + full HTTP status catalogue (401/403/404/
409/422/429/500/503, maintenance, validation, tenant-disabled,
rate-limit, expired-token, invalid-signature) with JSON examples and
current frontend reaction behavior, including two flagged pre-existing
frontend bugs (expired-token/invalid-signature body-code handling is
currently dead code - toAuthErrorShape() ignores fallbackCode for real
HTTP errors).

Maintenance-mode contract (global/per-tenant/per-module/read-only/
scheduled/feature-disable) with proposed 503 response shapes and an
explicit split between "requires backend decision" and "no frontend UI
exists yet, requires a future frontend task."

These two agents wrote their files before hitting a session usage
limit that killed the process before final report-back; content
verified complete on disk before committing.
2026-07-26 12:01:27 +04:00
sdarbinyan
53343fa711 docs: create AUTHENTICATION.md
Full auth contract: Telegram/QR session login (live), Ed25519
challenge/response admin auth (wired client-side, dormant -
authInterceptor not registered, ed25519AuthGuard unused by any route),
JWT structure, refresh, expiration, rotation, logout, session
invalidation, role hierarchy, tenant isolation, permission model.
4 Mermaid sequence diagrams.

Flags 9 Requires-backend-decision items and the pre-existing
duplicate AdminRole definition (core/auth vs admin/users models).
2026-07-26 08:53:09 +04:00
sdarbinyan
fd7ffc8668 docs: full frontend backend-surface audit (BACKEND-AUDIT.md)
Exhaustive inventory of every HTTP call, gateway (interface + mock +
real impl), facade, and model/DTO the frontend defines or expects,
grouped by domain. Primary input for the remaining Backend
Finalization Sprint docs.

Key findings:
- Only AdminCategoriesGateway and AdminDashboardMetricsGateway are
  DI-token-bound; every other admin domain (orders, products, users,
  transactions, monitoring, moderation) injects its *LocalGateway
  class directly - a real backend swap needs a token added first, not
  just a rebind.
- Only one real admin API impl exists (AdminCategoriesApiGateway);
  everything else admin is in-memory/localStorage mock.
- Content-management/project-editor have no save/publish HTTP call at
  all - builder writes are in-memory + localStorage draft only.
- No literal /admin|/builder|/backoffice CRUD paths exist in source;
  concrete admin paths are proposals, not verified literals.
2026-07-26 01:05:26 +04:00
sdarbinyan
fc35830846 docs: RC-02 final release report 2026-07-26 00:20:57 +04:00
sdarbinyan
a670ca994f chore(cleanup): delete unrouted legacy pages, update docs
pages/category, pages/search, pages/item-detail, pages/info/**,
pages/legal/** (40+ files) were entirely unrouted dead code:
- category/:id, category/:id/items, search all redirect/route to
  CatalogContainerComponent
- product/:id routes to ProductDetailsContainerComponent, not item-detail
- cmsContentRoutes (meant to route info/legal) is a literal empty array;
  static/legal content is served by the CMS-driven :staticPath ->
  StaticPageComponent route instead

dynamic-renderer/ is unrelated and stays - confirmed active, it's the
live homepage rendering pipeline (HomeComponent -> WebsiteRuntimeFacade
-> PageRendererService/PageResolverService -> DynamicPageLayoutComponent).

Updated docs/TODO.md, docs/KNOWN-ISSUES.md, docs/FRONTEND-ROADMAP.md,
docs/PROJECT_INDEX.md to reflect the resolution.
2026-07-25 23:56:13 +04:00
sdarbinyan
0982397d6b docs: sync TODO.md with RC-01 findings
Builder static-page editor marked done (Phase 6). Added 4 new items
found during RC-01 Phase 12 final walkthrough, not fixed this pass:
hardcoded 'Featured Products' heading, dashboard false-Problem status
on empty stores, Monitoring's raw developer text, category image 404s.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-25 23:35:52 +04:00
sdarbinyan
5b3f969dfd docs: mark Phase 1 mechanical fixes done in TODO.md
canDeactivate guard, primeng/primeicons+barry-cache cleanup checked
off. HeaderConfig.showProfile corrected - was already fixed
previously, TODO.md was stale on that one.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-25 20:05:41 +04:00
sdarbinyan
46c7358dde docs: add TODO.md checklist, delete archived reports
- docs/TODO.md: checklist of every open item from KNOWN-ISSUES.md/
  FRONTEND-ROADMAP.md/BACKEND_API_REMAINING_WORK.md/ANGULAR22_PLAN.md,
  re-verified against current repo state (git ahead count, package.json,
  app.routes.ts) rather than copied blind. Backend items kept but
  marked skipped per user request (doing together separately).
- Deleted docs/archive/ (19 files) now that every open finding was
  confirmed already merged into KNOWN-ISSUES.md/FRONTEND-ROADMAP.md.
  Full original text recoverable via git history
  (git log --diff-filter=D -- docs/archive).
- Fixed the resulting dangling docs/archive/* references in
  PROJECT_INDEX.md/KNOWN-ISSUES.md/FRONTEND-ROADMAP.md.

Verification: tsc --noEmit clean, npm run build green, 0 broken
markdown links across 49 files (checked programmatically). No
application code touched.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-25 19:24:29 +04:00
sdarbinyan
5374401257 docs: consolidate documentation and archive temporary reports
Step 1-2 (audit + plan): classified 35 project markdown files into
Core/Architecture/ADR/Temporary-audit/Sprint-report/Generated-review/
Duplicate/Obsolete/Historical. Agent-tooling files (.agents/skills/**,
.superpowers/**, docs/context/**, CLAUDE.md/GEMINI.md/AGENTS.md/
.github/copilot-instructions.md) explicitly out of scope — intentional
per-tool duplication, not documentation debt.

Step 3 (merge, no information lost):
- docs/PROJECT.md -> docs/PROJECT_INDEX.md, rewritten as the single
  entry point: system overview, living-doc index, archive pointer,
  current status, and a critical-finding callout up top.
- docs/backend/BACKEND-INTEGRATION.md -> docs/BACKEND_API.md,
  docs/backend/REMAINING-BACKEND-WORK.md ->
  docs/BACKEND_API_REMAINING_WORK.md (also folded in a legitimate
  uncommitted status update that had been sitting unstaged all
  session: categories marked DONE, order-creation endpoint noted done).
- RELEASE-NOTES.md merged into CHANGELOG.md (was a near-duplicate of
  the same release content in friendlier prose), then deleted.
- KNOWN-ISSUES.md: added item 13 (see below) and item 14 (missing
  canDeactivate on admin/products edit, from the archived PROJECT-STATE
  audit, re-verified still true); added a correction note to Fixed
  item 7.
- All cross-references to renamed/moved files fixed across every
  kept doc (grep+sed pass, then verified with a link-existence check
  across all 58 in-scope markdown files -> 0 broken links).

Step 4 (archive, nothing deleted without merging first): created
docs/archive/, moved 19 files there (3 root sprint reports, 1 platform
report, SPRINT-PLAN.md, and 14 one-off audit/review/report docs).
Added correction headers to the 3 archived docs whose conclusions were
affected by the finding below, rather than silently leaving them
misleading.

Step 5: docs/PROJECT_INDEX.md rewritten per the mission brief -
someone opening the repo should understand the whole system from it.

IMPORTANT FINDING (surfaced during this audit, not the mission's
primary goal but too significant to bury): pages/category/*,
pages/search/*, pages/item-detail/*, pages/info/**, pages/legal/**
(40+ files) are entirely unrouted dead code - app.routes.ts's
cmsContentRoutes is a literal empty array, and category/search/product
routes redirect to CatalogContainerComponent/
ProductDetailsContainerComponent, not these files. Confirmed against
app.routes.ts directly and cross-checked against FRONTEND.md's own
routing description. This means several fixes from earlier this cycle
(RC-Premium-01, RC STORE-01) and the dead-code cleanup sprint's
conclusion that these files were live were all wrong - documented as
KNOWN-ISSUES.md item 13, flagged at the top of PROJECT_INDEX.md, and
noted on the 3 archived docs whose conclusions it affects. No
application code was changed to fix this (out of scope per this
session's 'documentation only' constraint) - it needs a wire-it-up-or-
delete-it decision first.

Verification: tsc --noEmit clean, npm run build green, all markdown
links across 58 in-scope files resolve (checked programmatically).
No application/Angular/backend code modified.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-25 19:10:49 +04:00
sdarbinyan
5707755576 docs: add ANGULAR22_PLAN.md — upgrade feasibility (research only)
No upgrade performed, per mission ('do NOT upgrade automatically').
Verdict: safe, ~2-3.5 days effort. Repo is actually already on Angular
21.1.5 (not 18 as docs implied) — one major behind, not several.

Key findings:
- 2 concrete blockers before any upgrade attempt: barry-cache@^0.1.0
  no longer resolves (ETARGET, root cause of the primeng-removal
  blocker already tracked in KNOWN-ISSUES item 12), and this dev
  environment's Node (v22.16.0) doesn't satisfy Angular 22 CLI's
  requirement (^22.22.3 | ^24.15.0 | >=26.0.0).
- Zero usage of any Angular 22-removed API (ComponentFactoryResolver,
  provideRoutes, CanMatchFn) found in src/app/**.
- One real behavioral risk: route param inheritance default changes
  emptyOnly -> always; app has no explicit override, needs a manual
  route-by-route audit, not just a green build.
- App's existing standalone/signals/OnPush posture (190/191 OnPush)
  means most of the v22 migration cost is already paid.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-25 18:43:48 +04:00
sdarbinyan
d7f69b272a docs: add CLEANUP_REPORT.md for dead-code sweep
Documents the confirmed-dead deletions from e0bcf9d, plus an important
process note: the first attempt at this task was interrupted mid-run
and left an unverified, incorrect mass-deletion staged (117 files
including live routed pages/category, pages/search, pages/info/**,
pages/legal/**) which was reverted before commit. Root cause: knip has
a confirmed false-positive blind spot on this codebase's locale-nested
component pattern under pages/**. Flagged for future cleanup passes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-25 18:39:49 +04:00
sdarbinyan
e4c1c6e2a0 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
sdarbinyan
d4eb25dd4b docs: add RELEASE_REPORT.md for release-candidate walkthrough
Consolidates 3 live browser walkthrough commits (storefront, builder,
backoffice): 2 P0s found and fixed (app-wide query-param routing bug,
Categories CRUD completely broken end-to-end), 6 P1s, remaining items
flagged for a content/design decision rather than fixed unilaterally.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-24 10:47:09 +04:00
sdarbinyan
f5f431620e docs: add ACCESSIBILITY_REPORT.md for RC A11Y-01
Consolidates the 3 WCAG 2.1 AA audit commits (storefront, builder,
backoffice): skip links, keyboard-operable DnD fallbacks, dialog
focus-trap fixes, contrast fixes, form labeling, live-region
announcements, combobox/tablist ARIA. Flags remaining brand-color
contrast failures needing theme-owner sign-off, not fixed unilaterally.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-24 09:19:18 +04:00
sdarbinyan
3253b297eb docs: add PERFORMANCE_REPORT.md for RC PERF-01
Consolidates the 3 perf-audit commits (reactivity/change-detection,
bundles/lazy-loading/tree-shaking, assets) into one report: headline
1.47MB->1.12MB initial bundle (-24%), plus per-area findings and a
remaining-work list (primeng/primeicons still in package.json pending
a blocked npm uninstall, large lazy chunks, combineLatest sites).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-24 08:28:00 +04:00
sdarbinyan
28459a8274 docs: add STORE_REVIEW.md for RC STORE-01, close known-issues 9/10
- docs/STORE_REVIEW.md: RC STORE-01 mission summary — what was closed
  (category/search skeleton, cart dead email-form) vs what's still
  correctly gated behind an architecture/design decision.
- KNOWN-ISSUES.md: items 9/10 moved Open -> Fixed.
- FRONTEND-ROADMAP.md: known-open-items list deduped against the fix.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-23 23:53:39 +04:00
sdarbinyan
b672cd90d5 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
sdarbinyan
18beb7b7a1 docs: add STORE_FRONT_UX_REVIEW.md for RC-Premium-01 audit
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-23 12:08:21 +04:00
sdarbinyan
2c244ad366 docs: add UI-COMPOSITION-REVIEW.md for RC-Visual-02 audit
- Documents 4-commit composition audit across Storefront, Builder, Backoffice
- Recurring bug: CSS var() calls referencing undefined theme variable names,
  silently falling back to hardcoded hex, never responding to tenant theming
- Corrects stale docs/ADMIN.md placeholder claims against live app.routes.ts
- Lists remaining recommendations not applied (out of surgical-diff scope)
2026-07-23 11:07:58 +04:00