PluginProbe
ووسلام – همگام سازی ووکامرس و باسلام / 1.10.17
ووسلام – همگام سازی ووکامرس و باسلام v1.10.17
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 1.8.8 1.8.5 All 54 releases
sync-basalam / CHANGELOG.md

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

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