PluginProbe
ووسلام – همگام سازی ووکامرس و باسلام / 1.10.28
ووسلام – همگام سازی ووکامرس و باسلام v1.10.28
1.10.28 1.1.26 1.10.27 1.10.24 1.10.25 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 All 61 releases
sync-basalam / CHANGELOG.md

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

858 lines 26.3 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.28 - 2026-10-06</summary>
6
7 ### Added
8 - Separate automatic product creation and update synchronization, with independent controls in the admin panel
9 - Split synchronization button with a shared toggle and detailed operation settings
10
11 </details>
12
13 <details>
14
15 <summary>1.10.27 - 2026-10-04</summary>
16
17 ### Changed / Improved
18 - Support comma-separated attribute names for product title suffixes, including Persian commas, while preserving the configured order and skipping empty, duplicate, or missing attribute names
19
20 </details>
21
22 <details>
23
24 <summary>1.10.26 - 2026-10-01</summary>
25
26 ### Added
27 - Show the Basalam product name as visible order item meta (`نا�
28 �
29 حصول در باسلا�
30 `) on WooCommerce orders, for both mapped products and the "not defined in your site" placeholder product
31 - Show a clickable link to the Basalam product page (`لینک �
32 حصول در باسلا�
33 `) as visible order item meta
34
35 </details>
36
37 <details>
38
39 <summary>1.10.25 - 2026-09-30</summary>
40
41 ### Changed / Improved
42 - Revoke the stored Basalam vendor authorization on upgrade so every store reconnects and grants the currently required scopes
43
44 ### Note
45 - Existing connections must reauthenticate after updating to this version
46
47 </details>
48
49 <details>
50
51 <summary>1.10.24 - 2026-09-30</summary>
52
53 ### Added
54 - Request the `vendor.product.read` scope when connecting to Basalam
55
56 ### Note
57 - Existing connections must reauthenticate to grant the new product read scope
58
59 </details>
60
61 <details>
62
63 <summary>1.10.23 - 2026-09-28</summary>
64
65 ### Added
66 - Request the `vendor.financial.read` and `vendor.financial.write` scopes when connecting to Basalam
67
68 ### Changed / Improved
69 - Blur and lock the financial management page when a financial API request returns HTTP 403, with a direct button to reconnect to Basalam
70
71 ### Note
72 - Existing connections must reauthenticate to grant the new financial scopes
73
74 </details>
75
76 <details>
77
78 <summary>1.10.22 - 2026-09-27</summary>
79
80 ### Added
81 - 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
82
83 ### Changed / Improved
84 - Automatic product connection now searches for safe title matches among Basalam products after scanning the vendor catalog
85 - Aligned the dashboard controls and advanced settings on narrow screens, and centered the add and update product dialogs at matching mobile sizes
86
87 ### Fixed
88 - The product update dialog now reads live queue status when opened and while visible, clearing completed-job messages without a page reload
89 - 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
90
91 </details>
92
93 <details>
94
95 <summary>1.10.21 - 2026-09-17</summary>
96
97 ### Fixed
98 - "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
99 - 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
100 - 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
101
102 </details>
103
104 <details>
105
106 <summary>1.10.20 - 2026-09-17</summary>
107
108 ### Fixed
109 - 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
110
111 </details>
112
113 <details>
114
115 <summary>1.10.19 - 2026-09-17</summary>
116
117 ### Changed / Improved
118 - Single-product update jobs now run before bulk and full-update coordinator jobs
119
120 </details>
121
122 <details>
123
124 <summary>1.10.18 - 2026-09-12</summary>
125
126 ### Fixed
127 - 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
128 - Product create and update requests now retry once without product or variation SKUs when Basalam rejects a duplicate SKU
129
130 </details>
131
132 <details>
133
134 <summary>1.10.17 - 2026-09-09</summary>
135
136 ### Fixed
137 - Async job dispatch runs during shutdown again, keeping queue probes and loopback requests out of the storefront response path
138 - The dispatch lease is reserved before checking the queue, preventing concurrent requests from launching duplicate async runners
139
140 </details>
141
142 <details>
143
144 <summary>1.10.16 - 2026-09-08</summary>
145
146 ### Fixed
147 - 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
148 - Hotfix builds newer than the latest published package are no longer disabled when the version API has not registered them yet
149
150 </details>
151
152 <details>
153
154 <summary>1.10.15 - 2026-09-08</summary>
155
156 ### Fixed
157 - 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
158 - 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
159 - 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
160 - Hotfix builds newer than the latest published package are no longer disabled when the version API has not registered them yet
161
162 </details>
163
164 <details>
165
166 <summary>1.10.14 - 2026-09-08</summary>
167
168 ### Added
169 - 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 "کد �
170 حصول (SKU)" option controls the field in custom update mode (enabled by default)
171
172 ### Fixed
173 - 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
174
175 </details>
176
177 <details>
178
179 <summary>1.10.13 - 2026-09-01</summary>
180
181 ### Added
182 - Added a manual vendor-status recheck button to inactive-vendor notices so store owners can immediately restore synchronization after reactivating their Basalam booth
183
184 ### Changed / Improved
185 - Local environments now bypass vendor-status checks and inactive-vendor restrictions; the daily vendor-status cron is also unscheduled locally
186 - The category detection endpoint now uses API v2.0 while preserving the existing response consumer contract
187
188 </details>
189
190 <details>
191
192 <summary>1.10.12 - 2026-08-29</summary>
193
194 ### Fixed
195 - Restored the AJAX click handlers for product update, archive, restore, and disconnect actions on the WooCommerce product editor
196
197 ### Changed / Improved
198 - The authenticated Woosalam chat widget now loads on every WordPress admin screen while other Woosalam assets remain scoped to their relevant pages
199
200 </details>
201
202 <details>
203
204 <summary>1.10.11 - 2026-08-26</summary>
205
206 ### Fixed
207 - Product media MIME types are now detected from the actual file contents before checking the filename extension
208 - 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
209 - 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
210
211 </details>
212
213 <details>
214
215 <summary>1.10.10 - 2026-08-25</summary>
216
217 ### Added
218 - Added a daily vendor-status check with persistent inactive-duration tracking and automatic recovery when the vendor becomes active again
219 - Added state-specific admin notices, dashboard badges, disabled controls, and explanatory UI for limited and suspended synchronization modes
220
221 ### Changed / Improved
222 - Vendors inactive for less than 21 days can no longer create products; manual, bulk, queued, and automatic updates are restricted to price and stock
223 - Vendors inactive for 21 days or longer can no longer create, update, archive, restore, or discount products until the vendor becomes active again
224 - Product jobs revalidate the vendor policy at execution time so queued work cannot bypass a later status change
225 - Improved background job dispatch and limited admin assets and notices to relevant Woosalam, product, and order screens
226 - Aligned the connection-status header, card, and inner synchronization panel across active and inactive states
227
228 </details>
229
230 <details>
231
232 <summary>1.10.9 - 2026-08-16</summary>
233
234 ### Fixed
235 - 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
236
237 </details>
238
239 <details>
240
241 <summary>1.10.8 - 2026-08-15</summary>
242
243 ### Added
244 - Added independent settings for updating variation prices and variation stock
245
246 ### Changed / Improved
247 - Connected variations are now updated individually through Core v4
248 - Price-only variation updates send only `primary_price`, while stock-only updates send only `stock`
249 - Variation price updates work independently from the product price setting
250 - Custom update mode now requires at least one selected field and shows the plugin error toast without refreshing the page when none is selected
251 - Full, quick, selected, and automatic updates no longer create jobs or API requests when the custom field selection is empty
252 - Product admin JavaScript now uses a file-aware cache version so the latest validation behavior is loaded immediately after deployment
253
254 </details>
255
256 <details>
257
258 <summary>1.10.7 - 2026-08-11</summary>
259
260 ### Fixed
261 - Ticket validation and API failures are now shown as admin toasts instead of WordPress `admin-post.php` error pages
262 - 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
263 - Ticket JavaScript now uses a file-aware cache version so updated validation and submission behavior is loaded immediately after deployment
264
265 </details>
266
267 <details>
268
269 <summary>1.10.6 - 2026-08-11</summary>
270
271 ### Fixed
272 - 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
273 - 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
274 - 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
275 - 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
276 - 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)
277 - Products with an empty Basalam product id no longer produce a malformed update request
278
279 ### Added
280 - 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
281
282 </details>
283
284 <details>
285
286 <summary>1.10.5 - 2026-08-05</summary>
287
288 ### Changed / Improved
289 - Limited bulk product update API requests to a maximum of five per minute without reducing the execution rate of other background jobs
290
291 </details>
292
293 <details>
294
295 <summary>1.10.4 - 2026-08-04</summary>
296
297 ### Fixed
298 - 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
299 - 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
300
301 </details>
302
303 <details>
304
305 <summary>1.10.3 - 2026-07-22</summary>
306
307 ### Changed / Improved
308 - "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)
309 - 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
310 - The category-commission mode is now stored as `commission` instead of `-1`, so it no longer collides with a real negative percentage
311
312 ### Added
313 - 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)
314
315 </details>
316
317 <details>
318
319 <summary>1.10.2 - 2026-07-19</summary>
320
321 ### Changed / Improved
322 - Migrated product photo and video uploads from the legacy direct upload endpoint to Uploadio's presigned media flow
323 - Added SHA-256 metadata, direct staging upload, completion handling, and status polling so product payloads receive the final Basalam media ID and URL
324 - Ensured temporary remote media files are removed after both successful and failed uploads
325 - 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
326
327 </details>
328
329 <details>
330
331 <summary>1.10.1 - 2026-07-13</summary>
332
333 ### Fixed
334 - 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
335
336 </details>
337
338 <details>
339
340 <summary>1.10.0 - 2026-07-11</summary>
341
342 ### Added
343 - 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
344 - 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)
345
346 ### Note
347 - 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
348
349 </details>
350
351 <details>
352
353 <summary>1.9.2 - 2026-07-08</summary>
354
355 ### Security
356 - 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
357 - Hardened output escaping across admin pages, templates and exception messages (esc_html/esc_attr)
358 - Switched internal redirects to wp_safe_redirect and documented direct custom-table queries
359
360 ### Changed / Improved
361 - Tested up to WordPress 7.0
362
363 </details>
364
365 <details>
366
367 <summary>1.9.1 - 2026-06-30</summary>
368
369 ### Fixed
370 - show check-orders button and vertically center its content on mobile/tablet
371
372 </details>
373
374 <details>
375
376 <summary>1.9.0 - 2026-06-21</summary>
377
378 ### Added
379 - add gold product type with purity and weight attributes
380 - add preparation days management for product categories
381
382 ### Fixed
383 - decrease min pkg weight
384
385 </details>
386
387 <details>
388
389 <summary>1.8.8 - 2026-05-18</summary>
390
391 ### Fixed
392 - fix City/state mapping with persian shiping woo
393 - increase count of photo limit
394
395
396 </details>
397
398 <details>
399
400 <summary>1.8.7 - 2026-05-16</summary>
401
402 ### Added
403 - Product video upload support (VideoService, VideoField, VideoSourceResolver)
404 - Circuit breaker alert notifications
405 - replace toast with alert()
406 - Limit on increase precent(max 35%)
407 - Migration 1.8.7
408
409 ### Fixed
410 - Improved file upload, lock manager, and API response handling
411
412 </details>
413
414 <details>
415
416 <summary>1.8.5,1.8.6 - 2026-05-10</summary>
417
418 ### Fixed
419 - deduplictaion orders
420 - fix stuck-processing
421
422 </details>
423
424 <details>
425
426
427 <details>
428
429 <summary>1.8.4 - 2026-05-03</summary>
430
431 ### Fixed
432 - Circuit Breaker mechanism
433
434 </details>
435
436 <details>
437
438 <summary>1.8.3 - 2026-05-03</summary>
439
440 ### Added
441 - Added bulk edit support for wholesale settings, product type, and custom price increase
442 - Added per-product custom price increase support
443 - Added an information API endpoint to improve AI agent support in `admin.hamsalam.ir`
444
445 ### Changed / Improved
446 - Added automatic order creation in status change events when the order does not already exist
447 - Clear saved token on `401 Unauthorized` responses from `*.basalam.com` requests
448 - Show an error when required Woosalam domains are blocked
449 - Prevent task execution when required Woosalam domains are blocked
450
451 ### Fixed
452 - Fixed user-reported issues
453
454 </details>
455
456 <details>
457
458 <summary>1.8.2 - 2026-04-04</summary>
459
460 ### Added
461 - Photo and weight validator for products
462 - Filter hook for contact-us section visibility
463 - Prefix and suffix to product title for category detection
464
465 ### Fixed
466 - Fetch current vendor info without cache
467 </details>
468
469 <details>
470
471 <details>
472
473 <summary>1.8.1 - 2026-03-07</summary>
474
475 ### Added
476 - basalam Chat widget
477
478 </details>
479
480 <details>
481
482 <summary>1.8.0 - 2026-03-05</summary>
483
484 ### Changed / Improved
485 - Introduced an internal DI container (`ContainerInterface`, `Container`, `ServiceProviderInterface`) and centralized service provider wiring.
486 - Added `syncBasalamContainer()` and migrated `syncBasalamPlugin()` / `syncBasalamSettings()` to container-backed access.
487 - Migrated core hotspots from direct instantiation to container resolution:
488 - `ApiServiceManager`
489 - `ProductOperations`
490 - `JobManager`
491 - class-level settings access
492 - Refactored job subsystem wiring for constructor-based dependencies (`AbstractJobType`, job types, `JobRegistry`, `JobsRunner`, `DiscountTaskScheduler`).
493 - Updated action and registrar edges to resolve handlers/listeners via container.
494 - Removed legacy singleton-style accessors in core services and standardized on container-first resolution.
495 - add unInstall
496 - Added dashboard data retrieval in tickets
497 - Added `vendor_id` suffix to product `postmeta`
498 - Added selectable stock priority for variable products
499 - Added a Circuit Breaker mechanism
500
501
502
503 ### Added
504 - Container-backed settings access via `SettingsContainer`.
505
506 </details>
507
508 <details>
509
510 <summary>1.7.9 - 2026-02-25</summary>
511
512 ### Changed / Improved
513 - Added plugin version to all admin CSS/JS enqueue calls for proper cache busting
514
515 </details>
516
517
518 <details>
519
520 <summary>1.7.8 - 2026-02-21</summary>
521
522 ### Added
523 - retry system for jobs
524 - Added announcements section
525 - Added file upload capability in tickets
526 - Added discount reduction percentage setting
527 - Added ability to fetch and sync Basalam orders up to the last 30 days
528 - Added customer name prefix/suffix settings for Basalam orders
529 - Added onboarding section to Woosalam
530
531 ### Changed / Improved
532
533 - Remove Product Operation type
534 - change fetch unsync orders structure
535 - Switched product list fetching from paginate-based API to cursor-based API
536 - Skip webhook creation when the site domain is localhost
537 - Made Woosalam addonable/extensible
538 - Categorized plugin settings
539
540 ### Fix
541 - Fixed ticket links issues
542 - Fixed duplicated products issue
543 - Fixed null value being sent to Basalam on duplicated product disconnect/update flow
544
545 </details>
546
547 <details>
548
549 <summary>1.7.7 - 2026-02-07</summary>
550
551 ### Changed / Improved
552
553 - Enhanced Performance and Security in Ticket Logics
554 - Don't send null value in update product at basalam
555
556 </details>
557
558
559 <details>
560
561 <summary>1.7.6 - 2026-02-01</summary>
562
563 ### Fix
564
565 - Remove Unused Migration
566
567 </details>
568
569 <details>
570
571 <summary>1.7.5 - 2026-01-26</summary>
572
573 ### Added
574
575 - Added Ticketing feature
576
577 </details>
578
579 <details>
580
581 <summary>1.7.4 - 2026-01-6</summary>
582
583 ### Fixed
584
585 - Fix Bugs
586
587 </details>
588
589 <details>
590
591 <summary>1.7.3 - 2025-12-27</summary>
592
593 ### Fixed
594
595 - Fix Bugs
596
597 </details>
598
599 <details>
600
601 <summary>1.7.2 - 2025-12-24</summary>
602
603 ### Fixed
604
605 - Compatibity beetwin HPOS and Legay System
606 - Fix webhook handling and authorization in WebhookService
607
608 </details>
609
610 <details>
611
612 <summary>1.7.1 - 2025-12-23</summary>
613
614 ### Fixed
615
616 - Add Missed Files
617
618 </details>
619
620
621 <details>
622
623 <summary>1.7.0 - 2025-12-20</summary>
624
625 ### Added
626
627 - Added PSR-4 autoloading structure for better code organization
628
629 ### Changed / Improved
630
631 - Enhanced plugin code structure and performance optimizations
632 - Added detailed order information display on orders page
633 - Improved category ID retrieval with reverse order output
634
635 ### Fixed
636
637 - Fixed commission calculation issues
638 - Fixed order fetching problems
639 - Fixed Persian WooCommerce Shipping plugin compatibility issues
640
641 </details>
642
643 <details>
644 <summary>1.6.1 - 2025-12-6</summary>
645
646 ### Changed / Improved
647 - Handle cursor for get order lists
648
649 ### Fixed
650 - don't send request to core.basalam.com
651 - add reduce/increase stock action for woosalam order statuses
652
653 </details>
654
655 <details>
656 <summary>1.6.0 - 2025-12-1</summary>
657 ### Changed / Improved
658 - Added automatic shipping method detection and auto-saving of the shipping name and cost in WooCommerce orders
659
660 </details>
661
662 <details>
663 <summary>1.5.9 - 2025-11-27</summary>
664
665 ### Fixed
666
667 - Add missing default settings to database and return default for single missing setting
668 - Handle customer names without spaces
669 - Correct Persian WooCommerce path
670
671 ### Refactored
672
673 - Simplify check if Persian WooCommerce Shipping plugin is active
674
675 </details>
676
677 <details>
678 <summary>1.5.8 - 2025-11-18</summary>
679
680 ### Changed / Improved
681
682 - Improved batch product update functionality
683 - Enhanced complete product update process
684
685 </details>
686
687 <details>
688 <summary>1.5.7 - 2025-11-17</summary>
689
690 ### Added
691
692 - Added compatibility with Tappin
693 - Added support for currency units irht and irhr
694
695 ### Changed / Improved
696
697 - Implemented automatic price rounding for Basalam compatibility
698 - Changed product enqueue structure from offset-based to ID-based
699 - Made WooCommerce order creation process atomic
700
701 ### Fixed
702
703 - Fixed job manager functionality and proper task execution
704
705 </details>
706
707 <details>
708 <summary>1.5.5 - 2025-11-15</summary>
709
710 ### Changed / Improved
711
712 - Optimized fetch creatable products query using direct SQL for better performance
713 - Improved API service manager to properly decode JSON responses
714 - Enhanced update job detection logic to avoid false positive job status checks
715
716 ### Fixed
717
718 - Fixed API response handling by properly decoding JSON data
719 - Removed commented-out legacy code from plugin initialization
720 - Fixed quick update job status detection in admin dashboard
721 - Resolved duplicate job checking that was causing incorrect "in progress" states
722
723 </details>
724
725 <details>
726 <summary>1.5.4 - 2025-11-6</summary>
727
728 ### Added
729
730 - Migration system for version 1.5.4
731
732 ### Changed / Improved
733
734 - Enhanced onboarding styles and UI improvements
735 - Improved category fetching process with better error handling
736 - Enhanced file uploader service functionality
737 - Optimized product update process
738
739 ### Fixed
740
741 - Fixed error handling in product update service
742 - Removed deprecated photo ban status service
743 - Fixed category mapping page display and functionality
744 - Improved product meta box data handling
745 - Fixed issues in get product data service
746
747 </details>
748
749 <details>
750 <summary>1.5.3 - 2025-10-25</summary>
751
752 ### Fixed
753
754 - Fixed some bugs
755
756 </details>
757
758 <details>
759 <summary>1.5.0 - 2025-10-04</summary>
760
761 ### Added
762
763 - Key-value storage system for plugin settings
764 - Option to select sale price display style (strikethrough or sale price only)
765 - Automatic log file cleanup (weekly)
766 - Manual and automatic task execution rate control (tasks per minute)
767
768 ### Changed / Improved
769
770 - Removed WP Cron dependency for better performance
771 - Enhanced task scheduling system
772
773 ### Fixed
774
775 - Removed invalid variations from product data
776 - Fixed category attributes synchronization issue
777 - Fixed sale price validation before applying
778 - Resolved migration 1.4.0 issues
779
780 </details>
781
782 <details>
783 <summary>1.4.0 - 2025-09-12</summary>
784
785 ### Added
786
787 - Manual product category mapping
788 - Strikethrough pricing for products
789 - Add products from Digikala (Pro version)
790 - Create a free store (Pro version)
791
792 ### Changed / Improved
793
794 - Plugin structure optimization
795
796 ### Fixed
797
798 - Fixed reported issues
799
800 </details>
801
802 <details>
803 <summary>1.3.0 - 2025-07-23</summary>
804
805 ### Added
806
807 - Option to choose operation execution method (AJAX and Queue)
808 - Manual order fetching
809 - Cancel orders
810 - Fetch order changes from Basalam and apply them to WooCommerce orders
811
812 ### Fixed
813
814 - Fixed reported issues
815
816 </details>
817
818 <details>
819 <summary>1.2.0 - 2025-06-27</summary>
820
821 ### Added
822
823 - Bulk product addition
824 - Bulk product update
825 - Auto order confirmation
826
827 ### Fixed
828
829 - Fixed issues reported in previous version
830
831 </details>
832
833 <details>
834 <summary>1.1.0 - 2025-02-13</summary>
835
836 ### Added
837
838 - Automatic fetching and creation of Basalam orders in WooCommerce
839 - Manage orders from WooCommerce (confirm order, request delay, ship order)
840 - Advanced settings for easier use
841
842 ### Fixed
843
844 - Fixed some issues from previous versions
845
846 </details>
847
848 <details>
849 <summary>1.0.0 - 2024-12-31</summary>
850
851 ### Added
852
853 - Add and update products individually and in bulk
854 - Automatic product synchronization
855 - Settings and logs page
856
857 </details>
858