PluginProbe
ووسلام – همگام سازی ووکامرس و باسلام / 1.10.19
ووسلام – همگام سازی ووکامرس و باسلام v1.10.19
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 1.8.6 All 53 releases
sync-basalam / CHANGELOG.md

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

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