v3.6.61
Release notes
An official summary of added, changed, and fixed capabilities in the Abrecode user panel. Select an item to open the related page.
Version 3.6.69
Version 3.6.68
- ChangedPublic pages no longer load console-only `config.control-center.css` (ApexCharts/Leaflet bundle removed from global CSS)
- ChangedRoot layout: locale-aware `lang`/`dir`/font on `<html>` at SSR; local fonts use `preload: false` to stop unused preload console warnings
- FixedLighthouse / PageSpeed: allow viewport zoom; remove header/footer skeleton swap (lower CLS); explicit image dimensions; footer heading semantics and icon link labels; larger touch targets; long-cache headers for `/assets` and `/fonts`; Next.js image aspect-ratio warning on installment promo
Version 3.6.67
Version 3.6.66
Version 3.6.65
Version 3.6.64
Version 3.6.63
Version 3.6.62
Version 3.6.61
Version 3.6.60
Version 3.6.59
Version 3.6.58
Version 3.6.57
Version 3.6.56
Version 3.6.55
Version 3.6.54
Version 3.6.53
Version 3.6.52
Version 3.6.51
- ChangedLogin tabs: blue active pill, light/dark friendly; removed tab content cards
- ChangedAuth field labels sit above inputs with logical start alignment (RTL-safe for Persian)
- ChangedSignup/forgot primary actions use the same blue CreepyButton as login; forgot “back to login” link is muted (not brand green)
Version 3.6.50
Version 3.6.49
- ChangedLogin tabs: one-time code / password labels and request-code copy in all locales
- ChangedPersian and other RTL locales now right-align login tab content; tab cards and pills work in dark mode
- ChangedLogin send-code / sign-in buttons use the animated cover button; auth titles and links are smaller, near-black (near-white in dark mode)
Version 3.6.48
Version 3.6.47
Version 3.6.46
Version 3.6.45
Version 3.6.44
Version 3.6.43
Version 3.6.42
- AddedInstallments page: product/detail skeletons while loading; lazy-loaded product images
- FixedLive-chat image attachments hide filename and show preview + download only; widget opens an image preview modal on click
- FixedPublic header brand/tagline scale down on mobile so text sits beside the logo
- FixedTablet/iPad: hamburger menu available below `lg` (main mega-menu remains desktop)
- FixedFooter copyright/legal links match «طراحی شده با» size; social title stays white in light and dark
- FixedFooter menus on mobile use a readable 2-column grid with smaller type
- FixedInstallments mobile: center-aligned options; cash price slightly larger and bold
Version 3.6.41
- AddedLive-chat widget: drag-and-drop file upload with progress bar and cancel
- AddedLive-chat widget: message skeletons while opening; image attachment skeleton until preview loads
- AddedLive-chat widget: emoji search uses site font; Persian placeholder «سرچ شکلک» (RTL)
- ChangedComposer send / attach / emoji controls share a 42px size with hover motion
- FixedLive-chat emoji picker closes after picking an emoji and on outside click
- FixedProfile info dropdown animates open/close
- FixedDefault subtitle when CMS unset: «پشتیبانی آنلاین ابریکُد»
Version 3.6.40
- AddedUser uploads (profile photo and comment/product attachments) are stored on the public bucket under `userassets/{userId}/{section}/` via `POST /media/user-assets/upload`
- AddedHelper `uploadUserAsset()` for console clients (`profile`, `blog-comments`, `course-comments`, `product-comments`, …)
- ChangedProfile avatar upload path now resolves through the public CDN layout instead of the auth bucket root
Version 3.6.39
Version 3.6.38
Version 3.6.37
Version 3.6.36
Version 3.6.35
Version 3.6.34
Version 3.6.33
Version 3.6.32
- AddedSource Code mega menu with Ready, ReactJs, Premium, and Free pages (`/sourcecode`, FA `/سورس-کد`)
- AddedThemes & Plugins mega menu with Custom, WordPress, Ecommerce, and NextJs pages (`/templates`, FA `/قالب-و-افزونه`)
- AddedLocalized typewriter headlines for all public mega menus in 15 locales
- ChangedMega-menu typewriter copy now follows the active site language instead of hardcoded Persian
Version 3.6.31
Version 3.6.30
Version 3.6.29
Version 3.6.28
Version 3.6.27
Version 3.6.26
Version 3.6.25
- AddedDatabase-unavailable page: Abrecode software-update copy + Tehran ETA (now+5h, persisted until DB is up)
- AddedAccount security: per-user idle minutes + inactivity modal (Stay / Logout) in all 15 locales
- AddedAdmin large forms i18n (User, Course, Settings, Instructor, Student, BlogPost, TrainPath, Role, and related dialogs)
- ChangedWebsite leftover English copy translated to each locale file language (brands/addresses/emails unchanged)
- FixedInactivity modal followed the current site language (`NextIntlClientProvider` locale)
Version 3.6.24
Version 3.6.23
- AddedPublic payment verify page at `/{locale}/payment/verify` (server-side invoice verify only; ignores client `paid=` flags)
- AddedCart flow: installment option hidden (mechanism reserved); detail-page CTAs show “already in cart” and highlight the line in cart
- AddedFailed online payment copy + finance ticket deep-link prefills on ticket create (`department=finance`)
- ChangedGateway return path for invoice payments goes to the public verify page instead of private VIP/console verify UX
Version 3.6.22
Version 3.6.21
Version 3.6.20
Version 3.6.19
Version 3.6.18
Version 3.6.17
- AddedLive chat: launcher hint `once` persistence; `supportOnline` + response-delay modes; once-per-day offline form via `POST /live-chat/session/offline-form`
- AddedLive chat UI chrome (toasts, errors, form labels, date groups, offline form) uses next-intl `LiveChat` namespace for all 15 site locales; chat message bodies stay untranslated
Version 3.6.16
Version 3.6.15
Version 3.6.14
Version 3.6.13
Version 3.6.12
Version 3.6.11
Version 3.6.10
Version 3.6.9
Version 3.6.8
Version 3.6.7
Version 3.6.6
Version 3.6.5
Version 3.6.4
Version 3.6.3
- AddedMobile header shows avatar-only profile control beside theme (order: theme → profile → cart → hamburger)
- AddedHamburger drawer shows full-width name row linking to `/console/dashboard`
- ChangedPublic header search slightly wider (`md`/`lg`/`xl` max-widths raised)
- ChangedNews ticker uses constant px/s so mobile scroll speed matches desktop
- FixedHeader chrome skeleton bones match real controls (search, theme switch, auth pill/avatar, cart, hamburger)
- FixedUser dropdown: name on the physical left; mobile (Persian digits) then truncated email (SF UI) with animated full-email tooltip
- FixedTheme SwitchMode lifts on hover like the profile chip
- FixedDropdown links and View account use pointer cursor; View account has stronger hover motion
Version 3.6.2
Version 3.6.1
- AddedAnimated Tooltip: Theme ("Dark/Light"), Cart ("View Cart"), Profile ("Your User Information")
- ChangedPublic header search max-width roughly halved
- ChangedLogged-in / login header triggers use square `size-9` controls aligned with cart
- FixedPublic header: equal-height action row (theme / auth / cart); theme keeps a wider switch width
- Fixed«View account» CTA readable in light mode (brand fill + ink text) with hover animation
- FixedRemoved harsh outline/ring around profile photo in the public user dropdown
Version 3.5.1
- AddedPublic header profile menu redesign with a primary **View account** CTA to `/console/dashboard`
- AddedCompact SwitchMode theme control in the public site header (knob/sun/moon animation only; existing curtain transition kept)
- ChangedPublic auth chip uses `PublicHeaderUserMenu` (console topbar menu unchanged)
Version 3.4.1
- ChangedConsole language switcher opens the same `LanguageSelectDialog` used on the public site
- ChangedDashboard / panel surfaces rely on DESIGN.md tokens for dark-mode text contrast
- ChangedREADME en/fa — panel dark-mode UX notes
- FixedConsole verification ribbon: readable dark-mode colors; CTA has padding + Motion hover/tap
- FixedConsole header search, sidebar/home icons, and sidebar-toggle icon readable in dark mode (MUI theme follows `resolvedTheme`)
- FixedSidebar collapse control hidden on mobile (hamburger only)
- FixedProfile status badge sits at the avatar corner outside the image clip
Version 3.3.1
- AddedConsole presence activity: entering `/console` or mouse/click/keyboard activity sets status to **online**, unless the user manually chose **busy** / **offline** (manual lock cleared on each login/signup)
- ChangedApplied `DESIGN.md` tokens across the user console panel (shell, banners, dashboard cards, avatar status, links/buttons) with dark-mode-safe semantics
- ChangedProfile menu trigger: smaller name typography + wider chip so first/last name stay readable; dropdown shows wrapping name
- Changed`docs/design-system.md` — panel status color mapping
Version 3.2.1
- Changed`docs/en/modules/auth.md`, `docs/fa/modules/auth.md` — in-page swap vs deep-link navigation
- FixedAuth mode switches (login ↔ signup ↔ forgot) stay on the same `/auth` page: in-form controls act as swap buttons (soft URL/`history.pushState`), not full Next.js navigations
- FixedMode still controlled via `?mode=` for deep links from the rest of the site
Version 3.1.1
- AddedUnified public auth UI at `/auth` with `?mode=login|signup|forgot` (default: login)
- AddedForm swap animation (blur/scale via Motion) between existing Login / Signup / Forgot views
- AddedMode-switch skeletons that mirror each form before the target form appears
- ChangedLegacy `/auth/login`, `/auth/signup`, `/auth/forgot-password` redirect to `/auth?mode=…`
- ChangedSite-wide login/signup/forgot entry points now target the unified auth URL
- ChangedMiddleware guest auth paths include `/auth`; NextAuth `pages.signIn` points to `/auth`
- Changed`docs/en/modules/auth.md`, `docs/fa/modules/auth.md` — unified auth route
Version 3.0.90
- ChangedApplied `DESIGN.md` tokens across Console: primary CTA black, brand-green accent, canvas/hairline surfaces
- ChangedRemapped shadcn/`globals.css` + Metronic `colors.css`; MUI theme primary/accent; core + dual UI buttons (`brand` variant)
- ChangedPublic chrome, shop product UI, auth, blog/training, and shared components moved off sky/slate/zinc hardcodes to semantic tokens
- ChangedFonts: Estedad / SF UI kept; Geist Mono wired for `font-mono`
- Changed`docs/design-system.md` — DESIGN.md → Tailwind / CSS variable mapping
- ChangedREADME points at `DESIGN.md` + design-system doc
Version 3.0.89
- AddedShop product detail: password gate, sale price display, download button driven by `isDownloadable`, cookie-backed product likes, publish/visibility filtering via API
- AddedCart add uses effective (sale) price; product cards show sale strikethrough
- AddedProduct comments form + approved comments list on the public product page
Version 3.0.88
Version 3.0.87
Version 3.0.86
Version 3.0.84
- ChangedPublic site media loads from the website MinIO bucket (`NEXT_PUBLIC_WEBSITE_ASSETS_URL`); no longer served from `public/`
- Changed`toAbsoluteUrl` + middleware rewrite `/assets` (and banks/currencies/favicon/sounds) to that bucket
- ChangedUploaded 667 files to `public-bucket`; local copy kept in `.static-media-archive/`
Version 3.0.83
- ChangedCart items stay after confirm & pay / pending invoice create — clear only when payment succeeds
- ChangedLive chat FAB hidden on `/console/*` account pages (still on public + auth)
- Changed`docs/en/modules/cart-checkout.md` / `docs/fa/modules/cart-checkout.md`
- Changed`docs/en/live-chat.md` / `docs/fa/live-chat.md`
Version 3.0.82
Version 3.0.81
- AddedConfirm & pay requires verified mobile: checkout modal (enter number → SMS OTP via existing verify APIs)
- AddedAfter invoice create: final invoice page with Settle payment → `/cart/checkout/[invoiceId]/pay` (payment gateway stub)
- AddedPending invoices in console finance detail also show Settle payment
- Changed`docs/en/modules/cart-checkout.md` / `docs/fa/modules/cart-checkout.md`
Version 3.0.80
Version 3.0.79
Version 3.0.78
- ChangedAuthenticated cart page matches checkout sidebar design: discount code apply, payment method radios, confirm & pay, dynamic category labels (courses/products/services/items)
- ChangedCart list: smaller type, more row spacing, tighter number tracking; optional per-item discount badge when `listPrice` is set
- ChangedCourse add-to-cart stores `productKind: course` for dynamic copy
- Changed`docs/en/modules/cart-checkout.md` / `docs/fa/modules/cart-checkout.md`
Version 3.0.77
Version 3.0.76
Version 3.0.75
Version 3.0.74
Version 3.0.73
Version 3.0.72
Version 3.0.71
- AddedCart page redesign (order basket + payment details): guest CTA «ورود / عضویت» with `callbackUrl` back to `/cart`; authenticated «تکمیل خرید» creates invoice via `POST /cart/checkout`
- AddedCheckout page `/cart/checkout/[invoiceId]` with invoice summary + payment method picker (gateway wiring next)
- AddedCourse detail «خرید دوره» adds to cart and navigates to `/cart`
- AddedQuantity +/- on cart lines; fa prices as Toman with Persian digits + grouping
- Changed`docs/en/modules/cart-checkout.md` / `docs/fa/modules/cart-checkout.md`
Version 3.0.70
- ChangedCategory page `/trainings/categories/[slug]` uses saved SEO metadata (`metaTitle`, description, keywords, OG/Twitter, canonical) instead of the category name as the document title
- ChangedRenders category JSON-LD when `schema` is present
- Changed`docs/en/modules/training.md` / `docs/fa/modules/training.md`
Version 3.0.69
- ChangedCategory page `/trainings/categories/[slug]`: header image as hero background, category image as logo
- ChangedCategory grid logos use `categoryImage` only (no package-image fallback)
- ChangedPublic category client maps `headerImage` / `header_image`
- Changed`docs/en/modules/training.md` / `docs/fa/modules/training.md`
Version 3.0.63
Version 3.0.62
Version 3.0.61
Version 3.0.60
Version 3.0.59
Version 3.0.58
- AddedPublic instructor profile at `/trainings/instructors/[slug]` (header + avatar + bio + skills + courses)
- AddedCourse detail shows instructor card with instructor `profileImage` and link to profile
- Added`GET /training/public/courses/:slug` client wiring + `InstructorPage` i18n (fa/en)
- Changed`docs/en/modules/training.md` / `docs/fa/modules/training.md`
Version 3.0.57
Version 3.0.56
Version 3.0.55
Version 3.0.54
Version 3.0.53
Version 3.0.52
Version 3.0.51
Version 3.0.50
Version 3.0.49
Version 3.0.48
Version 3.0.47
- ChangedTopbar language switcher: vertical padding aligned with featured-news badge; pill style with ring/hover
- ChangedPublic search modal: spring enter/exit (blur + scale), cyan-branded panel, animated empty/loading/result states
- Changed`docs/en/public-header-search.md` / `docs/fa/public-header-search.md`
Version 3.0.46
- ChangedPublic mobile hamburger drawer redesigned (brand header, account card, search CTA, icon nav, section accordions)
- ChangedAccount + search live only inside the mobile drawer; header toolbar stays cleaner on small screens
- ChangedDrawer opens from the correct RTL/LTR edge; private-bucket media previews use API proxy
- Changed`docs/en/public-header-search.md` / `docs/fa/public-header-search.md` updated for mobile nav
Version 3.0.45
Version 3.0.44
Version 3.0.43
Version 3.0.42
Version 3.0.41
Version 3.0.40
Version 3.0.39
Version 3.0.38
Version 3.0.37
Version 3.0.36
- AddedLive Chat: reply-to-message (icon beside bubbles); visitor profile strip (name / mobile / email) in the widget
- AddedPage URL updates for logged-in visitors (JWT) as well as guests — agents see current page in realtime
- ChangedMessage bubbles wrap long text to the chat width (`overflow-wrap: anywhere`, `minWidth: 0`)
- ChangedListens for Socket.IO `message:updated` (agent edits)
Version 3.0.35
Version 3.0.34
Version 3.0.33
- ChangedLive Chat mobile: near-fullscreen panel with edge margins; backdrop blur while open (clears on close)
- ChangedSmaller widget border-radius; guest name must be Persian when site/user language is `fa`
- ChangedMobile field accepts Persian digits; hint text removed (error only on invalid input) with fade + field pulse animations
Version 3.0.32
Version 3.0.31
Version 3.0.30
- ChangedLive Chat FAB always anchors **bottom-right** (independent of RTL/LTR)
- ChangedPanel open/close uses MUI `Fade`; UI rebuilt with MUI (`MuiTextField` outlined, `MuiButton`, `Fab`, `IconButton`, `Paper`)
- ChangedWidget copy is English when site locale or user language is not Persian (`fa`)
- ChangedLive chat docs (EN/FA)
Version 3.0.29
- ChangedLive Chat FAB mounts on **all** locale pages (public site, auth, console) via root layout — no login required to see the widget
- ChangedGuests can start chat after name + mobile form on any page; logged-in users skip the form
- ChangedLive chat docs (EN/FA); README
- FixedVisitor send errors surface API message in toast; empty guest tokens normalized
- FixedBootstrap no longer re-runs on every page-title change; Enter while sending is ignored
- FixedLogged-in bootstrap failure shows retry UI instead of an empty panel
Version 3.0.28
- AddedFloating **Live Chat** widget (bottom-end, max width 380px) for real-time support
- AddedGuest pre-chat form (full name + mobile) with cookie resume of profile and history
- AddedLogged-in users start chat without the form
- AddedTyping indicator («در حال تایپ»), emoji picker, file attachments via public-bucket
- AddedSocket.IO client connected to api-server `/live-chat` namespace
- ChangedLive chat module notes in README and `docs`
Version 3.0.26
Version 3.0.25
Version 3.0.24
Version 3.0.23
Version 3.0.22
Version 3.0.21
Version 3.0.20
- AddedDeposit currency logos + Persian amount words (toman); amount fields centered/bold
- AddedWithdraw: create-bank modal when none exist; all banks dropdown with logos; non-approved selection error; redirect to transactions
- AddedTransactions: detail modal, status badges, creator, cancel pending withdrawal
- AddedCreate menu: bank account; mobile wallet icon dropdown; tighter topbar wallet typography
- AddedFooter RTL + left alignment for Persian
- FixedSidebar section icons open submenu only (no auto-nav to first child)
- FixedIcon button hit targets (`asChild` + full-area click)
- FixedDark theme visibility for form fields
Version 3.0.19
Version 3.0.18
- AddedBank account form: live Sheba/card validation (persian-tools), card mask `xxxx-xxxx-xxxx-xxxx`, bank logos in searchable select
- AddedDirect deposit (FA): currency type selector (Toman/USD/GBP/JPY/AED/AZN/TRY) — default Toman; presets/labels follow selection
- AddedFull bank logo set under `/public/banks` (traditional + digital brands)
- ChangedFinance module docs updated for validation and deposit currency
Version 3.0.17
- AddedWallet page with Toman balance, deposit/withdraw actions, recent transactions with status chips
- AddedBank accounts page (cards, create/edit, primary, deactivate, delete)
- AddedWithdraw form (Toman input, approved banks only, exceed-balance validation)
- AddedFinance menu link for bank accounts; wallet dropdown: view wallet + bank accounts + Iran flag Toman
- ChangedTopbar horizontal padding symmetrized; notifications route bank/withdrawal events to finance pages
- ChangedWallet display uses Toman for `fa` locale
- ChangedUpdated finance module docs (EN/FA)
Version 3.0.16
Version 3.0.15
- ChangedSignup page shows forgot-password link under the login link (when password recovery is enabled)
- ChangedUpdated `docs/en/modules/auth.md` / `docs/fa/modules/auth.md`
- FixedOTP `MuiOtpInput` uses MUI `slotProps.htmlInput` instead of deprecated `inputProps` (removes React DOM warning on forgot-password / auth OTP screens)
Version 3.0.14
Version 3.0.13
- ChangedOTP inputs show locale (Persian) digits in Estedad bold; auto-submit when 6 digits are entered; red border on wrong/expired code and green border on success before continuing
- ChangedAuth page links have no underline; field errors fade in with a soft red tone; dark-mode text fields keep soft white borders and readable content (including Remember me)
- ChangedPublic header login/register, user menu, cart and related icons use white text/icons in dark mode
- ChangedMobile header Blog / About / Contact links align under the cart actions (end side) in RTL and LTR
- ChangedOpening cart/user dropdowns no longer shifts page width or adds horizontal scroll (dropdown `modal=false` + overflow-x clip)
- ChangedUpdated `docs/en/modules/auth.md` / `docs/fa/modules/auth.md`
Version 3.0.12
- ChangedAuth OTP inputs (login, signup, forgot password, profile verify, admin email login) use MUI outlined TextFields with paste support and Persian/Arabic digit acceptance
- ChangedResend OTP clears the OTP fields so a new code can be entered
- ChangedUpdated `docs/en/modules/auth.md` / `docs/fa/modules/auth.md`
Version 3.0.11
- AddedSidebar section **Favorites** with **Favorite articles** at `/console/favorites/articles` (image, title, summary, category link, views, comments, publish datetime, author, search, sort newest/oldest/popular, pagination)
- AddedTop-bar **View website** control next to dashboard (links to public home) with short hint text
- ChangedRemoved favorite articles block from account settings profile
- ChangedTop-bar **Create** dropdown moved to the far end (spaced from other icons)
- ChangedAdded `docs/en/favorites-articles.md` / `docs/fa/favorites-articles.md`
Version 3.0.10
- ChangedUser profile UI moved from `/console/profile/me` to `/console/account-settings/profile` (avatar, personal info, email/mobile verification, bio, favorites)
- ChangedPassword + 2FA remain on `/console/account-settings/password` only (removed from profile form)
- ChangedLegacy `/console/profile/me` redirects to account-settings profile
- ChangedTop-bar verification banner, user menus, and dashboard profile links point to account-settings
- ChangedOTP validity hint (2 minutes) and channel-specific auth toasts; top-bar shows verified mobile in Persian digits
- ChangedAdded `docs/en/account-settings-profile.md` / `docs/fa/account-settings-profile.md`
Version 3.0.9
Version 3.0.8
- ChangedSignup steps: identifier → profile (name + password) → OTP → login
- ChangedPersian name validation for `fa` / mobile signup
- ChangedOTP resend countdown **30s**; expired OTP toast
- ChangedLocale gate: non-`fa` identifier is email-only (login/signup/forgot)
- ChangedTopbar contact banner: mobile verify (`fa` + email signup) or email verify (mobile signup)
- ChangedProfile: mobile verify UI only in `fa`; email send-code when unverified
- FixedSignup page build error (`Expression expected` in conflict toast)
Version 3.0.7
Version 3.0.6
- AddedComment form emoji picker; comment timestamps show date + HH:mm; attachments under replies
- AddedGuest comment like/dislike via cookie + sync on login
- AddedAuthor page: strip HTML from bio; paginated articles (10/20/50 per page)
- FixedService worker navigations use NetworkFirst to avoid `no-response` on localized blog URLs
Version 3.0.5
- AddedArticle page: share bar, short link, copy article, like heart, favorites button
- AddedAuthor card: stripped short bio + social icons; reading time + publish time
- AddedRelated articles row; tags with `/blog/tags/[tagSlug]` listing page
- AddedNested comment sort dropdown + like/dislike; author/user public pages + follow
- AddedProfile: favorite articles section
- ChangedSubscribe bar, like, favorite, related articles, tag, comment reaction, bio without HTML
- FixedAuthor short bio no longer shows raw HTML tags
Version 3.0.4
- AddedGlobal localized loading overlay with MUI progress bar and percentage (`Common.loading` / `Common.loadingPercent`)
- AddedRoute-level `loading.tsx` and top navigation progress bar for public + console routes
- AddedLink-click loading overlay until the next page is ready
- FixedBlog article author name shows first name + last name (fallback: displayName)
- FixedLocale switch on dynamic blog URLs passes route params (`useSwitchLocale`)
Version 3.0.3
Version 3.0.2
Version 3.0.1
Version 3.0.0
Version 2.2.0
Version 2.1.54
Version 2.1.53
Version 2.1.52
Version 2.1.51
Version 2.1.50
Version 2.1.49
Version 2.1.48
Version 2.1.47
Version 2.1.46
Version 2.1.45
Version 2.1.44
Version 2.1.43
Version 2.1.42
Version 2.1.41
Version 2.1.40
Version 2.1.39
Version 2.1.38
- AddedPublic trainings catalog page (`/trainings`): hero search (courses-only), suggestion chips, featured courses, dynamic category grid with logos, roadmap CTA; responsive layout
- AddedClient proxy `GET /api/public/training/courses/search` and `publicTrainingApi` for categories/courses
- ChangedPublic header: single-row logo + compact search + actions; site name/tagline visible on mobile
Version 2.1.37
- AddedPublic search modal with blurred backdrop, high z-index, grouped results (pages, courses, articles, skills, instructors)
- AddedMobile accordion main menu with nested sections; compact search trigger in mobile header
- AddedHeader main menu hover: faster closing, single dropdown, no previous menu stay
- FixedPublic header mega-menu hover: faster close (60ms), single shared dropdown portal, no stale menu when moving between items
Version 2.1.35
Version 2.1.34
Version 2.1.33
- AddedSplit auth layout (marketing panel + video + animated form card) inspired by website
- AddedFallback news items in public top bar when announcements API is empty
- AddedTahoma font for email addresses on public pages
- AddedThe content of public pages could not be seen (remove opacity-0 in SSR)
- AddedRedirect login/logout to port 3001 — relative path and `.env` on port 3000
- Addedpublic header scroll; RTL for fa/ar/ku only
- AddedLayout of the news ticker and the location of the language switch in the top bar
- AddedDisabling Service Worker in development
- ChangedAuth pages use dedicated split layout instead of compact public shell
- FixedPublic page content invisible (`PageAnimationWrapper` no longer uses opacity-0 SSR)
- FixedAuth redirect/logout to wrong port (3001) — relative paths + `.env` defaults on port 3000
- FixedPublic header scroll (removed sticky overflow trap); RTL only for fa/ar/ku locales
- FixedNews ticker layout; language switcher on left (RTL) / right (LTR) in top bar
- FixedPWA service worker disabled in development to prevent stale JS bundles
Version 2.1.32
- Added`GET /public/page-routes` API + middleware slug rewrite from database
- AddedPublic header matches website: top-bar locale + flags, blog/about/contact links, mobile drawer
- AddedWebsite fonts (Estedad, SF UI, Pinar, T012) and Persian digit localizer on public pages
- AddedSeparate meta title templates: public `%s | ابریکد`, console `%s | پنل کاربری ابریکد`
- AddedNextAuth Error `CLIENT_FETCH_ERROR`
- AddedHorizontal scrolling general layout
- AddedRemoving the duplicate display of username and email in the public header
- AddedClarifying the text of the news in the top bar
- FixedNextAuth `CLIENT_FETCH_ERROR` (`trustHost`, reduced session refetch)
- FixedHorizontal scroll on public layout (`overflow-x-hidden`, full-width header)
- FixedDuplicate user name in public header; email hidden in public user menu
- FixedLighter news ticker text on dark top bar
Version 2.1.31
- AddedWebsite public page translations for **all 15 locales** (410 JSON files merged via `scripts/generate-messages.js`)
- AddedFull `public/assets` copy from website (images, frame SVGs, lottie, videos)
- AddedError `MISSING_MESSAGE` on public pages (like `ContactUsPage.ContactSchema`)
- AddedGeneral layout side white box — full width layout like website
- Changed`npm run dev` / `build` auto-run `generate:messages` before Next.js
- Fixed`MISSING_MESSAGE` errors on public pages (e.g. `ContactUsPage.ContactSchema`, SEO metadata namespaces)
- FixedPublic layout white side gap — full-width layout matching website (`PublicSiteLayout`)
Version 2.1.30
- AddedMigrated **76 public pages** from `apps/website` (aboutus, services, products, trainings, blog, FAQ, etc.)
- AddedWebsite footer (5 columns, trust badges, dynamic social links from API)
- AddedWebsite header dropdown menus (Services, Cloud, Products, Training) with animations
- AddedPersian localized URL slugs via `next-intl` pathnames (copied from website)
- AddedFull dynamic sitemap from API indexable pages
- ChangedDefault dev/prod port **3000** (Docker prod maps host **80** → container 3000)
- Changed`vercel.json` for Vercel deployment; `.env.example` synced with docker env examples
Version 2.1.29
- AddedPublic site layout (header, news ticker, nav dropdowns, cart badge, language + theme toggle)
- AddedPublic pages: home (empty hero), about, contact, cart
- AddedAuth pages use public layout; console panel keeps private `MasterLayout`
- AddedDynamic sitemap.xml and Google-standard robots.txt
- AddedSEO metadata loaded from API per page/locale
- Added`modules/public` — cart Redux slice, API clients, i18n `PublicSite` namespace
- Changed`/` and `/{locale}` route to public home instead of dashboard redirect
Version 2.1.28
Version 2.1.27
Version 2.1.26
- AddedIranian national ID validation on financial profile (format, checksum, issuance place via `@persian-tools/persian-tools`)
- AddedWallet top bar shows USD for non-Persian locales (IRR converted for display)
- AddedComplete locale message files merged from Persian/English base for all 15 languages
- AddedMulti-step registration: ID → OTP → Profile (Name + Password + Confirm Password + Random Password)
- AddedTwo-step login after password if enabled in settings
- AddedBlocking social login for Farsi users until the Farsi name is completed
- AddedDiscount code modal from wallet menu
- ChangedProfile page subtitle shows display name only (role hidden)
- ChangedAll MUI text fields use uniform 47px height
- ChangedAccount settings sidebar menu: label before icon
- ChangedFinancial profile: `کد ملی` label for Persian, citizen ID number for other locales
- ChangedAccount settings menu: text before the icon
- ChangedFinancial details: label "national code" for Farsi and "national number/citizenship code" for other languages
- ChangedSecurity log: country/device model/operating system/full browser + solar date and Farsi numbers
- ChangedShort bio: 500 character limit with counter
- ChangedTrue 2FA in account settings
- ChangedFixed InputProps error in notification settings
- FixedProfile save (`PUT /users/me`) no longer returns 400 when sending camelCase or snake_case fields
- FixedMissing translation namespaces (`Topbar`, `AccountSettings`, etc.) for non-fa/en locales
Version 2.1.25
- AddedPWA support via Serwist (manifest, service worker, offline fallback `/~offline`)
- AddedMobile install banner (fade from top) linking to `/console/pwa-install` guide
- AddedPWA install guide with "Install now" button (beforeinstallprompt)
- AddedOffline status banner below mobile verification (localized offline/reconnected messages)
- AddedFooter credit: designed with heart at Abrecode
Version 2.1.24
- AddedPersian digit formatting helper (`formatLocaleNumber`) for dashboard widgets and notification badge counts
- AddedNotification click navigates to security activity log with highlighted matching entry
- AddedRandom password generator icon inside password field (next to visibility toggle)
- ChangedDashboard: welcome message moved above widgets; removed quick access, account info, and recent activity widgets
- ChangedTransactions widget button links to `/console/finance/transactions`
- ChangedTop bar uses LTR layout for non-RTL locales (e.g. English)
- ChangedTop bar search bar: larger padding, background, and font size aligned with notification dropdown
- ChangedSignup dark mode: all text white, OTP slots with white borders
- ChangedPrimary sidebar icons white in dark mode
- ChangedOTP input accepts Persian digits; resend countdown shows Persian numbers for `fa` locale
Version 2.1.20
- AddedWallet top-up pages with tabs: direct payment, auto recharge, installment, bank deposit
- AddedGift code modal on deposit pages (credits wallet via API)
- AddedLocale-based payment: IRR/Zibal for Persian, USD/Stripe for other languages
- AddedCreate menu dropdown: wallet deposit, gift code, new ticket, my tickets
Version 2.1.19
- AddedProfile avatar upload/delete via API (350px circle, no URL field)
- AddedEmail verification OTP on profile for mobile-signup users
- AddedRandom password generator on profile page
- AddedShort bio textarea with 500-word counter
- AddedTopbar page search (desktop), tooltips on all icons
- AddedNotification text localized by user locale (client + API)
- ChangedVerified email/mobile fields locked with green border; support ticket message
- ChangedFull-width page cards; search removed from secondary sidebar
- ChangedDark mode: header/sidebar primary rail colors aligned with site theme
Version 2.1.18
Version 2.1.17
- AddedTopbar redesign: create menu, app grid, search, terminal, theme toggle, calculator, chat, support, language switcher
- AddedWallet balance widget (dynamic from API) with finance dropdown and linked pages
- AddedNotifications bell with unread badge and scrollable dropdown list
- AddedFinance placeholder pages: gift code, discount code, discounts, management, financial profile, invite friends
- ChangedAuth menu wallet links point to `/console/finance/wallet`
Version 2.1.16
Version 2.1.15
Version 2.1.14
Version 2.1.13
Version 2.1.12
Version 2.1.11
Version 2.1.9
Version 2.1.8
- ChangedSecond menu: right alignment and right alignment for Farsi/Arabic/Kurdish
- ChangedSearch: only page names when typing; No display of URL path
- ChangedMUI direction based on active language
- FixedSecondary sidebar menu: RTL layout and right-aligned text for Persian/Arabic/Kurdish locales
- FixedPage search: dropdown shows page titles only (no paths); results appear only while typing
- FixedMUI theme direction follows active locale (RTL/LTR)
Version 2.1.7
- ChangedMenu Search: Results are displayed with Popper outside the sidebar (fix dropdown clipping)
- ChangedFixed search index and multi-word matching
- FixedSidebar page search: dropdown rendered via MUI Popper (portal) so results are not clipped by sidebar overflow
- FixedSearch index uses correct `Menu`/`Profile` i18n namespaces; multi-token matching
Version 2.1.6
- Added`POST /support/tickets/:id/reopen` (user reopen closed ticket)
- ChangedSupport tickets: localized validation, priorities, status badges (color-coded), priority column
- ChangedTicket create: file attachments (up to 5), localized form errors
- ChangedTicket list: close/reopen actions; ticket detail: threaded reply UI with distinct user/support styling
- FixedSidebar page search: synced with menu routes, locale-aware navigation (`@/i18n/navigation`)
- FixedMobile secondary menu: smaller items to prevent overflow
Version 2.1.5
Version 2.1.4
- Added`src/core/mui/MuiInput.tsx` and `core/mui/index.ts`
- AddedDocs: `docs/en/04-mui-components.md`, `docs/fa/04-mui-components.md`
- ChangedMigrated text inputs and buttons to Material UI (MUI): auth forms, profile, search, global `Input`/`Button` wrappers
- Changed`AuthFormField` uses `FormikMuiTextField` with password toggle
- Changed`ConsolePageSearch` and header toolbar use MUI TextField + list actions
Version 2.1.3
- ChangedForgot password: three-step flow (request → OTP verify → new password)
- ChangedSignup OTP notifications: check email / resend messages
- ChangedForgot password: request → verify code → new password (separate)
- ChangedRegistration and resending OTP notification
- FixedPrimary sidebar menu click now switches secondary submenu immediately
- FixedAccordion menu no longer blocks navigation Link clicks
Version 2.1.2
Version 2.1.1
Version 2.1.0
- AddedSocial login: Google, GitHub, Facebook, X via `POST /api/v1/auth/social`
- AddedMenu **Front desk** (پیشخان) as default: dashboard + security reports
- AddedTraining menu: courses (purchased cards), online sessions, certificates, instructors
- AddedFinance menu: invoices, transactions, wallet, withdraw, deposit (UI placeholders)
- AddedOAuth API routes: `/api/social/[provider]`, `/api/social/callback` (Google, GitHub, Facebook, X)
- ChangedRenamed user-facing `Admin*` components to `User*` (avatar, profile, menu)
- ChangedDefault active sidebar section: `frontDesk`
- ChangedHeader toolbar uses `UserMenu` with session data