soroush.asadi
db167062e6
feat(admin): search + pagination on all data-driven tables
...
- AdminResource: client-side search box (matches across all fields) + 25/page
pagination with prev/next and a filtered-count footer
- bumped pageSize on server-paged configs (users/blogs/comments/discounts/music/
fonts/tags) so search/paginate covers the full set
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-03 06:48:58 +03:30
soroush.asadi
5b6f3e851b
feat(admin): full-screen forms + WYSIWYG rich-text editor
...
- AdminResource + TemplatesAdmin modals are now large full-height panels
(max-w-5xl, sticky header/footer, scrolling body, 2-column field grid;
textarea/richtext span full width)
- RichTextField: dependency-free contentEditable WYSIWYG (bold/italic/underline,
H2/H3/¶, lists, link, clear) emitting HTML, dir="auto" for fa/en
- blog content + category description now use the rich editor
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-03 00:51:52 +03:30
soroush.asadi
88a44b1349
feat(admin): full Persian (fa) localization + RTL polish
...
- admin-resources: all config titles/descriptions/columns/fields → Persian
- AdminResource: generic UI strings (new/edit/delete/save/cancel/loading/empty/
actions/confirm) → Persian; text-left/right → logical text-start/end
- TemplatesAdmin: all labels, table, modal, statuses, errors → Persian
- FileUploadField, WebsiteSettingsAdmin, FileManager → Persian
- layout: ms-auto logical prop (NodesTable/RenderQueue/AiContentStudio already
i18n with Persian values)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-02 23:47:35 +03:30
soroush.asadi
b47314fcab
feat(admin): image thumbnails in lists + template image/demo fields
...
- AdminThumb: reusable thumbnail (raster + SVG via <img>, dashed fallback on
empty/broken)
- AdminResource: ColumnDef gains type:"image" → renders thumbnails in tables
- image thumbnail columns for categories, slides, home-events, internal routes;
categories icon field now multiline (accepts raw SVG markup)
- TemplatesAdmin: cover image / mini-demo / demo / full-demo upload fields
(backed by existing container image/demo fields) + thumbnail column in the list
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-02 23:23:52 +03:30
soroush.asadi
0b538e1b1e
feat(content+admin): home-events CRUD + comments moderation
...
Build backend images / build content-svc (push) Failing after 45s
Build backend images / build file-svc (push) Failing after 1m3s
Build backend images / build gateway (push) Failing after 0s
Build backend images / build identity-svc (push) Failing after 0s
Build backend images / build notification-svc (push) Failing after 1s
Build backend images / build render-svc (push) Failing after 1s
Build backend images / build studio-svc (push) Failing after 0s
- content-svc: home-events gains Create/Update/Delete + includeInactive list
(POST/PUT/DELETE /v1/home-events, admin-gated; dates coerced to UTC)
- admin /admin/home-events: full CRUD for homepage hero event banners
- admin /admin/comments: list + approve/unapprove + delete (moderation)
- AdminResource: optional listQuery to fetch inactive rows for admin views
Fills the remaining legacy-admin gaps (home events, comments).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-02 22:24:56 +03:30
soroush.asadi
163f0c9ec3
feat(admin): media library + upload component (replace URL fields)
...
- /admin/files Media Library: drag-drop multi-upload, thumbnails, copy-URL, delete
- FileUploadField replaces raw URL inputs; new "image" field type in AdminResource;
wired into category image
- upload proxy /api/admin/files/upload: browser → Next → presigned PUT (server-side,
reaches minio:9000) → confirm → returns public URL
- user-uploads bucket is public-read; public base via NEXT_PUBLIC_MINIO_URL
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-02 14:55:52 +03:30
soroush.asadi
3fc7bf2b97
feat: AI SEO generator, full admin panel, i18n sweep, new logo + auth/RTL fixes
...
Build backend images / build content-svc (push) Failing after 3m39s
Build backend images / build file-svc (push) Failing after 52s
Build backend images / build gateway (push) Failing after 58s
Build backend images / build identity-svc (push) Failing after 1m21s
Build backend images / build notification-svc (push) Failing after 1m0s
Build backend images / build render-svc (push) Failing after 58s
Build backend images / build studio-svc (push) Failing after 55s
AI SEO content generator
- content-svc: per-tenant OpenAI config (ai_settings) + /v1/ai endpoints
(settings GET/PUT, seo-post) with SEO-expert prompt → structured article
- admin UI to configure token/base-url/model and generate + save as blog
- configurable base URL for restricted networks
Full data-driven admin panel
- generic /api/admin/resource proxy + reusable AdminResource component
- categories/tags/fonts/blogs (CRUD), users (list + ban), plans/slides
- AI content section; nav + i18n
i18n localization sweep
- localized 116 user-facing + studio/editor components to next-intl (fa+en)
under the auto.* namespace; merge tooling in scripts/merge-i18n.js
Branding + assets
- Monoline F logo (LogoMark + favicon)
- offline SVG placeholder generator (/api/placeholder), dropped picsum.photos
Fixes
- JWT issuer mismatch on content/studio (flatrender → flatrender-identity)
- missing role claim → [Authorize(Roles="Admin")] now works (RBAC)
- Secure cookies broke HTTP sessions → gated behind AUTH_COOKIE_SECURE
- Radix RTL via DirectionProvider (right-aligned menus in fa)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-02 09:35:14 +03:30