Commit Graph

99 Commits

Author SHA1 Message Date
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
sdarbinyan
f261800159 feat(payment): add qrDescription/customerID fields, TTL-based QR polling
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
- CartPaymentRequest gains qrDescription (brandName > hostname > fallback
  text) and customerID (telegram id)
- QrCreateResponse gains qrTTL; polling window now derived from it
  (min 60s) instead of a fixed 3-minute/36-check cap
- PAYMENT_MAX_CHECKS replaced by PAYMENT_MIN_POLL_SECONDS
2026-07-23 00:26:35 +04:00
sdarbinyan
89ae50e9a4 docs(auth): add docs/AUTH.md, drop unused RouterLink import
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Sequence diagrams, JWT claims, API contracts, error responses,
permission model, refresh lifecycle, security considerations, cutover
plan. ng build passes clean (pre-existing bundle-budget warnings
unrelated to this change).
2026-07-20 09:07:27 +04:00
sdarbinyan
1626718cc3 docs: add UI-DESIGN-REVIEW.md for RC design-system finalization pass 2026-07-20 03:30:11 +04:00
sdarbinyan
a362dd4668 docs(icons): add UI icon & visual language audit
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-20 03:03:30 +04:00
sdarbinyan
fd5a436220 api doc
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
2026-07-20 01:02:36 +04:00
sdarbinyan
08976de55a docs(admin): add RC1 UI polish review
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-20 00:07:27 +04:00
sdarbinyan
a579117c9c docs(storefront): add RC1 UI polish review
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-19 23:42:22 +04:00
sdarbinyan
6dd57f12f5 docs: update RC audit with P0 fix pass results
Marks all 8 P0 items resolved (7 fixed, 1 corrected as a false
positive from the original text-only audit method). Adds a fix log
(section 6) with commit references, notes the pre-existing build-
budget failure this pass had to unblock, and corrects the P0-4/P0-5
root-cause description now that the storefront's product data is
known to be live backend data (novo.market proxy), not a local mock
fixture.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-19 23:07:34 +04:00
sdarbinyan
d853ecb1da changes
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
2026-07-19 15:28:35 +04:00
sdarbinyan
eb7b5c996d feat(admin): build shared admin shell
Sidebar (Dashboard/Catalog group/Products/Categories/Orders/Transactions/
Reviews/Reports/Content/Media/Marketplace Builder/Users/Settings/
Monitoring/Analytics + Documentation/Help/Logout), sticky topbar
(breadcrumbs, page title/description, search, notifications, tenant
selector and quick-publish placeholders, current user), reserved
right-rail slot, scrollable content area. Desktop 280px sidebar, tablet
icon rail, mobile drawer with focus management and Escape-to-close.

Nav items without a built page (Reviews, Reports, Settings, Docs, Help)
render disabled with a coming-soon badge instead of dead links; Content
and Marketplace Builder route to the existing project-editor pages
(static-pages / general) rather than duplicating them.

