sdarbinyan
85038df24a
fix(project-editor): ProjectValidator duplicate-slug check falls back to route when slug is unset
...
Mock bootstrap seed data populates page.route but never page.slug, so
duplicateSlugIssues always collapsed every static page to the same
undefined key and reported a false-positive duplicate-slugs issue,
permanently blocking Publish. Fall back to route (leading slash
stripped) when slug is missing or empty.
2026-07-13 14:49:27 +04:00
sdarbinyan
223f908887
feat(project-editor): add draft/publish status, dirty tracking, save/publish to facade
...
Wires ProjectValidator into ProjectEditorFacade and extends ProjectEditorState
with status ('draft'|'published') and lastSavedBootstrap. Adds dirty computed
(diffed against lastSavedBootstrap), validationIssues computed, and save()/publish()
methods. publish() calls PlatformRuntimeService.reloadFromBootstrap() and refuses
when validation issues exist. loadBootstrap() seeds lastSavedBootstrap so a
freshly-loaded bootstrap is not dirty.
2026-07-13 11:01:04 +04:00
sdarbinyan
265f2fcbac
feat(project-editor): add ProjectValidator with MVP validation rules
...
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com >
2026-07-13 10:51:05 +04:00
sdarbinyan
646a68e9fd
feat(content-management): use rich HTML editor for static page content
2026-07-13 10:44:47 +04:00
sdarbinyan
dc8c2eac91
fix(project-editor): keep html-editor surface always in DOM
...
The @if/@else toggle between the contentEditable surface and the code
textarea broke the static ViewChild('surface') query: Angular never
resolves a static query for an element inside a conditional block, so
surface stayed undefined and every keystroke threw in emitChange().
Render both elements always and toggle visibility with [hidden]
instead, and add an ngAfterViewInit sync as a safety net for the
initial html input on the first change-detection pass.
2026-07-13 09:31:04 +04:00
sdarbinyan
fdf11a7766
feat(project-editor): add reusable contentEditable HTML editor component
2026-07-13 09:12:59 +04:00
sdarbinyan
16a134ca42
feat(project-editor): add Navigation tab for header/flat footer nav
2026-07-13 08:57:42 +04:00
sdarbinyan
4d65386052
fix(content-management): static pages editor reads supported locales instead of hardcoding en/ru/hy
2026-07-13 08:20:06 +04:00
sdarbinyan
b166920ad7
feat(project-editor): add Languages tab with generic locale sync
2026-07-13 08:10:00 +04:00
sdarbinyan
74e5099b04
feat(project-editor): route-driven tabs under /edit/:section
2026-07-13 07:55:43 +04:00
sdarbinyan
ee269a9e33
fixes
Architecture Governance / architecture (push) Has been cancelled
2026-07-10 15:55:38 +04:00
sdarbinyan
49d8226411
feat(admin): add product management
2026-07-10 14:14:43 +04:00
sdarbinyan
7d6c09a346
feat(cms): add static pages module
2026-07-10 13:52:01 +04:00
sdarbinyan
e2c8747fcc
feat(builder): add project editor
2026-07-10 13:43:53 +04:00
sdarbinyan
7161a81068
feat(diagnostics): add health engine
2026-07-10 13:34:25 +04:00
sdarbinyan
7ecb19cb1a
feat(search): add Search Intelligence module
2026-07-10 13:25:31 +04:00
sdarbinyan
494451bb96
search engien
2026-07-10 13:15:46 +04:00
sdarbinyan
aed0a47388
feat(product): add reusable Product Experience 2.0
...
Unify product details modules behind config-driven contracts so teams can
extend UX without changing runtime architecture or bootstrap flow.
Keep backward compatibility with existing product payloads by treating new
media/specification/variant/related structures as optional extensions.
Improve conversion and content discoverability with reusable actions,
typed media rendering, grouped specifications, dynamic variants, and
multi-collection related products.
2026-07-10 13:10:35 +04:00
sdarbinyan
86de2cc45b
fix(catalog): filter UX and tablet layout
Architecture Governance / architecture (push) Has been cancelled
2026-07-09 02:57:48 +04:00
sdarbinyan
6409a91cb0
style(catalog): polish responsive UI
2026-07-09 02:43:39 +04:00
sdarbinyan
8d652c8259
feat(platform): sprint 11.5 standardization
Architecture Governance / architecture (push) Has been cancelled
2026-07-09 02:29:12 +04:00
sdarbinyan
a16c856537
feat(catalog): sprint 10.2 ux responsive empty-states polish
Architecture Governance / architecture (push) Has been cancelled
2026-07-09 01:46:32 +04:00
sdarbinyan
55216817b2
bug-fixes
2026-07-09 01:40:22 +04:00
sdarbinyan
92e1bdaff8
feat(ux): implement sprint 11 user experience module
2026-07-09 01:13:54 +04:00
sdarbinyan
1a8f916942
feat(catalog): implement sprint 10 advanced search experience
Architecture Governance / architecture (push) Has been cancelled
2026-07-09 00:55:50 +04:00
sdarbinyan
3ef0bd711d
feat(product): implement sprint 9 product engagement module
2026-07-09 00:45:36 +04:00
sdarbinyan
c901ec1e49
refactor: finalize bootstrap-driven layout and widget runtime
2026-07-05 04:17:31 +04:00
sdarbinyan
6550250d13
cleanup: remove tenant variant logic and enforce config-driven UI
2026-07-05 04:07:25 +04:00
sdarbinyan
79a12c0ec2
fix DI errors and stabilize static page navigation
2026-07-05 03:41:13 +04:00
sdarbinyan
b0c5c5e051
feat static pages system with dynamic footer and safe html rendering
2026-07-05 03:37:35 +04:00
sdarbinyan
0089790d41
feat ui foundation layer for page container sections and grid
2026-07-05 02:50:53 +04:00
sdarbinyan
145a13857d
fix local bootstrap startup and catalog widget UX
2026-07-05 02:44:04 +04:00
sdarbinyan
487a3fb913
Sprint 9: add tenant-driven API resolution layer
2026-07-05 02:24:16 +04:00
sdarbinyan
c3d1153f0e
Sprint 8: add widget manifest and data source engine
2026-07-05 02:08:15 +04:00
sdarbinyan
91d9444875
Sprint 7: add section engine
2026-07-05 01:55:41 +04:00
sdarbinyan
d4a5daeb4c
product details implementation
2026-07-05 01:43:56 +04:00
sdarbinyan
0efcfb5225
product grid creating
2026-07-05 01:36:21 +04:00
sdarbinyan
d2f0f0de54
CAtegory component making
2026-07-05 01:24:54 +04:00
sdarbinyan
01d2b26021
Support variant-aware cart lines
2026-07-05 01:12:07 +04:00
sdarbinyan
3f5aa2af2a
Polish marketplace search states
2026-07-05 01:10:56 +04:00
sdarbinyan
3974eefbfe
Support nested marketplace categories
2026-07-05 01:09:55 +04:00
sdarbinyan
b676cec4e9
Add related products to detail page
2026-07-05 01:07:53 +04:00
sdarbinyan
d7d73c2a10
Add reusable marketplace product card
2026-07-05 01:05:48 +04:00
sdarbinyan
ae3512ad37
Route marketplace data through product facade
2026-07-05 01:03:37 +04:00
sdarbinyan
05d75421f5
Add product data domain layer
2026-07-05 01:02:16 +04:00
sdarbinyan
9cf508d319
clean up
2026-07-05 00:57:20 +04:00
sdarbinyan
58b5a4e996
clean up stage 1
2026-07-05 00:38:21 +04:00
sdarbinyan
eaa830af3f
arch(sprint1): remove obsolete tenant route files
2026-07-03 02:17:49 +04:00
sdarbinyan
6ea9932aa7
arch(sprint1): add unknown widget fallback diagnostics
2026-07-03 02:11:07 +04:00
sdarbinyan
6dfe1291ae
arch(sprint1): add runtime provider selection strategy
2026-07-03 02:08:51 +04:00