PluginProbe
ووسلام – همگام سازی ووکامرس و باسلام / 1.10.23
ووسلام – همگام سازی ووکامرس و باسلام v1.10.23
1.10.23 1.10.22 1.10.21 1.10.19 1.10.20 1.10.18 1.10.17 1.10.15 1.10.14 1.10.13 1.10.12 1.10.10 1.10.9 1.10.8 1.10.7 1.10.6 1.10.5 1.10.4 1.10.3 1.10.2 1.10.1 1.10.0 1.9.2 1.9.1 1.9.0 All 56 releases
sync-basalam / CHANGELOG.md

CHANGELOG.md in ووسلام – همگام سازی ووکامرس و باسلام 1.10.23, at CHANGELOG.md

800 lines 24.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 # Changelog
2
3 <details>
4
5 <summary>1.10.23 - 2026-09-28</summary>
6
7 ### Added
8 - Request the `vendor.financial.read` and `vendor.financial.write` scopes when connecting to Basalam
9
10 ### Changed / Improved
11 - Blur and lock the financial management page when a financial API request returns HTTP 403, with a direct button to reconnect to Basalam
12
13 ### Note
14 - Existing connections must reauthenticate to grant the new financial scopes
15
16 </details>
17
18 <details>
19
20 <summary>1.10.22 - 2026-09-27</summary>
21
22 ### Added
23 - Added an optional recurring full product update every 24 or 48 hours, configured beside the product sync control; new and existing stores default to 48 hours and can turn the schedule off
24
25 ### Changed / Improved
26 - Automatic product connection now searches for safe title matches among Basalam products after scanning the vendor catalog
27 - Aligned the dashboard controls and advanced settings on narrow screens, and centered the add and update product dialogs at matching mobile sizes
28
29 ### Fixed
30 - The product update dialog now reads live queue status when opened and while visible, clearing completed-job messages without a page reload
31 - Empty-queue probes no longer hold the async dispatch lease, so newly created jobs can start promptly while shutdown dispatch continues to repair the database connection
32
33 </details>
34
35 <details>
36
37 <summary>1.10.21 - 2026-09-17</summary>
38
39 ### Fixed
40 - "All fields" and "price & stock" update modes always send one complete product request with the variants array (without Basalam variation ids), matching earlier major versions; the dedicated variation endpoint is only used in "custom" mode with the variation price/stock fields enabled
41 - Product updates now recover automatically when WooCommerce contains stale Basalam variation IDs, rebuilding and saving the current variation mapping instead of repeatedly failing with HTTP 404
42 - Commission lookup now uses Basalam's product-specific commission API for products already connected to Basalam; new or unconnected products continue to use category-based commission lookup, with product commission responses cached during the sync request
43
44 </details>
45
46 <details>
47
48 <summary>1.10.20 - 2026-09-17</summary>
49
50 ### Fixed
51 - Basalam authorization callbacks no longer fail when Redis or Memcached drops the temporary OAuth marker; the single-use authorization proof is now carried in a signed, time-limited HttpOnly cookie
52
53 </details>
54
55 <details>
56
57 <summary>1.10.19 - 2026-09-17</summary>
58
59 ### Changed / Improved
60 - Single-product update jobs now run before bulk and full-update coordinator jobs
61
62 </details>
63
64 <details>
65
66 <summary>1.10.18 - 2026-09-12</summary>
67
68 ### Fixed
69 - Public plugin metadata, help, terms, and privacy links now use the live canonical Hamsalam and Basalam URLs instead of the retired `wp.hamsalam.ir` host
70 - Product create and update requests now retry once without product or variation SKUs when Basalam rejects a duplicate SKU
71
72 </details>
73
74 <details>
75
76 <summary>1.10.17 - 2026-09-09</summary>
77
78 ### Fixed
79 - Async job dispatch runs during shutdown again, keeping queue probes and loopback requests out of the storefront response path
80 - The dispatch lease is reserved before checking the queue, preventing concurrent requests from launching duplicate async runners
81
82 </details>
83
84 <details>
85
86 <summary>1.10.16 - 2026-09-08</summary>
87
88 ### Fixed
89 - Installing a newer plugin package now clears the previous version's force-update gate, allowing migrations, hooks, and the background jobs runner to start normally
90 - Hotfix builds newer than the latest published package are no longer disabled when the version API has not registered them yet
91
92 </details>
93
94 <details>
95
96 <summary>1.10.15 - 2026-09-08</summary>
97
98 ### Fixed
99 - Large product queues no longer spawn overlapping AJAX runners from normal site traffic; one runner now owns the entire processing batch and duplicate workers exit immediately
100 - Async runner dispatches are leased for 25 seconds instead of one second, preventing PHP worker exhaustion and storefront 503/504 errors during full or quick product updates
101 - Installing a newer plugin package now clears the previous version's force-update gate, allowing migrations, hooks, and the background jobs runner to start normally
102 - Hotfix builds newer than the latest published package are no longer disabled when the version API has not registered them yet
103
104 </details>
105
106 <details>
107
108 <summary>1.10.14 - 2026-09-08</summary>
109
110 ### Added
111 - Product SKUs are now sent to Basalam when creating or updating products, and variation SKUs are sent with variant payloads and per-variation updates; a new "کد �
112 حصول (SKU)" option controls the field in custom update mode (enabled by default)
113
114 ### Fixed
115 - The async job runner now dispatches from init instead of shutdown, avoiding database "commands out of sync" errors caused by unread result sets left by other shutdown callbacks
116
117 </details>
118
119 <details>
120
121 <summary>1.10.13 - 2026-09-01</summary>
122
123 ### Added
124 - Added a manual vendor-status recheck button to inactive-vendor notices so store owners can immediately restore synchronization after reactivating their Basalam booth
125
126 ### Changed / Improved
127 - Local environments now bypass vendor-status checks and inactive-vendor restrictions; the daily vendor-status cron is also unscheduled locally
128 - The category detection endpoint now uses API v2.0 while preserving the existing response consumer contract
129
130 </details>
131
132 <details>
133
134 <summary>1.10.12 - 2026-08-29</summary>
135
136 ### Fixed
137 - Restored the AJAX click handlers for product update, archive, restore, and disconnect actions on the WooCommerce product editor
138
139 ### Changed / Improved
140 - The authenticated Woosalam chat widget now loads on every WordPress admin screen while other Woosalam assets remain scoped to their relevant pages
141
142 </details>
143
144 <details>
145
146 <summary>1.10.11 - 2026-08-26</summary>
147
148 ### Fixed
149 - Product media MIME types are now detected from the actual file contents before checking the filename extension
150 - Non-standard image MIME aliases such as `image/jpg`, `image/pjpeg`, and vendor-specific PNG/BMP values are normalized to the canonical values accepted by Basalam Uploadio
151 - The media upload request and multipart file transfer now use the same canonical MIME type, preventing valid JPEG images from failing with a `422` unsupported-MIME response
152
153 </details>
154
155 <details>
156
157 <summary>1.10.10 - 2026-08-25</summary>
158
159 ### Added
160 - Added a daily vendor-status check with persistent inactive-duration tracking and automatic recovery when the vendor becomes active again
161 - Added state-specific admin notices, dashboard badges, disabled controls, and explanatory UI for limited and suspended synchronization modes
162
163 ### Changed / Improved
164 - Vendors inactive for less than 21 days can no longer create products; manual, bulk, queued, and automatic updates are restricted to price and stock
165 - Vendors inactive for 21 days or longer can no longer create, update, archive, restore, or discount products until the vendor becomes active again
166 - Product jobs revalidate the vendor policy at execution time so queued work cannot bypass a later status change
167 - Improved background job dispatch and limited admin assets and notices to relevant Woosalam, product, and order screens
168 - Aligned the connection-status header, card, and inner synchronization panel across active and inactive states
169
170 </details>
171
172 <details>
173
174 <summary>1.10.9 - 2026-08-16</summary>
175
176 ### Fixed
177 - The ticket reply access form is now shown only after site access is rejected; it stays hidden while access is pending, after approval, and when the status is missing or unknown
178
179 </details>
180
181 <details>
182
183 <summary>1.10.8 - 2026-08-15</summary>
184
185 ### Added
186 - Added independent settings for updating variation prices and variation stock
187
188 ### Changed / Improved
189 - Connected variations are now updated individually through Core v4
190 - Price-only variation updates send only `primary_price`, while stock-only updates send only `stock`
191 - Variation price updates work independently from the product price setting
192 - Custom update mode now requires at least one selected field and shows the plugin error toast without refreshing the page when none is selected
193 - Full, quick, selected, and automatic updates no longer create jobs or API requests when the custom field selection is empty
194 - Product admin JavaScript now uses a file-aware cache version so the latest validation behavior is loaded immediately after deployment
195
196 </details>
197
198 <details>
199
200 <summary>1.10.7 - 2026-08-11</summary>
201
202 ### Fixed
203 - Ticket validation and API failures are now shown as admin toasts instead of WordPress `admin-post.php` error pages
204 - New-ticket submissions now use AJAX, preserving entered text, credentials, and uploaded-image previews when a request fails; if the ticket was created before access storage failed, retrying updates only the access data and does not create a duplicate ticket
205 - Ticket JavaScript now uses a file-aware cache version so updated validation and submission behavior is loaded immediately after deployment
206
207 </details>
208
209 <details>
210
211 <summary>1.10.6 - 2026-08-11</summary>
212
213 ### Fixed
214 - Product images in AVIF or another image format unsupported by Basalam are now converted to JPEG before the upload request, preventing the `422` unsupported-MIME error
215 - Temporary downloaded and converted product-image files are removed after both successful and failed uploads; when the server cannot decode the source format, the plugin now returns an actionable error instead of sending an invalid MIME type to Basalam
216 - A copied product no longer inherits *any* Woosalam data from the product it was copied from — not the Basalam connection, and not the per-product settings (video, custom price change, gold/mobile fields, product type and value, wholesale, discount flag). Every `sync_basalam_*` / `_sync_basalam_*` meta on the duplicate and its variations is stripped before WooCommerce saves the duplicate (`woocommerce_duplicate_product_exclude_meta`), cleaned again after duplication, and also cleaned for copies made by third-party duplicate plugins (`dp_duplicate_post`, `dp_duplicate_page`, `duplicate_post_post_copy`). Individual keys can be kept via the `sync_basalam_duplicate_purge_meta_keys` filter
217 - Disconnecting a product now removes the connection meta of every vendor id (previously only the currently configured vendor's keys were removed, so a stale, hard to find key could stay in the database) and clears `sync_basalam_variation_id` from all variations, not only from products currently typed as variable
218 - No product data, status change, or discount is sent to Basalam while two or more WooCommerce products share one Basalam product id. The operation is stopped with a clear message instead of overwriting the wrong Basalam product (this is what made old prices and old stock reappear on Basalam)
219 - Products with an empty Basalam product id no longer produce a malformed update request
220
221 ### Added
222 - A one-time repair on update that finds WooCommerce products sharing a Basalam product id, keeps the connection on the oldest (original) product, disconnects the copies, and reports the result in an admin notice and the plugin log
223
224 </details>
225
226 <details>
227
228 <summary>1.10.5 - 2026-08-05</summary>
229
230 ### Changed / Improved
231 - Limited bulk product update API requests to a maximum of five per minute without reducing the execution rate of other background jobs
232
233 </details>
234
235 <details>
236
237 <summary>1.10.4 - 2026-08-04</summary>
238
239 ### Fixed
240 - Preserved complete URLs in new ticket messages, ticket replies, and optional access-information fields, including percent-encoded URL segments that WordPress text sanitization previously removed
241 - Updated ticket media uploads to send `type=ticket_item` and `collection=IMAGE` as multipart form fields to the `/media` endpoint, and fixed the upload service to return the API response
242
243 </details>
244
245 <details>
246
247 <summary>1.10.3 - 2026-07-22</summary>
248
249 ### Changed / Improved
250 - "Price increase" became "price change" everywhere (code, markup, CSS classes): negative values are supported, so e.g. `-10` lowers the final Basalam price by 10% (percentages are capped at 35% increase and 35% decrease; values outside the -100..100 range are fixed Toman amounts)
251 - The global setting key was renamed from `increase_price_value` to `price_change_value`, and the per-product meta from `_sync_basalam_increase_price_value` to `_sync_basalam_price_change_value`. Old values are not migrated — re-enter the price change in the settings
252 - The category-commission mode is now stored as `commission` instead of `-1`, so it no longer collides with a real negative percentage
253
254 ### Added
255 - A "custom price change" field in the Basalam product settings tab and in the products list bulk edit, so a single product or a selection of products can override the global value (or switch to category commission)
256
257 </details>
258
259 <details>
260
261 <summary>1.10.2 - 2026-07-19</summary>
262
263 ### Changed / Improved
264 - Migrated product photo and video uploads from the legacy direct upload endpoint to Uploadio's presigned media flow
265 - Added SHA-256 metadata, direct staging upload, completion handling, and status polling so product payloads receive the final Basalam media ID and URL
266 - Ensured temporary remote media files are removed after both successful and failed uploads
267 - Streamed remote media downloads and multipart uploads with size-aware limits and timeouts to support large product videos without buffering the entire file in PHP memory
268
269 </details>
270
271 <details>
272
273 <summary>1.10.1 - 2026-07-13</summary>
274
275 ### Fixed
276 - When Basalam rejects a product create/update with `422` because the description contains forbidden content (social-network names, page/channel mentions, etc.), the plugin now extracts the flagged phrases — highlighted inside `<em>...</em>` in the response `snippet` — strips them from the description, and automatically retries (up to 3 times). Previously the sanitizer looked for a non-existent `value` field, so nothing was removed and the retry never helped
277
278 </details>
279
280 <details>
281
282 <summary>1.10.0 - 2026-07-11</summary>
283
284 ### Added
285 - Merged the "Woosalam Plus" add-on into the core plugin as a built-in "Financial Management" section: view store balance, active settlement requests, settlement history, and submit settlement requests to wallet or bank account
286 - Added the `customer.identity.read` scope to the Basalam OAuth connection request (required to fetch the user's bank account list in the settlement flow)
287
288 ### Note
289 - Users who connected to Basalam before this release must reconnect ("Connect to Basalam") once so the new scope is granted before the bank-account settlement feature works
290
291 </details>
292
293 <details>
294
295 <summary>1.9.2 - 2026-07-08</summary>
296
297 ### Security
298 - Fixed a CSRF vulnerability in the Basalam OAuth callback (`basalam-save-token`) that could let a forged request overwrite the stored connection credentials; the callback now requires a single-use, time-limited authorization that the admin actively started, and the "connect to Basalam" links go through a nonce-protected request
299 - Hardened output escaping across admin pages, templates and exception messages (esc_html/esc_attr)
300 - Switched internal redirects to wp_safe_redirect and documented direct custom-table queries
301
302 ### Changed / Improved
303 - Tested up to WordPress 7.0
304
305 </details>
306
307 <details>
308
309 <summary>1.9.1 - 2026-06-30</summary>
310
311 ### Fixed
312 - show check-orders button and vertically center its content on mobile/tablet
313
314 </details>
315
316 <details>
317
318 <summary>1.9.0 - 2026-06-21</summary>
319
320 ### Added
321 - add gold product type with purity and weight attributes
322 - add preparation days management for product categories
323
324 ### Fixed
325 - decrease min pkg weight
326
327 </details>
328
329 <details>
330
331 <summary>1.8.8 - 2026-05-18</summary>
332
333 ### Fixed
334 - fix City/state mapping with persian shiping woo
335 - increase count of photo limit
336
337
338 </details>
339
340 <details>
341
342 <summary>1.8.7 - 2026-05-16</summary>
343
344 ### Added
345 - Product video upload support (VideoService, VideoField, VideoSourceResolver)
346 - Circuit breaker alert notifications
347 - replace toast with alert()
348 - Limit on increase precent(max 35%)
349 - Migration 1.8.7
350
351 ### Fixed
352 - Improved file upload, lock manager, and API response handling
353
354 </details>
355
356 <details>
357
358 <summary>1.8.5,1.8.6 - 2026-05-10</summary>
359
360 ### Fixed
361 - deduplictaion orders
362 - fix stuck-processing
363
364 </details>
365
366 <details>
367
368
369 <details>
370
371 <summary>1.8.4 - 2026-05-03</summary>
372
373 ### Fixed
374 - Circuit Breaker mechanism
375
376 </details>
377
378 <details>
379
380 <summary>1.8.3 - 2026-05-03</summary>
381
382 ### Added
383 - Added bulk edit support for wholesale settings, product type, and custom price increase
384 - Added per-product custom price increase support
385 - Added an information API endpoint to improve AI agent support in `admin.hamsalam.ir`
386
387 ### Changed / Improved
388 - Added automatic order creation in status change events when the order does not already exist
389 - Clear saved token on `401 Unauthorized` responses from `*.basalam.com` requests
390 - Show an error when required Woosalam domains are blocked
391 - Prevent task execution when required Woosalam domains are blocked
392
393 ### Fixed
394 - Fixed user-reported issues
395
396 </details>
397
398 <details>
399
400 <summary>1.8.2 - 2026-04-04</summary>
401
402 ### Added
403 - Photo and weight validator for products
404 - Filter hook for contact-us section visibility
405 - Prefix and suffix to product title for category detection
406
407 ### Fixed
408 - Fetch current vendor info without cache
409 </details>
410
411 <details>
412
413 <details>
414
415 <summary>1.8.1 - 2026-03-07</summary>
416
417 ### Added
418 - basalam Chat widget
419
420 </details>
421
422 <details>
423
424 <summary>1.8.0 - 2026-03-05</summary>
425
426 ### Changed / Improved
427 - Introduced an internal DI container (`ContainerInterface`, `Container`, `ServiceProviderInterface`) and centralized service provider wiring.
428 - Added `syncBasalamContainer()` and migrated `syncBasalamPlugin()` / `syncBasalamSettings()` to container-backed access.
429 - Migrated core hotspots from direct instantiation to container resolution:
430 - `ApiServiceManager`
431 - `ProductOperations`
432 - `JobManager`
433 - class-level settings access
434 - Refactored job subsystem wiring for constructor-based dependencies (`AbstractJobType`, job types, `JobRegistry`, `JobsRunner`, `DiscountTaskScheduler`).
435 - Updated action and registrar edges to resolve handlers/listeners via container.
436 - Removed legacy singleton-style accessors in core services and standardized on container-first resolution.
437 - add unInstall
438 - Added dashboard data retrieval in tickets
439 - Added `vendor_id` suffix to product `postmeta`
440 - Added selectable stock priority for variable products
441 - Added a Circuit Breaker mechanism
442
443
444
445 ### Added
446 - Container-backed settings access via `SettingsContainer`.
447
448 </details>
449
450 <details>
451
452 <summary>1.7.9 - 2026-02-25</summary>
453
454 ### Changed / Improved
455 - Added plugin version to all admin CSS/JS enqueue calls for proper cache busting
456
457 </details>
458
459
460 <details>
461
462 <summary>1.7.8 - 2026-02-21</summary>
463
464 ### Added
465 - retry system for jobs
466 - Added announcements section
467 - Added file upload capability in tickets
468 - Added discount reduction percentage setting
469 - Added ability to fetch and sync Basalam orders up to the last 30 days
470 - Added customer name prefix/suffix settings for Basalam orders
471 - Added onboarding section to Woosalam
472
473 ### Changed / Improved
474
475 - Remove Product Operation type
476 - change fetch unsync orders structure
477 - Switched product list fetching from paginate-based API to cursor-based API
478 - Skip webhook creation when the site domain is localhost
479 - Made Woosalam addonable/extensible
480 - Categorized plugin settings
481
482 ### Fix
483 - Fixed ticket links issues
484 - Fixed duplicated products issue
485 - Fixed null value being sent to Basalam on duplicated product disconnect/update flow
486
487 </details>
488
489 <details>
490
491 <summary>1.7.7 - 2026-02-07</summary>
492
493 ### Changed / Improved
494
495 - Enhanced Performance and Security in Ticket Logics
496 - Don't send null value in update product at basalam
497
498 </details>
499
500
501 <details>
502
503 <summary>1.7.6 - 2026-02-01</summary>
504
505 ### Fix
506
507 - Remove Unused Migration
508
509 </details>
510
511 <details>
512
513 <summary>1.7.5 - 2026-01-26</summary>
514
515 ### Added
516
517 - Added Ticketing feature
518
519 </details>
520
521 <details>
522
523 <summary>1.7.4 - 2026-01-6</summary>
524
525 ### Fixed
526
527 - Fix Bugs
528
529 </details>
530
531 <details>
532
533 <summary>1.7.3 - 2025-12-27</summary>
534
535 ### Fixed
536
537 - Fix Bugs
538
539 </details>
540
541 <details>
542
543 <summary>1.7.2 - 2025-12-24</summary>
544
545 ### Fixed
546
547 - Compatibity beetwin HPOS and Legay System
548 - Fix webhook handling and authorization in WebhookService
549
550 </details>
551
552 <details>
553
554 <summary>1.7.1 - 2025-12-23</summary>
555
556 ### Fixed
557
558 - Add Missed Files
559
560 </details>
561
562
563 <details>
564
565 <summary>1.7.0 - 2025-12-20</summary>
566
567 ### Added
568
569 - Added PSR-4 autoloading structure for better code organization
570
571 ### Changed / Improved
572
573 - Enhanced plugin code structure and performance optimizations
574 - Added detailed order information display on orders page
575 - Improved category ID retrieval with reverse order output
576
577 ### Fixed
578
579 - Fixed commission calculation issues
580 - Fixed order fetching problems
581 - Fixed Persian WooCommerce Shipping plugin compatibility issues
582
583 </details>
584
585 <details>
586 <summary>1.6.1 - 2025-12-6</summary>
587
588 ### Changed / Improved
589 - Handle cursor for get order lists
590
591 ### Fixed
592 - don't send request to core.basalam.com
593 - add reduce/increase stock action for woosalam order statuses
594
595 </details>
596
597 <details>
598 <summary>1.6.0 - 2025-12-1</summary>
599 ### Changed / Improved
600 - Added automatic shipping method detection and auto-saving of the shipping name and cost in WooCommerce orders
601
602 </details>
603
604 <details>
605 <summary>1.5.9 - 2025-11-27</summary>
606
607 ### Fixed
608
609 - Add missing default settings to database and return default for single missing setting
610 - Handle customer names without spaces
611 - Correct Persian WooCommerce path
612
613 ### Refactored
614
615 - Simplify check if Persian WooCommerce Shipping plugin is active
616
617 </details>
618
619 <details>
620 <summary>1.5.8 - 2025-11-18</summary>
621
622 ### Changed / Improved
623
624 - Improved batch product update functionality
625 - Enhanced complete product update process
626
627 </details>
628
629 <details>
630 <summary>1.5.7 - 2025-11-17</summary>
631
632 ### Added
633
634 - Added compatibility with Tappin
635 - Added support for currency units irht and irhr
636
637 ### Changed / Improved
638
639 - Implemented automatic price rounding for Basalam compatibility
640 - Changed product enqueue structure from offset-based to ID-based
641 - Made WooCommerce order creation process atomic
642
643 ### Fixed
644
645 - Fixed job manager functionality and proper task execution
646
647 </details>
648
649 <details>
650 <summary>1.5.5 - 2025-11-15</summary>
651
652 ### Changed / Improved
653
654 - Optimized fetch creatable products query using direct SQL for better performance
655 - Improved API service manager to properly decode JSON responses
656 - Enhanced update job detection logic to avoid false positive job status checks
657
658 ### Fixed
659
660 - Fixed API response handling by properly decoding JSON data
661 - Removed commented-out legacy code from plugin initialization
662 - Fixed quick update job status detection in admin dashboard
663 - Resolved duplicate job checking that was causing incorrect "in progress" states
664
665 </details>
666
667 <details>
668 <summary>1.5.4 - 2025-11-6</summary>
669
670 ### Added
671
672 - Migration system for version 1.5.4
673
674 ### Changed / Improved
675
676 - Enhanced onboarding styles and UI improvements
677 - Improved category fetching process with better error handling
678 - Enhanced file uploader service functionality
679 - Optimized product update process
680
681 ### Fixed
682
683 - Fixed error handling in product update service
684 - Removed deprecated photo ban status service
685 - Fixed category mapping page display and functionality
686 - Improved product meta box data handling
687 - Fixed issues in get product data service
688
689 </details>
690
691 <details>
692 <summary>1.5.3 - 2025-10-25</summary>
693
694 ### Fixed
695
696 - Fixed some bugs
697
698 </details>
699
700 <details>
701 <summary>1.5.0 - 2025-10-04</summary>
702
703 ### Added
704
705 - Key-value storage system for plugin settings
706 - Option to select sale price display style (strikethrough or sale price only)
707 - Automatic log file cleanup (weekly)
708 - Manual and automatic task execution rate control (tasks per minute)
709
710 ### Changed / Improved
711
712 - Removed WP Cron dependency for better performance
713 - Enhanced task scheduling system
714
715 ### Fixed
716
717 - Removed invalid variations from product data
718 - Fixed category attributes synchronization issue
719 - Fixed sale price validation before applying
720 - Resolved migration 1.4.0 issues
721
722 </details>
723
724 <details>
725 <summary>1.4.0 - 2025-09-12</summary>
726
727 ### Added
728
729 - Manual product category mapping
730 - Strikethrough pricing for products
731 - Add products from Digikala (Pro version)
732 - Create a free store (Pro version)
733
734 ### Changed / Improved
735
736 - Plugin structure optimization
737
738 ### Fixed
739
740 - Fixed reported issues
741
742 </details>
743
744 <details>
745 <summary>1.3.0 - 2025-07-23</summary>
746
747 ### Added
748
749 - Option to choose operation execution method (AJAX and Queue)
750 - Manual order fetching
751 - Cancel orders
752 - Fetch order changes from Basalam and apply them to WooCommerce orders
753
754 ### Fixed
755
756 - Fixed reported issues
757
758 </details>
759
760 <details>
761 <summary>1.2.0 - 2025-06-27</summary>
762
763 ### Added
764
765 - Bulk product addition
766 - Bulk product update
767 - Auto order confirmation
768
769 ### Fixed
770
771 - Fixed issues reported in previous version
772
773 </details>
774
775 <details>
776 <summary>1.1.0 - 2025-02-13</summary>
777
778 ### Added
779
780 - Automatic fetching and creation of Basalam orders in WooCommerce
781 - Manage orders from WooCommerce (confirm order, request delay, ship order)
782 - Advanced settings for easier use
783
784 ### Fixed
785
786 - Fixed some issues from previous versions
787
788 </details>
789
790 <details>
791 <summary>1.0.0 - 2024-12-31</summary>
792
793 ### Added
794
795 - Add and update products individually and in bulk
796 - Automatic product synchronization
797 - Settings and logs page
798
799 </details>
800