All 15 /backoffice/** routes now render through AdminLayoutComponent;
the public storefront header/back-button/footer no longer render on
admin routes (app.ts/app.html gate on a new isAdminRoute signal).

Added the adminShell i18n namespace (ru/en/hy) for every new shell
string so this doesn't add to the existing untranslated-admin-UI gap
tracked in KNOWN-ISSUES.md.

Colors/type sizes follow DESIGN.md tokens; the two rgba() modal-scrim
values are a documented, intentional exception (neutral overlay,
not a themed token).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-18 00:12:19 +04:00
sdarbinyan
6be3c5892d docs(admin): move locale-hardcoding gap from Open to Fixed
Follow-up to ff4fba3 - the admin/products + admin/categories
translation-tab locale-hardcoding gap flagged as deferred in the
bug-hunt audit docs is now fixed; updates docs/ADMIN.md's audit
section and moves docs/KNOWN-ISSUES.md's item from Open to Fixed.
2026-07-17 22:25:58 +04:00
sdarbinyan
cb3a6ac98a docs(admin): document bug-hunt audit pass over admin/products + admin/categories
Adds docs/ADMIN.md's "Bug-hunt audit pass (2026-07-17)" section (mirrors
docs/EDITOR.md's) covering both fixes from this session (dead
create-category draft recovery, duplicate-order drag-reorder) with repro
and live-verification detail, plus the one deferred finding (hardcoded
en/ru/hy translation-tab locales in both admin form components instead
of the tenant's configured supportedLocales - real cross-feature plumbing,
not a bounded fix).

Mirrors the same summary into docs/KNOWN-ISSUES.md: both bugs into
Fixed, the locale-hardcoding gap into Open as item 6.
2026-07-17 22:19:03 +04:00
sdarbinyan
a8a5de5392 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>
2026-07-17 21:12:10 +04:00
sdarbinyan
82b4a7849a docs(static-pages): backoffice redirect + StaticPages.md
Milestone 7 of the Static Pages Module sprint.

- app.routes.ts: /backoffice/static-pages now redirects to /edit/static-pages
  (absolute redirectTo) instead of rendering BackofficeComingSoonPageComponent
  - Static Pages is a first-class Project Editor module, not a second CRUD
    surface over the same bootstrap.staticPages data.
- New docs/StaticPages.md: full field reference (General/Localization/SEO/
  Media/Publishing), the enabled+status storefront-gating story and its
  backward-compat default (existing/legacy data normalizes to
  enabled+published so nothing gets silently un-published; only new pages
  default to draft), CRUD/search/filter/bulk, the "mutate from the
  unfiltered list" implementation note, rich-text/HTML-mode contract
  (pointer to EDITOR.md), nav integration, and the export/import/draft/
  publish compatibility statement.
- docs/EDITOR.md: Static Pages row in the Sections table (was previously
  absent - the row lived implicitly in Footer's description), HTML editor
  section updated with the Sprint X+2 toolbar additions + validation
  contract, redirect noted near the route line. `docs/Project-Editor.md`
  (named in the original brief) no longer exists - superseded by EDITOR.md
  per that file's own header; documentation went there + the new file
  instead.
- docs/PROJECT.md: doc index entry for StaticPages.md.

Gate: tsc --noEmit, npm test (57/57), arch:check, build all green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 10:24:18 +04:00
sdarbinyan
8d317f043c docs(project-editor): document config schema, form engine, validation
Milestone 6 (final) of the Configuration Engine sprint.

- docs/EDITOR.md: new "Configuration schema, form engine, and validation
  architecture" section covering the field-schema registry, centralized
  validators, live inline feedback, undo/redo, modified-field tracking, and
  pre-publish preview added in M1-M5. Updated the facade signal list and
  folder tour to include schema/.
- ADR-0002 (docs/context/adrs/): records the metadata-augmented-vs-fully-
  schema-driven decision, why severity splits blocking/advisory, and the
  accepted debt (partial [error] binding coverage, schema not yet driving
  template labels).
- FACTS.jsonl (project-editor): decision fact pointing at the ADR.

Note: `barry-cache` is a phantom devDependency (no bin resolves, confirmed in
M1) - ADR/FACTS were authored by hand matching the existing schema/format
rather than via `npm run barry -- adr new` / `validate`.

Gate: tsc --noEmit, npm test (33/33), arch:check, build all green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 09:05:32 +04:00
sdarbinyan
54725c624e docs: add backend integration guide + implementation prompt for B2B
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Document how the B2B storefront sends/gets data vs main (base-URL
resolution, bootstrap fetch, interceptor chain, headers) and the new
builder/backoffice surface awaiting a real API. Add a self-contained
hand-off prompt. Login and payments left untouched.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 00:29:26 +04:00
sdarbinyan
3474581122 docs: add backend diff-vs-main + sales guide, document editor motion & HTML editor
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
- docs/BACKEND-DIFF-VS-MAIN.md: backend handoff summary framing BACKEND.md
- docs/SALES-GUIDE.md: non-technical demo/enablement guide
- docs/EDITOR.md: document interaction/motion pass and HTML editor status

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 23:37:29 +04:00
sdarbinyan
ee1cbdf38b style(ui): full UX/UI + motion pass across storefront, admin, editor
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
- fix save-bar buttons to use shared app-button primitive (were unstyled)
- fix platform-nav-group border/radius via structural selectors, drop dead
  -middle/-right classes
- storefront widgets (hero/categories/product-carousel/footer-nav): design
  tokens, hover/focus states, 44px touch targets, entrance motion, reduced-
  motion guards
- admin dashboard cards + quick-actions: hover lift, entrance animation
- admin product-form gallery remove badge: hover/focus + expanded hit area
- project-editor section.shared button styles: hover/active/focus/disabled
  states + reduced-motion; section-switch fade-in motion

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 23:32:31 +04:00
sdarbinyan
897c1f3196 docs(project-editor): document new shared/ui primitives and fixed bugs
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-16 02:16:29 +04:00
sdarbinyan
b8d89ca8e7 docs: mark Sprint 30 final verify pass complete
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-16 00:25:00 +04:00
sdarbinyan
2a133fb40b chore: release candidate
Sprint 29, scoped to what wasn't already covered by concurrent work in
this session.

- dead code check: grepped console.log/console.debug/console.warn/
  debugger/TODO/FIXME across features/admin/** - none found. tsc
  --noUnusedLocals --noUnusedParameters over features/admin/** - clean,
  no dangling imports/params.
- verified tsc --noEmit, ng build, arch:check:boundaries, and
  arch:check:cycles all pass against the current working tree
- added CHANGELOG.md and RELEASE-NOTES.md at repo root summarizing
  Sprints 20-28

Translation validation is deliberately not duplicated here - the ~178
missing adminXxx.* i18n keys are already logged in docs/KNOWN-ISSUES.md
and being addressed there. No lint script exists in package.json, so a
lint pass isn't applicable.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-16 00:22:01 +04:00
sdarbinyan
173ceb8081 feat(seo): tenant-driven meta tags, sitemap/robots, reduced-motion, docs
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Completes the rest of Sprint 28 on top of the earlier admin-scoped
a11y/skeleton pass (576f260):

- SeoService.resetToDefaults() now reads real bootstrap.seo.default /
  branding instead of hardcoded placeholder text + a broken
  /og-image.jpg reference; auto-reapplies via an effect() whenever
  bootstrap (re)loads, same pattern as UiRuntimeFacade.
- New public/sitemap.xml (static baseline, documented per-tenant-dynamic
  limitation) + public/robots.txt Sitemap directive and admin/editor
  Disallow rules.
- Global prefers-reduced-motion override in styles.scss covering every
  existing hover-transform/fade-in/shimmer animation in one place.
- New adminProducts/adminUsers/adminMonitoring/adminAnalytics
  empty-state i18n keys (en/ru/hy) for this sprint's skeleton/empty-state
  consistency fixes.
- docs/KNOWN-ISSUES.md: logged a newly-found, much larger pre-existing
  gap (~178 missing adminXxx.* i18n keys across the whole admin
  backoffice) - deferred to Sprint 29's translation validation, not
  fixed here.
- docs/BACKEND.md: new item 17 (sitemap generation gap).
- docs/ADMIN.md, docs/SPRINT-PLAN.md: rewritten Sprint 28 sections to
  describe the full, combined scope (both commits) instead of the
  earlier admin-only framing.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-16 00:19:41 +04:00
sdarbinyan
576f2600a5 refactor: marketplace release polish
Sprint 28, scoped to admin/* (user decision — full marketplace audit
declined in favor of a bounded pass over the 8 admin features from
Sprints 20-27).

- a11y: aria-label added to every bare <select> not already inside a
  <label> across categories/products/orders/transactions/users/monitoring
- loading states: app-skeleton rows/cards added to list pages that
  previously rendered blank during the initial fetch (categories, orders,
  transactions, users, monitoring's event feed, analytics summary cards)
- admin-dashboard-card's custom shimmer CSS replaced with the shared
  SkeletonComponent (same visual result, one less duplicated animation)
- bundle-size budget warning (~198kB over) confirmed pre-existing —
  present at Sprint 20's first build before any admin/* code existed,
  and new admin pages are all lazy-loaded — documented as out of scope
  for this pass rather than chased

docs/ADMIN.md + docs/SPRINT-PLAN.md updated with the scope decision and
what was explicitly not done (Lighthouse, animations, SEO/sitemap,
storefront/editor a11y).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-16 00:14:46 +04:00